org.jgraph.graph
Class DefaultGraphCellEditor

java.lang.Object
  extended by org.jgraph.graph.DefaultGraphCellEditor
All Implemented Interfaces:
ActionListener, Serializable, EventListener, CellEditor, GraphSelectionListener, GraphCellEditor

public class DefaultGraphCellEditor
extends Object
implements ActionListener, GraphCellEditor, GraphSelectionListener, Serializable

A GraphCellEditor. You need to supply an instance of DefaultGraphCellRenderer so that the icons can be obtained. You can optionaly supply a TreeCellEditor that will be layed out according to the icon in the DefaultTreeCellRenderer. If you do not supply a TreeCellEditor, a TextField will be used. Editing is started when the number of clicks specified in graph.getEditClickCount() is reached.

Version:
1.0 1/1/02
Author:
Scott Violet
See Also:
JTree, Serialized Form

Nested Class Summary
 class DefaultGraphCellEditor.DefaultTextField
          TextField used when no editor is supplied.
 class DefaultGraphCellEditor.EditorContainer
          Container responsible for placing the editingComponent.
 
Field Summary
protected  Color borderSelectionColor
          True if the border selection color should be drawn.
protected  boolean canEdit
          Should isCellEditable return true? This is set in configure...
protected  Component editingComponent
          Component used in editing, obtained from the editingContainer.
protected  Container editingContainer
          Editing container, will contain the editorComponent.
protected  Icon editingIcon
          Icon to use when editing.
protected  Font font
          Font to paint with, null indicates font of renderer is to be used.
protected  JGraph graph
          JTree instance listening too.
protected  Object lastCell
          last path that was selected.
protected  int offsetX
          Used in editing.
protected  int offsetY
           
protected  GraphCellEditor realEditor
          Editor handling the editing.
 
Constructor Summary
DefaultGraphCellEditor()
          BOGUS CUT AND PASTE COMMENT
DefaultGraphCellEditor(GraphCellEditor editor)
          Constructs a DefaultTreeCellEditor object for a JTree using the specified renderer and the specified editor.
 
Method Summary
 void actionPerformed(ActionEvent e)
          Messaged when the timer fires, this will start the editing session.
 void addCellEditorListener(CellEditorListener l)
          Adds the CellEditorListener.
 void cancelCellEditing()
          Messages cancelCellEditing to the realEditor and removes it from this instance.
protected  boolean canEditImmediately(EventObject event)
          Returns true if event is null, or it is a MouseEvent with a click count > 2 and inHitRegion returns true.
protected  Container createContainer()
          Creates the container to manage placement of editingComponent.
protected  GraphCellEditor createGraphCellEditor()
          This is invoked if a TreeCellEditor is not supplied in the constructor.
protected  void determineOffset(JGraph graph, Object value, boolean isSelected)
           
 Color getBorderSelectionColor()
          Returns the color the border is drawn.
 Object getCellEditorValue()
          Returns the value currently being edited.
 Font getFont()
          Gets the font used for editing.
 Component getGraphCellEditorComponent(JGraph graph, Object cell, boolean isSelected)
          Configures the editor.
protected  boolean inHitRegion(int x, int y)
          Should return true if the passed in location is a valid mouse location to start editing from.
 boolean isCellEditable(EventObject event)
          If the realEditor returns true to this message, prepareForEditing is messaged and true is returned.
protected  void prepareForEditing()
          Invoked just before editing is to start.
 void removeCellEditorListener(CellEditorListener l)
          Removes the previously added CellEditorListener l.
 void setBorderSelectionColor(Color newColor)
          Sets the color to use for the border.
 void setFont(Font font)
          Sets the font to edit with.
protected  void setGraph(JGraph newGraph)
          Sets the tree currently editing for.
 boolean shouldSelectCell(EventObject event)
          Messages the realEditor for the return value.
protected  boolean shouldStartEditingTimer(EventObject event)
          Returns true if event is a MouseEvent and the click count is 1.
 boolean stopCellEditing()
          If the realEditor will allow editing to stop, the realEditor is removed and true is returned, otherwise false is returned.
 void valueChanged(GraphSelectionEvent e)
          Resets lastPath.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

realEditor

protected GraphCellEditor realEditor
Editor handling the editing.


editingContainer

protected Container editingContainer
Editing container, will contain the editorComponent.


editingComponent

protected transient Component editingComponent
Component used in editing, obtained from the editingContainer.


canEdit

protected boolean canEdit
Should isCellEditable return true? This is set in configure... based on the path being edited and the selected selected path.


offsetX

protected transient int offsetX
Used in editing. Indicates position to place editingComponent.


offsetY

protected transient int offsetY

graph

protected transient JGraph graph
JTree instance listening too.


lastCell

protected transient Object lastCell
last path that was selected.


borderSelectionColor

protected Color borderSelectionColor
True if the border selection color should be drawn.


editingIcon

protected transient Icon editingIcon
Icon to use when editing.


font

protected Font font
Font to paint with, null indicates font of renderer is to be used.

Constructor Detail

DefaultGraphCellEditor

public DefaultGraphCellEditor()
BOGUS CUT AND PASTE COMMENT


DefaultGraphCellEditor

public DefaultGraphCellEditor(GraphCellEditor editor)
Constructs a DefaultTreeCellEditor object for a JTree using the specified renderer and the specified editor. (Use this constructor for specialized editing.) NOparam tree a JTree object NOparam renderer a DefaultTreeCellRenderer object

Parameters:
editor - a TreeCellEditor object
Method Detail

setBorderSelectionColor

public void setBorderSelectionColor(Color newColor)
Sets the color to use for the border.


getBorderSelectionColor

public Color getBorderSelectionColor()
Returns the color the border is drawn.


setFont

public void setFont(Font font)
Sets the font to edit with. null indicates the renderers font should be used. This will NOT override any font you have set in the editor the receiver was instantied with. If null for an editor was passed in a default editor will be created that will pick up this font.

Parameters:
font - the editing Font
See Also:
getFont()

getFont

public Font getFont()
Gets the font used for editing.

Returns:
the editing Font
See Also:
setFont(java.awt.Font)

getGraphCellEditorComponent

public Component getGraphCellEditorComponent(JGraph graph,
                                             Object cell,
                                             boolean isSelected)
Configures the editor. Passed onto the realEditor.

Specified by:
getGraphCellEditorComponent in interface GraphCellEditor
Parameters:
graph - the JGraph that is asking the editor to edit This parameter can be null.
cell - the value of the cell to be edited.
isSelected - true if the cell is to be rendered with selection highlighting
Returns:
the component for editing

getCellEditorValue

public Object getCellEditorValue()
Returns the value currently being edited.

Specified by:
getCellEditorValue in interface CellEditor

isCellEditable

public boolean isCellEditable(EventObject event)
If the realEditor returns true to this message, prepareForEditing is messaged and true is returned.

Specified by:
isCellEditable in interface CellEditor

shouldSelectCell

public boolean shouldSelectCell(EventObject event)
Messages the realEditor for the return value.

Specified by:
shouldSelectCell in interface CellEditor

stopCellEditing

public boolean stopCellEditing()
If the realEditor will allow editing to stop, the realEditor is removed and true is returned, otherwise false is returned.

Specified by:
stopCellEditing in interface CellEditor

cancelCellEditing

public void cancelCellEditing()
Messages cancelCellEditing to the realEditor and removes it from this instance.

Specified by:
cancelCellEditing in interface CellEditor

addCellEditorListener

public void addCellEditorListener(CellEditorListener l)
Adds the CellEditorListener.

Specified by:
addCellEditorListener in interface CellEditor

removeCellEditorListener

public void removeCellEditorListener(CellEditorListener l)
Removes the previously added CellEditorListener l.

Specified by:
removeCellEditorListener in interface CellEditor

valueChanged

public void valueChanged(GraphSelectionEvent e)
Resets lastPath.

Specified by:
valueChanged in interface GraphSelectionListener
Parameters:
e - the event that characterizes the change.

actionPerformed

public void actionPerformed(ActionEvent e)
Messaged when the timer fires, this will start the editing session.

Specified by:
actionPerformed in interface ActionListener

setGraph

protected void setGraph(JGraph newGraph)
Sets the tree currently editing for. This is needed to add a selection listener.


shouldStartEditingTimer

protected boolean shouldStartEditingTimer(EventObject event)
Returns true if event is a MouseEvent and the click count is 1.


canEditImmediately

protected boolean canEditImmediately(EventObject event)
Returns true if event is null, or it is a MouseEvent with a click count > 2 and inHitRegion returns true.


inHitRegion

protected boolean inHitRegion(int x,
                              int y)
Should return true if the passed in location is a valid mouse location to start editing from. This is implemented to return false if x is <= the width of the icon and icon gap displayed by the renderer. In other words this returns true if the user clicks over the text part displayed by the renderer, and false otherwise.


determineOffset

protected void determineOffset(JGraph graph,
                               Object value,
                               boolean isSelected)

prepareForEditing

protected void prepareForEditing()
Invoked just before editing is to start. Will add the editingComponent to the editingContainer.


createContainer

protected Container createContainer()
Creates the container to manage placement of editingComponent.


createGraphCellEditor

protected GraphCellEditor createGraphCellEditor()
This is invoked if a TreeCellEditor is not supplied in the constructor. It returns a TextField editor.