Class CellEditor

  • Direct Known Subclasses:
    CheckboxCellEditor, ComboBoxCellEditor, ComboBoxViewerCellEditor, DialogCellEditor, TextCellEditor

    public abstract class CellEditor
    extends java.lang.Object
    Abstract base class for cell editors. Implements property change listener handling, and SWT window management.

    Subclasses implement particular kinds of cell editors. This package contains various specialized cell editors:

    • TextCellEditor - for simple text strings
    • ColorCellEditor - for colors
    • ComboBoxCellEditor - value selected from drop-down combo box
    • CheckboxCellEditor - boolean valued checkbox
    • DialogCellEditor - value from arbitrary dialog
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  CellEditor.LayoutData
      Struct-like layout data for cell editors, with reasonable defaults for all fields.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String COPY
      Property name for the copy action
      static java.lang.String CUT
      Property name for the cut action
      static java.lang.String DELETE
      Property name for the delete action
      static java.lang.String FIND
      Property name for the find action
      static java.lang.String PASTE
      Property name for the paste action
      static java.lang.String REDO
      Property name for the redo action
      static java.lang.String SELECT_ALL
      Property name for the select all action
      static java.lang.String UNDO
      Property name for the undo action
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected CellEditor()
      Creates a new cell editor with no control The cell editor has no cell validator.
      protected CellEditor​(Composite parent)
      Creates a new cell editor under the given parent control.
      protected CellEditor​(Composite parent, int style)
      Creates a new cell editor under the given parent control.
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      void activate()
      Activates this cell editor.
      void activate​(ColumnViewerEditorActivationEvent activationEvent)
      Activate the editor but also inform the editor which event triggered its activation.
      void addListener​(ICellEditorListener listener)
      Adds a listener to this cell editor.
      void addPropertyChangeListener​(IPropertyChangeListener listener)
      Adds a property change listener to this cell editor.
      void create​(Composite parent)
      Creates the control for this cell editor under the given parent control.
      protected abstract Control createControl​(Composite parent)
      Creates the control for this cell editor under the given parent control.
      void deactivate()
      Hides this cell editor's control.
      protected void deactivate​(ColumnViewerEditorDeactivationEvent event)  
      protected boolean dependsOnExternalFocusListener()
      The default implementation of this method returns true.
      void dispose()
      Disposes of this cell editor and frees any associated SWT resources.
      protected abstract java.lang.Object doGetValue()
      Returns this cell editor's value.
      protected abstract void doSetFocus()
      Sets the focus to the cell editor's control.
      protected abstract void doSetValue​(java.lang.Object value)
      Sets this cell editor's value.
      protected void fireApplyEditorValue()
      Notifies all registered cell editor listeners of an apply event.
      protected void fireCancelEditor()
      Notifies all registered cell editor listeners that editing has been canceled.
      protected void fireEditorValueChanged​(boolean oldValidState, boolean newValidState)
      Notifies all registered cell editor listeners of a value change.
      protected void fireEnablementChanged​(java.lang.String actionId)
      Notifies all registered property listeners of an enablement change.
      protected void focusLost()
      Processes a focus lost event that occurred in this cell editor.
      Control getControl()
      Returns the control used to implement this cell editor.
      protected int getDoubleClickTimeout()
      Returns the duration, in milliseconds, between the mouse button click that activates the cell editor and a subsequent mouse button click that will be considered a double click on the underlying control.
      java.lang.String getErrorMessage()
      Returns the current error message for this cell editor.
      CellEditor.LayoutData getLayoutData()
      Returns a layout data object for this cell editor.
      int getStyle()
      Returns the style bits for this cell editor.
      ICellEditorValidator getValidator()
      Returns the input validator for this cell editor.
      java.lang.Object getValue()
      Returns this cell editor's value provided that it has a valid one.
      boolean isActivated()
      Returns whether this cell editor is activated.
      boolean isCopyEnabled()
      Returns true if this cell editor is able to perform the copy action.
      protected boolean isCorrect​(java.lang.Object value)
      Returns whether the given value is valid for this cell editor.
      boolean isCutEnabled()
      Returns true if this cell editor is able to perform the cut action.
      boolean isDeleteEnabled()
      Returns true if this cell editor is able to perform the delete action.
      boolean isDirty()
      Returns whether the value of this cell editor has changed since the last call to setValue.
      boolean isFindEnabled()
      Returns true if this cell editor is able to perform the find action.
      boolean isPasteEnabled()
      Returns true if this cell editor is able to perform the paste action.
      boolean isRedoEnabled()
      Returns true if this cell editor is able to perform the redo action.
      boolean isSelectAllEnabled()
      Returns true if this cell editor is able to perform the select all action.
      boolean isUndoEnabled()
      Returns true if this cell editor is able to perform the undo action.
      boolean isValueValid()
      Returns whether this cell editor has a valid value.
      protected void keyReleaseOccured​(KeyEvent keyEvent)
      Processes a key release event that occurred in this cell editor.
      protected void markDirty()
      Marks this cell editor as dirty.
      void performCopy()
      Performs the copy action.
      void performCut()
      Performs the cut action.
      void performDelete()
      Performs the delete action.
      void performFind()
      Performs the find action.
      void performPaste()
      Performs the paste action.
      void performRedo()
      Performs the redo action.
      void performSelectAll()
      Performs the select all action.
      void performUndo()
      Performs the undo action.
      void removeListener​(ICellEditorListener listener)
      Removes the given listener from this cell editor.
      void removePropertyChangeListener​(IPropertyChangeListener listener)
      Removes the given property change listener from this cell editor.
      protected void setErrorMessage​(java.lang.String message)
      Sets or clears the current error message for this cell editor.
      void setFocus()
      Sets the focus to the cell editor's control.
      void setStyle​(int style)
      Sets the style bits for this cell editor.
      void setValidator​(ICellEditorValidator validator)
      Sets the input validator for this cell editor.
      void setValue​(java.lang.Object value)
      Sets this cell editor's value.
      protected void setValueValid​(boolean valid)
      Sets the valid state of this cell editor.
      protected void valueChanged​(boolean oldValidState, boolean newValidState)
      The value has changed.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • COPY

        public static final java.lang.String COPY
        Property name for the copy action
        See Also:
        Constant Field Values
      • CUT

        public static final java.lang.String CUT
        Property name for the cut action
        See Also:
        Constant Field Values
      • DELETE

        public static final java.lang.String DELETE
        Property name for the delete action
        See Also:
        Constant Field Values
      • FIND

        public static final java.lang.String FIND
        Property name for the find action
        See Also:
        Constant Field Values
      • PASTE

        public static final java.lang.String PASTE
        Property name for the paste action
        See Also:
        Constant Field Values
      • REDO

        public static final java.lang.String REDO
        Property name for the redo action
        See Also:
        Constant Field Values
      • SELECT_ALL

        public static final java.lang.String SELECT_ALL
        Property name for the select all action
        See Also:
        Constant Field Values
      • UNDO

        public static final java.lang.String UNDO
        Property name for the undo action
        See Also:
        Constant Field Values
    • Constructor Detail

      • CellEditor

        protected CellEditor()
        Creates a new cell editor with no control The cell editor has no cell validator.
        Since:
        2.1
      • CellEditor

        protected CellEditor​(Composite parent)
        Creates a new cell editor under the given parent control. The cell editor has no cell validator.
        Parameters:
        parent - the parent control
      • CellEditor

        protected CellEditor​(Composite parent,
                             int style)
        Creates a new cell editor under the given parent control. The cell editor has no cell validator.
        Parameters:
        parent - the parent control
        style - the style bits
        Since:
        2.1
    • Method Detail

      • activate

        public void activate()
        Activates this cell editor.

        The default implementation of this framework method does nothing. Subclasses may reimplement.

      • addListener

        public void addListener​(ICellEditorListener listener)
        Adds a listener to this cell editor. Has no effect if an identical listener is already registered.
        Parameters:
        listener - a cell editor listener
      • addPropertyChangeListener

        public void addPropertyChangeListener​(IPropertyChangeListener listener)
        Adds a property change listener to this cell editor. Has no effect if an identical property change listener is already registered.
        Parameters:
        listener - a property change listener
      • createControl

        protected abstract Control createControl​(Composite parent)
        Creates the control for this cell editor under the given parent control.

        This framework method must be implemented by concrete subclasses.

        Parameters:
        parent - the parent control
        Returns:
        the new control, or null if this cell editor has no control
      • create

        public void create​(Composite parent)
        Creates the control for this cell editor under the given parent control.
        Parameters:
        parent - the parent control
        Since:
        2.1
      • deactivate

        public void deactivate()
        Hides this cell editor's control. Does nothing if this cell editor is not visible.
      • dispose

        public void dispose()
        Disposes of this cell editor and frees any associated SWT resources.
      • doGetValue

        protected abstract java.lang.Object doGetValue()
        Returns this cell editor's value.

        This framework method must be implemented by concrete subclasses.

        Returns:
        the value of this cell editor
        See Also:
        getValue()
      • doSetFocus

        protected abstract void doSetFocus()
        Sets the focus to the cell editor's control.

        This framework method must be implemented by concrete subclasses.

        See Also:
        setFocus()
      • doSetValue

        protected abstract void doSetValue​(java.lang.Object value)
        Sets this cell editor's value.

        This framework method must be implemented by concrete subclasses.

        Parameters:
        value - the value of this cell editor
        See Also:
        setValue(java.lang.Object)
      • fireApplyEditorValue

        protected void fireApplyEditorValue()
        Notifies all registered cell editor listeners of an apply event. Only listeners registered at the time this method is called are notified.
        See Also:
        ICellEditorListener.applyEditorValue()
      • fireCancelEditor

        protected void fireCancelEditor()
        Notifies all registered cell editor listeners that editing has been canceled.
        See Also:
        ICellEditorListener.cancelEditor()
      • fireEditorValueChanged

        protected void fireEditorValueChanged​(boolean oldValidState,
                                              boolean newValidState)
        Notifies all registered cell editor listeners of a value change.
        Parameters:
        oldValidState - the valid state before the end user changed the value
        newValidState - the current valid state
        See Also:
        ICellEditorListener.editorValueChanged(boolean, boolean)
      • fireEnablementChanged

        protected void fireEnablementChanged​(java.lang.String actionId)
        Notifies all registered property listeners of an enablement change.
        Parameters:
        actionId - the id indicating what action's enablement has changed.
      • setStyle

        public void setStyle​(int style)
        Sets the style bits for this cell editor.
        Parameters:
        style - the SWT style bits for this cell editor
        Since:
        2.1
      • getStyle

        public int getStyle()
        Returns the style bits for this cell editor.
        Returns:
        the style for this cell editor
        Since:
        2.1
      • getControl

        public Control getControl()
        Returns the control used to implement this cell editor.
        Returns:
        the control, or null if this cell editor has no control
      • getErrorMessage

        public java.lang.String getErrorMessage()
        Returns the current error message for this cell editor.
        Returns:
        the error message if the cell editor is in an invalid state, and null if the cell editor is valid
      • getLayoutData

        public CellEditor.LayoutData getLayoutData()
        Returns a layout data object for this cell editor. This is called each time the cell editor is activated and controls the layout of the SWT table editor.

        The default implementation of this method sets the minimum width to the control's preferred width. Subclasses may extend or reimplement.

        Returns:
        the layout data object
      • getValidator

        public ICellEditorValidator getValidator()
        Returns the input validator for this cell editor.
        Returns:
        the input validator, or null if none
      • getValue

        public final java.lang.Object getValue()
        Returns this cell editor's value provided that it has a valid one.
        Returns:
        the value of this cell editor, or null if the cell editor does not contain a valid value
      • isActivated

        public boolean isActivated()
        Returns whether this cell editor is activated.
        Returns:
        true if this cell editor's control is currently activated, and false if not activated
      • isCopyEnabled

        public boolean isCopyEnabled()
        Returns true if this cell editor is able to perform the copy action.

        This default implementation always returns false.

        Subclasses may override

        Returns:
        true if copy is possible, false otherwise
      • isCorrect

        protected boolean isCorrect​(java.lang.Object value)
        Returns whether the given value is valid for this cell editor. This cell editor's validator (if any) makes the actual determination.
        Parameters:
        value - the value to check for
        Returns:
        true if the value is valid, and false if invalid
      • isCutEnabled

        public boolean isCutEnabled()
        Returns true if this cell editor is able to perform the cut action.

        This default implementation always returns false.

        Subclasses may override

        Returns:
        true if cut is possible, false otherwise
      • isDeleteEnabled

        public boolean isDeleteEnabled()
        Returns true if this cell editor is able to perform the delete action.

        This default implementation always returns false.

        Subclasses may override

        Returns:
        true if delete is possible, false otherwise
      • isDirty

        public boolean isDirty()
        Returns whether the value of this cell editor has changed since the last call to setValue.
        Returns:
        true if the value has changed, and false if unchanged
      • markDirty

        protected void markDirty()
        Marks this cell editor as dirty.
        Since:
        2.1
      • isFindEnabled

        public boolean isFindEnabled()
        Returns true if this cell editor is able to perform the find action.

        This default implementation always returns false.

        Subclasses may override

        Returns:
        true if find is possible, false otherwise
      • isPasteEnabled

        public boolean isPasteEnabled()
        Returns true if this cell editor is able to perform the paste action.

        This default implementation always returns false.

        Subclasses may override

        Returns:
        true if paste is possible, false otherwise
      • isRedoEnabled

        public boolean isRedoEnabled()
        Returns true if this cell editor is able to perform the redo action.

        This default implementation always returns false.

        Subclasses may override

        Returns:
        true if redo is possible, false otherwise
      • isSelectAllEnabled

        public boolean isSelectAllEnabled()
        Returns true if this cell editor is able to perform the select all action.

        This default implementation always returns false.

        Subclasses may override

        Returns:
        true if select all is possible, false otherwise
      • isUndoEnabled

        public boolean isUndoEnabled()
        Returns true if this cell editor is able to perform the undo action.

        This default implementation always returns false.

        Subclasses may override

        Returns:
        true if undo is possible, false otherwise
      • isValueValid

        public boolean isValueValid()
        Returns whether this cell editor has a valid value. The default value is false.
        Returns:
        true if the value is valid, and false if invalid
        See Also:
        setValueValid(boolean)
      • keyReleaseOccured

        protected void keyReleaseOccured​(KeyEvent keyEvent)
        Processes a key release event that occurred in this cell editor.

        The default implementation of this framework method cancels editing when the ESC key is pressed. When the RETURN key is pressed the current value is applied and the cell editor deactivates. Subclasses should call this method at appropriate times. Subclasses may also extend or reimplement.

        Parameters:
        keyEvent - the key event
      • focusLost

        protected void focusLost()
        Processes a focus lost event that occurred in this cell editor.

        The default implementation of this framework method applies the current value and deactivates the cell editor. Subclasses should call this method at appropriate times. Subclasses may also extend or reimplement.

      • performCopy

        public void performCopy()
        Performs the copy action. This default implementation does nothing.

        Subclasses may override

      • performCut

        public void performCut()
        Performs the cut action. This default implementation does nothing.

        Subclasses may override

      • performDelete

        public void performDelete()
        Performs the delete action. This default implementation does nothing.

        Subclasses may override

      • performFind

        public void performFind()
        Performs the find action. This default implementation does nothing.

        Subclasses may override

      • performPaste

        public void performPaste()
        Performs the paste action. This default implementation does nothing.

        Subclasses may override

      • performRedo

        public void performRedo()
        Performs the redo action. This default implementation does nothing.

        Subclasses may override

      • performSelectAll

        public void performSelectAll()
        Performs the select all action. This default implementation does nothing.

        Subclasses may override

      • performUndo

        public void performUndo()
        Performs the undo action. This default implementation does nothing.

        Subclasses may override

      • removeListener

        public void removeListener​(ICellEditorListener listener)
        Removes the given listener from this cell editor. Has no effect if an identical listener is not registered.
        Parameters:
        listener - a cell editor listener
      • removePropertyChangeListener

        public void removePropertyChangeListener​(IPropertyChangeListener listener)
        Removes the given property change listener from this cell editor. Has no effect if an identical property change listener is not registered.
        Parameters:
        listener - a property change listener
      • setErrorMessage

        protected void setErrorMessage​(java.lang.String message)
        Sets or clears the current error message for this cell editor.

        No formatting is done here, the message to be set is expected to be fully formatted before being passed in.

        Parameters:
        message - the error message, or null to clear
      • setFocus

        public void setFocus()
        Sets the focus to the cell editor's control.
      • setValidator

        public void setValidator​(ICellEditorValidator validator)
        Sets the input validator for this cell editor.
        Parameters:
        validator - the input validator, or null if none
      • setValue

        public final void setValue​(java.lang.Object value)
        Sets this cell editor's value.
        Parameters:
        value - the value of this cell editor
      • setValueValid

        protected void setValueValid​(boolean valid)
        Sets the valid state of this cell editor. The default value is false. Subclasses should call this method on construction.
        Parameters:
        valid - true if the current value is valid, and false if invalid
        See Also:
        isValueValid()
      • valueChanged

        protected void valueChanged​(boolean oldValidState,
                                    boolean newValidState)
        The value has changed. Updates the valid state flag, marks this cell editor as dirty, and notifies all registered cell editor listeners of a value change.
        Parameters:
        oldValidState - the valid state before the end user changed the value
        newValidState - the current valid state
        See Also:
        ICellEditorListener.editorValueChanged(boolean, boolean)
      • activate

        public void activate​(ColumnViewerEditorActivationEvent activationEvent)
        Activate the editor but also inform the editor which event triggered its activation. The default implementation simply calls activate()
        Parameters:
        activationEvent - the editor activation event
        Since:
        3.3
      • dependsOnExternalFocusListener

        protected boolean dependsOnExternalFocusListener()
        The default implementation of this method returns true. Subclasses that hook their own focus listener should override this method and return false. See also bug 58777.
        Returns:
        true to indicate that a focus listener has to be attached
        Since:
        3.4
      • getDoubleClickTimeout

        protected int getDoubleClickTimeout()
        Returns the duration, in milliseconds, between the mouse button click that activates the cell editor and a subsequent mouse button click that will be considered a double click on the underlying control. Clients may override, in particular, clients can return 0 to denote that two subsequent mouse clicks in a cell should not be interpreted as a double click.
        Returns:
        the timeout or 0
        Since:
        3.4