View Javadoc
1   ////////////////////////////////////////////////////////////////////////////////
2   // checkstyle: Checks Java source code for adherence to a set of rules.
3   // Copyright (C) 2001-2002  Oliver Burn
4   //
5   // This library is free software; you can redistribute it and/or
6   // modify it under the terms of the GNU Lesser General Public
7   // License as published by the Free Software Foundation; either
8   // version 2.1 of the License, or (at your option) any later version.
9   //
10  // This library is distributed in the hope that it will be useful,
11  // but WITHOUT ANY WARRANTY; without even the implied warranty of
12  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  // Lesser General Public License for more details.
14  //
15  // You should have received a copy of the GNU Lesser General Public
16  // License along with this library; if not, write to the Free Software
17  // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18  ////////////////////////////////////////////////////////////////////////////////
19  
20  /*
21   * %W% %E%
22   *
23   * Copyright 1997, 1998 Sun Microsystems, Inc. All Rights Reserved.
24   * 
25   * Redistribution and use in source and binary forms, with or
26   * without modification, are permitted provided that the following
27   * conditions are met:
28   * 
29   * - Redistributions of source code must retain the above copyright
30   *   notice, this list of conditions and the following disclaimer. 
31   *   
32   * - Redistribution in binary form must reproduce the above
33   *   copyright notice, this list of conditions and the following
34   *   disclaimer in the documentation and/or other materials
35   *   provided with the distribution. 
36   *   
37   * Neither the name of Sun Microsystems, Inc. or the names of
38   * contributors may be used to endorse or promote products derived
39   * from this software without specific prior written permission.  
40   * 
41   * This software is provided "AS IS," without a warranty of any
42   * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
43   * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
44   * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
45   * EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY
46   * DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT OF OR
47   * RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE OR
48   * ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE 
49   * FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT,   
50   * SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER  
51   * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF 
52   * THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS 
53   * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
54   * 
55   * You acknowledge that this software is not designed, licensed or
56   * intended for use in the design, construction, operation or
57   * maintenance of any nuclear facility.
58   */
59  
60  
61  package com.puppycrawl.tools.checkstyle.gui;
62  
63  import java.util.EventObject;
64  import javax.swing.CellEditor;
65  import javax.swing.event.CellEditorListener;
66  import javax.swing.event.ChangeEvent;
67  import javax.swing.event.EventListenerList;
68  
69  /** 
70   * A base class for CellEditors, providing default implementations for all 
71   * methods in the CellEditor interface and support for managing a series 
72   * of listeners.
73   *
74   * <a href="http://java.sun.com/products/jfc/tsc/articles/treetable1/index.html">Original&nbsp;Source&nbsp;Location</a>
75   * 
76   * @author Philip Milne
77   */
78  public class AbstractCellEditor implements CellEditor
79  {
80      private final EventListenerList listenerList = new EventListenerList();
81  
82      /** @see CellEditor */
83      @Override
84      public Object getCellEditorValue()
85      {
86          return null;
87      }
88  
89      /** @see CellEditor */
90      @Override
91      public boolean isCellEditable(EventObject e)
92      {
93          return true;
94      }
95  
96      /** @see CellEditor */
97      @Override
98      public boolean shouldSelectCell(EventObject anEvent)
99      {
100         return false;
101     }
102 
103     /** @see CellEditor */
104     @Override
105     public boolean stopCellEditing()
106     {
107         return true;
108     }
109 
110     /** @see CellEditor */
111     @Override
112     public void cancelCellEditing()
113     {
114     }
115 
116     /** @see CellEditor */
117     @Override
118     public void addCellEditorListener(CellEditorListener l)
119     {
120         listenerList.add(CellEditorListener.class, l);
121     }
122 
123     /** @see CellEditor */
124     @Override
125     public void removeCellEditorListener(CellEditorListener l)
126     {
127         listenerList.remove(CellEditorListener.class, l);
128     }
129 
130     /*
131      * Notify all listeners that have registered interest for
132      * notification on this event type.
133      * @see EventListenerList
134      */
135     protected void fireEditingStopped()
136     {
137         // Guaranteed to return a non-null array
138         final Object[] listeners = listenerList.getListenerList();
139         // Process the listeners last to first, notifying
140         // those that are interested in this event
141         for (int i = listeners.length - 2; i >= 0; i -= 2) {
142             if (listeners[i] == CellEditorListener.class) {
143                 ((CellEditorListener) listeners[i + 1]).editingStopped(new ChangeEvent(this));
144             }
145         }
146     }
147 
148     /*
149      * Notify all listeners that have registered interest for
150      * notification on this event type.
151      * @see EventListenerList
152      */
153     protected void fireEditingCanceled()
154     {
155         // Guaranteed to return a non-null array
156         final Object[] listeners = listenerList.getListenerList();
157         // Process the listeners last to first, notifying
158         // those that are interested in this event
159         for (int i = listeners.length - 2; i >= 0; i -= 2) {
160             if (listeners[i] == CellEditorListener.class) {
161                 ((CellEditorListener) listeners[i + 1]).editingCanceled(new ChangeEvent(this));
162             }
163         }
164     }
165 }