Package com.mxgraph.swing.handler
Class mxCellMarker
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- com.mxgraph.swing.handler.mxCellMarker
-
- All Implemented Interfaces:
java.awt.image.ImageObserver
,java.awt.MenuContainer
,java.io.Serializable
- Direct Known Subclasses:
mxCellTracker
public class mxCellMarker extends javax.swing.JComponent
Implements a mouse tracker that marks cells under the mouse. This class fires the following event: mxEvent.MARK fires in mark and unmark to notify the listener of a new cell under the mouse. Thestate
property contains the mxCellState of the respective cell or null if no cell is under the mouse. To create a cell marker which highlights cells "in-place", the following code can be used:mxCellMarker highlighter = new mxCellMarker(graphComponent) { protected Map
lastStyle; public mxCellState process(MouseEvent e) { mxCellState state = null; if (isEnabled()) { state = getState(e); boolean isValid = (state != null) ? isValidState(state) : false; if (!isValid) { state = null; } highlight(state); } return state; } public void highlight(mxCellState state) { if (validState != state) { Rectangle dirty = null; if (validState != null) { validState.setStyle(lastStyle); dirty = validState.getBoundingBox().getRectangle(); dirty.grow(4, 4); } if (state != null) { lastStyle = state.getStyle(); state.setStyle(new Hashtable (state.getStyle())); state.getStyle().put("strokeColor", "#00ff00"); state.getStyle().put("fontColor", "#00ff00"); state.getStyle().put("strokeWidth", "3"); Rectangle tmp = state.getBoundingBox().getRectangle(); if (dirty != null) { dirty.add(tmp); } else { dirty = tmp; } dirty.grow(4, 4); } validState = state; graphComponent.repaint(dirty); } } public void reset() { highlight(null); } public void paint(Graphics g) { // do nothing } }; graphComponent.getConnectionHandler().setMarker(highlighter); - See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected java.awt.Color
currentColor
Holds the current marker color.static java.awt.Stroke
DEFAULT_STROKE
Specifies the default stroke for the marker.protected boolean
enabled
Specifies if the marker is enabled.protected mxEventSource
eventSource
Holds the event source.protected mxGraphComponent
graphComponent
Holds the enclosing graph component.protected double
hotspot
Specifies the portion of the width and height that should trigger a highlight.protected boolean
hotspotEnabled
Specifies if the hotspot is enabled.protected java.awt.Color
invalidColor
Specifies the valid- and invalidColor for the marker.static boolean
KEEP_ON_TOP
Specifies if the highlights should appear on top of everything else in the overlay pane.protected mxCellState
markedState
Holds the marked state.protected boolean
swimlaneContentEnabled
Specifies if the the content area of swimlane should be non-transparent to mouse events.protected java.awt.Color
validColor
Specifies the valid- and invalidColor for the marker.protected mxCellState
validState
Holds the marked state if it is valid.-
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
-
-
Constructor Summary
Constructors Constructor Description mxCellMarker(mxGraphComponent graphComponent)
Constructs a new marker for the given graph component.mxCellMarker(mxGraphComponent graphComponent, java.awt.Color validColor)
Constructs a new marker for the given graph component.mxCellMarker(mxGraphComponent graphComponent, java.awt.Color validColor, java.awt.Color invalidColor)
Constructs a new marker for the given graph component.mxCellMarker(mxGraphComponent graphComponent, java.awt.Color validColor, java.awt.Color invalidColor, double hotspot)
Constructs a new marker for the given graph component.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addListener(java.lang.String eventName, mxEventSource.mxIEventListener listener)
Adds the given event listener.protected java.lang.Object
getCell(java.awt.event.MouseEvent e)
Returns the state at the given location.java.awt.Color
getCurrentColor()
Returns the current color.double
getHotspot()
Returns the hotspot.java.awt.Color
getInvalidColor()
Returns the color used for invalid highlights.mxCellState
getMarkedState()
Returns the marked state.protected java.awt.Color
getMarkerColor(java.awt.event.MouseEvent e, mxCellState state, boolean isValid)
Returns the valid- or invalidColor depending on the value of isValid.protected mxCellState
getState(java.awt.event.MouseEvent e)
Uses getCell, getMarkedState and intersects to return the state for the given event.protected mxCellState
getStateToMark(mxCellState state)
Returns the state to be marked for the given state under the mouse.java.awt.Color
getValidColor()
Returns the color used for valid highlights.mxCellState
getValidState()
Returns the valid state.boolean
hasValidState()
Returns true if validState is not null.void
highlight(mxCellState state, java.awt.Color color)
void
highlight(mxCellState state, java.awt.Color color, boolean valid)
protected boolean
intersects(mxCellState state, java.awt.event.MouseEvent e)
Returns true if the given mouse event intersects the given state.boolean
isEnabled()
Returns true if the marker is enabled, that is, if it processes events in process.boolean
isHotspotEnabled()
Returns true if hotspot is used in intersects.boolean
isSwimlaneContentEnabled()
Returns true if the content area of swimlanes is non-transparent to events.protected boolean
isValidState(mxCellState state)
Returns true if the given state is a valid state.void
mark()
Marks the markedState and fires a mxEvent.MARK event.void
paint(java.awt.Graphics g)
Paints the outline of the markedState with the currentColor.mxCellState
process(java.awt.event.MouseEvent e)
Processes the given event and marks the state returned by getStateAt with the color returned by getMarkerColor.void
removeListener(mxEventSource.mxIEventListener listener)
Removes the given event listener.void
removeListener(mxEventSource.mxIEventListener listener, java.lang.String eventName)
Removes the given event listener for the specified event name.void
reset()
Resets the state of the cell marker.void
setCurrentColor(java.awt.Color value)
Sets the current color.void
setEnabled(boolean enabled)
Sets the enabled state of the marker.void
setHotspot(double hotspot)
Sets the hotspot.void
setHotspotEnabled(boolean enabled)
Specifies whether the hotspot should be used in intersects.void
setInvalidColor(java.awt.Color value)
Sets the color used for invalid highlights.void
setMarkedState(mxCellState value)
Sets the marked state.void
setSwimlaneContentEnabled(boolean swimlaneContentEnabled)
Sets if the content area of swimlanes should not be transparent to events.void
setValidColor(java.awt.Color value)
Sets the color used for valid highlights.void
unmark()
Hides the marker and fires a mxEvent.MARK event.-
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUI, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI
-
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
-
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAccessibleContext, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
-
-
-
Field Detail
-
KEEP_ON_TOP
public static boolean KEEP_ON_TOP
Specifies if the highlights should appear on top of everything else in the overlay pane. Default is false.
-
DEFAULT_STROKE
public static java.awt.Stroke DEFAULT_STROKE
Specifies the default stroke for the marker.
-
eventSource
protected mxEventSource eventSource
Holds the event source.
-
graphComponent
protected mxGraphComponent graphComponent
Holds the enclosing graph component.
-
enabled
protected boolean enabled
Specifies if the marker is enabled. Default is true.
-
hotspot
protected double hotspot
Specifies the portion of the width and height that should trigger a highlight. The area around the center of the cell to be marked is used as the hotspot. Possible values are between 0 and 1. Default is mxConstants.DEFAULT_HOTSPOT.
-
hotspotEnabled
protected boolean hotspotEnabled
Specifies if the hotspot is enabled. Default is false.
-
swimlaneContentEnabled
protected boolean swimlaneContentEnabled
Specifies if the the content area of swimlane should be non-transparent to mouse events. Default is false.
-
validColor
protected java.awt.Color validColor
Specifies the valid- and invalidColor for the marker.
-
invalidColor
protected java.awt.Color invalidColor
Specifies the valid- and invalidColor for the marker.
-
currentColor
protected transient java.awt.Color currentColor
Holds the current marker color.
-
validState
protected transient mxCellState validState
Holds the marked state if it is valid.
-
markedState
protected transient mxCellState markedState
Holds the marked state.
-
-
Constructor Detail
-
mxCellMarker
public mxCellMarker(mxGraphComponent graphComponent)
Constructs a new marker for the given graph component.- Parameters:
graphComponent
-
-
mxCellMarker
public mxCellMarker(mxGraphComponent graphComponent, java.awt.Color validColor)
Constructs a new marker for the given graph component.
-
mxCellMarker
public mxCellMarker(mxGraphComponent graphComponent, java.awt.Color validColor, java.awt.Color invalidColor)
Constructs a new marker for the given graph component.
-
mxCellMarker
public mxCellMarker(mxGraphComponent graphComponent, java.awt.Color validColor, java.awt.Color invalidColor, double hotspot)
Constructs a new marker for the given graph component.
-
-
Method Detail
-
setEnabled
public void setEnabled(boolean enabled)
Sets the enabled state of the marker.- Overrides:
setEnabled
in classjavax.swing.JComponent
-
isEnabled
public boolean isEnabled()
Returns true if the marker is enabled, that is, if it processes events in process.- Overrides:
isEnabled
in classjava.awt.Component
-
setHotspot
public void setHotspot(double hotspot)
Sets the hotspot.
-
getHotspot
public double getHotspot()
Returns the hotspot.
-
setHotspotEnabled
public void setHotspotEnabled(boolean enabled)
Specifies whether the hotspot should be used in intersects.
-
isHotspotEnabled
public boolean isHotspotEnabled()
Returns true if hotspot is used in intersects.
-
setSwimlaneContentEnabled
public void setSwimlaneContentEnabled(boolean swimlaneContentEnabled)
Sets if the content area of swimlanes should not be transparent to events.
-
isSwimlaneContentEnabled
public boolean isSwimlaneContentEnabled()
Returns true if the content area of swimlanes is non-transparent to events.
-
setValidColor
public void setValidColor(java.awt.Color value)
Sets the color used for valid highlights.
-
getValidColor
public java.awt.Color getValidColor()
Returns the color used for valid highlights.
-
setInvalidColor
public void setInvalidColor(java.awt.Color value)
Sets the color used for invalid highlights.
-
getInvalidColor
public java.awt.Color getInvalidColor()
Returns the color used for invalid highlights.
-
hasValidState
public boolean hasValidState()
Returns true if validState is not null.
-
getValidState
public mxCellState getValidState()
Returns the valid state.
-
setCurrentColor
public void setCurrentColor(java.awt.Color value)
Sets the current color.
-
getCurrentColor
public java.awt.Color getCurrentColor()
Returns the current color.
-
setMarkedState
public void setMarkedState(mxCellState value)
Sets the marked state.
-
getMarkedState
public mxCellState getMarkedState()
Returns the marked state.
-
reset
public void reset()
Resets the state of the cell marker.
-
process
public mxCellState process(java.awt.event.MouseEvent e)
Processes the given event and marks the state returned by getStateAt with the color returned by getMarkerColor. If the markerColor is not null, then the state is stored in markedState. If isValidState returns true, then the state is stored in validState regardless of the marker color. The state is returned regardless of the marker color and valid state.
-
highlight
public void highlight(mxCellState state, java.awt.Color color)
-
highlight
public void highlight(mxCellState state, java.awt.Color color, boolean valid)
-
mark
public void mark()
Marks the markedState and fires a mxEvent.MARK event.
-
unmark
public void unmark()
Hides the marker and fires a mxEvent.MARK event.
-
isValidState
protected boolean isValidState(mxCellState state)
Returns true if the given state is a valid state. If this returns true, then the state is stored in validState. The return value of this method is used as the argument for getMarkerColor.
-
getMarkerColor
protected java.awt.Color getMarkerColor(java.awt.event.MouseEvent e, mxCellState state, boolean isValid)
Returns the valid- or invalidColor depending on the value of isValid. The given state is ignored by this implementation.
-
getState
protected mxCellState getState(java.awt.event.MouseEvent e)
Uses getCell, getMarkedState and intersects to return the state for the given event.
-
getCell
protected java.lang.Object getCell(java.awt.event.MouseEvent e)
Returns the state at the given location. This uses mxGraph.getCellAt.
-
getStateToMark
protected mxCellState getStateToMark(mxCellState state)
Returns the state to be marked for the given state under the mouse. This returns the given state.
-
intersects
protected boolean intersects(mxCellState state, java.awt.event.MouseEvent e)
Returns true if the given mouse event intersects the given state. This returns true if the hotspot is 0 or the event is inside the hotspot for the given cell state.
-
addListener
public void addListener(java.lang.String eventName, mxEventSource.mxIEventListener listener)
Adds the given event listener.
-
removeListener
public void removeListener(mxEventSource.mxIEventListener listener)
Removes the given event listener.
-
removeListener
public void removeListener(mxEventSource.mxIEventListener listener, java.lang.String eventName)
Removes the given event listener for the specified event name.
-
paint
public void paint(java.awt.Graphics g)
Paints the outline of the markedState with the currentColor.- Overrides:
paint
in classjavax.swing.JComponent
-
-