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:
ImageObserver
,MenuContainer
,Serializable
- Direct Known Subclasses:
mxCellTracker
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. The
state
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 Mapinvalid input: '<'String, Object> 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 Hashtableinvalid input: '<'String, Object>(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:
-
Nested Class Summary
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected Color
Holds the current marker color.static Stroke
Specifies the default stroke for the marker.protected boolean
Specifies if the marker is enabled.protected mxEventSource
Holds the event source.protected mxGraphComponent
Holds the enclosing graph component.protected double
Specifies the portion of the width and height that should trigger a highlight.protected boolean
Specifies if the hotspot is enabled.protected Color
Specifies the valid- and invalidColor for the marker.static boolean
Specifies if the highlights should appear on top of everything else in the overlay pane.protected mxCellState
Holds the marked state.protected boolean
Specifies if the the content area of swimlane should be non-transparent to mouse events.protected Color
Specifies the valid- and invalidColor for the marker.protected mxCellState
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
Fields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
-
Constructor Summary
ConstructorsConstructorDescriptionmxCellMarker
(mxGraphComponent graphComponent) Constructs a new marker for the given graph component.mxCellMarker
(mxGraphComponent graphComponent, Color validColor) Constructs a new marker for the given graph component.mxCellMarker
(mxGraphComponent graphComponent, Color validColor, Color invalidColor) Constructs a new marker for the given graph component.mxCellMarker
(mxGraphComponent graphComponent, Color validColor, Color invalidColor, double hotspot) Constructs a new marker for the given graph component. -
Method Summary
Modifier and TypeMethodDescriptionvoid
addListener
(String eventName, mxEventSource.mxIEventListener listener) Adds the given event listener.protected Object
Returns the state at the given location.Returns the current color.double
Returns the hotspot.Returns the color used for invalid highlights.Returns the marked state.protected Color
getMarkerColor
(MouseEvent e, mxCellState state, boolean isValid) Returns the valid- or invalidColor depending on the value of isValid.protected mxCellState
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.Returns the color used for valid highlights.Returns the valid state.boolean
Returns true if validState is not null.void
highlight
(mxCellState state, Color color) void
highlight
(mxCellState state, Color color, boolean valid) protected boolean
intersects
(mxCellState state, MouseEvent e) Returns true if the given mouse event intersects the given state.boolean
Returns true if the marker is enabled, that is, if it processes events in process.boolean
Returns true if hotspot is used in intersects.boolean
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
Paints the outline of the markedState with the currentColor.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, String eventName) Removes the given event listener for the specified event name.void
reset()
Resets the state of the cell marker.void
setCurrentColor
(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
(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
(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 Details
-
KEEP_ON_TOP
public static boolean KEEP_ON_TOPSpecifies if the highlights should appear on top of everything else in the overlay pane. Default is false. -
DEFAULT_STROKE
Specifies the default stroke for the marker. -
eventSource
Holds the event source. -
graphComponent
Holds the enclosing graph component. -
enabled
protected boolean enabledSpecifies if the marker is enabled. Default is true. -
hotspot
protected double hotspotSpecifies 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 hotspotEnabledSpecifies if the hotspot is enabled. Default is false. -
swimlaneContentEnabled
protected boolean swimlaneContentEnabledSpecifies if the the content area of swimlane should be non-transparent to mouse events. Default is false. -
validColor
Specifies the valid- and invalidColor for the marker. -
invalidColor
Specifies the valid- and invalidColor for the marker. -
currentColor
Holds the current marker color. -
validState
Holds the marked state if it is valid. -
markedState
Holds the marked state.
-
-
Constructor Details
-
mxCellMarker
Constructs a new marker for the given graph component.- Parameters:
graphComponent
-
-
mxCellMarker
Constructs a new marker for the given graph component. -
mxCellMarker
Constructs a new marker for the given graph component. -
mxCellMarker
public mxCellMarker(mxGraphComponent graphComponent, Color validColor, Color invalidColor, double hotspot) Constructs a new marker for the given graph component.
-
-
Method Details
-
setEnabled
public void setEnabled(boolean enabled) Sets the enabled state of the marker.- Overrides:
setEnabled
in classJComponent
-
isEnabled
public boolean isEnabled()Returns true if the marker is enabled, that is, if it processes events in process. -
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
Sets the color used for valid highlights. -
getValidColor
Returns the color used for valid highlights. -
setInvalidColor
Sets the color used for invalid highlights. -
getInvalidColor
Returns the color used for invalid highlights. -
hasValidState
public boolean hasValidState()Returns true if validState is not null. -
getValidState
Returns the valid state. -
setCurrentColor
Sets the current color. -
getCurrentColor
Returns the current color. -
setMarkedState
Sets the marked state. -
getMarkedState
Returns the marked state. -
reset
public void reset()Resets the state of the cell marker. -
process
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
-
highlight
-
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
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
Returns the valid- or invalidColor depending on the value of isValid. The given state is ignored by this implementation. -
getState
Uses getCell, getMarkedState and intersects to return the state for the given event. -
getCell
Returns the state at the given location. This uses mxGraph.getCellAt. -
getStateToMark
Returns the state to be marked for the given state under the mouse. This returns the given state. -
intersects
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
Adds the given event listener. -
removeListener
Removes the given event listener. -
removeListener
Removes the given event listener for the specified event name. -
paint
Paints the outline of the markedState with the currentColor.- Overrides:
paint
in classJComponent
-