Home » openjdk-7 » javax » swing » [javadoc | source]

    1   /*
    2    * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
    3    * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    4    *
    5    * This code is free software; you can redistribute it and/or modify it
    6    * under the terms of the GNU General Public License version 2 only, as
    7    * published by the Free Software Foundation.  Oracle designates this
    8    * particular file as subject to the "Classpath" exception as provided
    9    * by Oracle in the LICENSE file that accompanied this code.
   10    *
   11    * This code is distributed in the hope that it will be useful, but WITHOUT
   12    * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
   13    * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
   14    * version 2 for more details (a copy is included in the LICENSE file that
   15    * accompanied this code).
   16    *
   17    * You should have received a copy of the GNU General Public License version
   18    * 2 along with this work; if not, write to the Free Software Foundation,
   19    * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
   20    *
   21    * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
   22    * or visit www.oracle.com if you need additional information or have any
   23    * questions.
   24    */
   25   
   26   package javax.swing;
   27   
   28   import javax.swing.event;
   29   import java.util.EventObject;
   30   import java.io.Serializable;
   31   
   32   /**
   33    *
   34    * A base class for <code>CellEditors</code>, providing default
   35    * implementations for the methods in the <code>CellEditor</code>
   36    * interface except <code>getCellEditorValue()</code>.
   37    * Like the other abstract implementations in Swing, also manages a list
   38    * of listeners.
   39    *
   40    * <p>
   41    * <strong>Warning:</strong>
   42    * Serialized objects of this class will not be compatible with
   43    * future Swing releases. The current serialization support is
   44    * appropriate for short term storage or RMI between applications running
   45    * the same version of Swing.  As of 1.4, support for long term storage
   46    * of all JavaBeans<sup><font size="-2">TM</font></sup>
   47    * has been added to the <code>java.beans</code> package.
   48    * Please see {@link java.beans.XMLEncoder}.
   49    *
   50    * @author Philip Milne
   51    * @since 1.3
   52    */
   53   
   54   public abstract class AbstractCellEditor implements CellEditor, Serializable {
   55   
   56       protected EventListenerList listenerList = new EventListenerList();
   57       transient protected ChangeEvent changeEvent = null;
   58   
   59       // Force this to be implemented.
   60       // public Object  getCellEditorValue()
   61   
   62       /**
   63        * Returns true.
   64        * @param e  an event object
   65        * @return true
   66        */
   67       public boolean isCellEditable(EventObject e) {
   68           return true;
   69       }
   70   
   71       /**
   72        * Returns true.
   73        * @param anEvent  an event object
   74        * @return true
   75        */
   76       public boolean shouldSelectCell(EventObject anEvent) {
   77           return true;
   78       }
   79   
   80       /**
   81        * Calls <code>fireEditingStopped</code> and returns true.
   82        * @return true
   83        */
   84       public boolean stopCellEditing() {
   85           fireEditingStopped();
   86           return true;
   87       }
   88   
   89       /**
   90        * Calls <code>fireEditingCanceled</code>.
   91        */
   92       public void  cancelCellEditing() {
   93           fireEditingCanceled();
   94       }
   95   
   96       /**
   97        * Adds a <code>CellEditorListener</code> to the listener list.
   98        * @param l  the new listener to be added
   99        */
  100       public void addCellEditorListener(CellEditorListener l) {
  101           listenerList.add(CellEditorListener.class, l);
  102       }
  103   
  104       /**
  105        * Removes a <code>CellEditorListener</code> from the listener list.
  106        * @param l  the listener to be removed
  107        */
  108       public void removeCellEditorListener(CellEditorListener l) {
  109           listenerList.remove(CellEditorListener.class, l);
  110       }
  111   
  112       /**
  113        * Returns an array of all the <code>CellEditorListener</code>s added
  114        * to this AbstractCellEditor with addCellEditorListener().
  115        *
  116        * @return all of the <code>CellEditorListener</code>s added or an empty
  117        *         array if no listeners have been added
  118        * @since 1.4
  119        */
  120       public CellEditorListener[] getCellEditorListeners() {
  121           return listenerList.getListeners(CellEditorListener.class);
  122       }
  123   
  124       /**
  125        * Notifies all listeners that have registered interest for
  126        * notification on this event type.  The event instance
  127        * is created lazily.
  128        *
  129        * @see EventListenerList
  130        */
  131       protected void fireEditingStopped() {
  132           // Guaranteed to return a non-null array
  133           Object[] listeners = listenerList.getListenerList();
  134           // Process the listeners last to first, notifying
  135           // those that are interested in this event
  136           for (int i = listeners.length-2; i>=0; i-=2) {
  137               if (listeners[i]==CellEditorListener.class) {
  138                   // Lazily create the event:
  139                   if (changeEvent == null)
  140                       changeEvent = new ChangeEvent(this);
  141                   ((CellEditorListener)listeners[i+1]).editingStopped(changeEvent);
  142               }
  143           }
  144       }
  145   
  146       /**
  147        * Notifies all listeners that have registered interest for
  148        * notification on this event type.  The event instance
  149        * is created lazily.
  150        *
  151        * @see EventListenerList
  152        */
  153       protected void fireEditingCanceled() {
  154           // Guaranteed to return a non-null array
  155           Object[] listeners = listenerList.getListenerList();
  156           // Process the listeners last to first, notifying
  157           // those that are interested in this event
  158           for (int i = listeners.length-2; i>=0; i-=2) {
  159               if (listeners[i]==CellEditorListener.class) {
  160                   // Lazily create the event:
  161                   if (changeEvent == null)
  162                       changeEvent = new ChangeEvent(this);
  163                   ((CellEditorListener)listeners[i+1]).editingCanceled(changeEvent);
  164               }
  165           }
  166       }
  167   }

Home » openjdk-7 » javax » swing » [javadoc | source]