- /*
- * @(#)CellEditor.java 1.19 00/02/02
- *
- * Copyright 1997-2000 Sun Microsystems, Inc. All Rights Reserved.
- *
- * This software is the proprietary information of Sun Microsystems, Inc.
- * Use is subject to license terms.
- *
- */
-
- package javax.swing;
-
- import java.util.EventObject;
- import javax.swing.event.*;
-
- /**
- * This interface defines the methods any general editor should be able
- * to implement. <p>
- *
- * Having this interface enables complex components (the client of the
- * editor) such as JList, JTree, and JTable to allow any generic editor to
- * edit values in a table cell, or tree cell, etc. Without this generic
- * editor interface, JTable would have to know about specific editors,
- * such as JTextField, JCheckBox, JComboBox, etc. In addition, without
- * this interface, clients of editors such as JTable would not be able
- * to work with any editors developed in the future by the user
- * or a 3rd party ISV. <p>
- *
- * To use this interface, a developer creating a new editor can have the
- * new component implement the interface. Or the developer can
- * choose a wrapper based approch and provide a companion object which
- * implements the CellEditor interface (See JCellEditor for example). The
- * wrapper approch is particularly useful if the user want to use a
- * 3rd party ISV editor with JTable, but the ISV didn't implement the
- * CellEditor interface. The user can simply create an object that
- * contains an instance of the 3rd party editor object and "translate"
- * the CellEditor API into the 3rd party editor's API.
- *
- * @see javax.swing.event.CellEditorListener
- *
- * @version 1.19 02/02/00
- * @author Alan Chung
- */
- public interface CellEditor {
-
- /** Returns the value contained in the editor**/
- public Object getCellEditorValue();
-
- /**
- * Ask the editor if it can start editing using <I>anEvent</I>.
- * <I>anEvent</I> is in the invoking component coordinate system.
- * The editor can not assume the Component returned by
- * getCellEditorComponent() is installed. This method is intended
- * for the use of client to avoid the cost of setting up and installing
- * the editor component if editing is not possible.
- * If editing can be started this method returns true.
- *
- * @param anEvent the event the editor should use to consider
- * whether to begin editing or not.
- * @return true if editing can be started.
- * @see #shouldSelectCell
- */
- public boolean isCellEditable(EventObject anEvent);
-
- /**
- * The return value of shouldSelectCell() is a boolean indicating whether
- * the editing cell should be selected or not. Typically, the return
- * value is true, because is most cases the editing cell should be
- * selected. However, it is useful to return false to keep the selection
- * from changing for some types of edits. eg. A table that contains
- * a column of check boxes, the user might want to be able to change
- * those checkboxes without altering the selection. (See Netscape
- * Communicator for just such an example) Of course, it is up to
- * the client of the editor to use the return value, but it doesn't
- * need to if it doesn't want to.
- *
- * @param anEvent the event the editor should use to start
- * editing.
- * @return true if the editor would like the editing cell to be selected
- * @see #isCellEditable
- */
- public boolean shouldSelectCell(EventObject anEvent);
-
- /**
- * Tell the editor to stop editing and accept any partially edited
- * value as the value of the editor. The editor returns false if
- * editing was not stopped, useful for editors which validates and
- * can not accept invalid entries.
- *
- * @return true if editing was stopped
- */
- public boolean stopCellEditing();
-
- /**
- * Tell the editor to cancel editing and not accept any partially
- * edited value.
- */
- public void cancelCellEditing();
-
- /**
- * Add a listener to the list that's notified when the editor starts,
- * stops, or cancels editing.
- *
- * @param l the CellEditorListener
- */
- public void addCellEditorListener(CellEditorListener l);
-
- /**
- * Remove a listener from the list that's notified
- *
- * @param l the CellEditorListener
- */
- public void removeCellEditorListener(CellEditorListener l);
- }