/* * $Id$ * * Copyright 1997, 1998 by Sun Microsystems, Inc., * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. * All rights reserved. * * This software is the confidential and proprietary information * of Sun Microsystems, Inc. ("Confidential Information"). You * shall not disclose such Confidential Information and shall use * it only in accordance with the terms of the license agreement * you entered into with Sun. * * The Swing Connection has given permission for the following code * to be freely used, modified and redistributed. However, since it * is example code, Sun does not support it and warns that it has not * been as rigorously tested as Sun's product code. * * For further details, see The Swing Connection's Copyright Notice and * Disclaimer at http://java.sun.com/products/jfc/tsc/page_2/page_2.html * * The articles upon which the TreeTable idea is based are located at * http://java.sun.com/products/jfc/tsc/tech_topics/tech_topics.html */ package arlut.csd.ganymede.client; import java.util.EventObject; import javax.swing.CellEditor; import javax.swing.event.CellEditorListener; import javax.swing.event.ChangeEvent; import javax.swing.event.EventListenerList; /** * @version $Id$ * * A base class for CellEditors, providing default implementations for all * methods in the CellEditor interface and support for managing a series * of listeners. * * @author Philip Milne */ public class AbstractCellEditor implements CellEditor { protected EventListenerList listenerList = new EventListenerList(); public Object getCellEditorValue() { return null; } public boolean isCellEditable(EventObject e) { return true; } public boolean shouldSelectCell(EventObject anEvent) { return false; } public boolean stopCellEditing() { return true; } public void cancelCellEditing() {} public void addCellEditorListener(CellEditorListener l) { listenerList.add(CellEditorListener.class, l); } public void removeCellEditorListener(CellEditorListener l) { listenerList.remove(CellEditorListener.class, l); } /** * Notify all listeners that have registered interest for * notification on this event type. * @see EventListenerList */ protected void fireEditingStopped() { // Guaranteed to return a non-null array Object[] listeners = listenerList.getListenerList(); // Process the listeners last to first, notifying // those that are interested in this event for (int i = listeners.length-2; i>=0; i-=2) { if (listeners[i]==CellEditorListener.class) { ((CellEditorListener)listeners[i+1]).editingStopped(new ChangeEvent(this)); } } } /** * Notify all listeners that have registered interest for * notification on this event type. * @see EventListenerList */ protected void fireEditingCanceled() { // Guaranteed to return a non-null array Object[] listeners = listenerList.getListenerList(); // Process the listeners last to first, notifying // those that are interested in this event for (int i = listeners.length-2; i>=0; i-=2) { if (listeners[i]==CellEditorListener.class) { ((CellEditorListener)listeners[i+1]).editingCanceled(new ChangeEvent(this)); } } } }