Class mxCellMarker

All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable
Direct Known Subclasses:
mxCellTracker

public class mxCellMarker extends 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. 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:
  • Field Details

    • 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 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 Color validColor
      Specifies the valid- and invalidColor for the marker.
    • invalidColor

      protected Color invalidColor
      Specifies the valid- and invalidColor for the marker.
    • currentColor

      protected transient 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 Details

    • mxCellMarker

      public mxCellMarker(mxGraphComponent graphComponent)
      Constructs a new marker for the given graph component.
      Parameters:
      graphComponent -
    • mxCellMarker

      public mxCellMarker(mxGraphComponent graphComponent, Color validColor)
      Constructs a new marker for the given graph component.
    • mxCellMarker

      public mxCellMarker(mxGraphComponent graphComponent, Color validColor, Color invalidColor)
      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 class JComponent
    • isEnabled

      public boolean isEnabled()
      Returns true if the marker is enabled, that is, if it processes events in process.
      Overrides:
      isEnabled in class 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(Color value)
      Sets the color used for valid highlights.
    • getValidColor

      public Color getValidColor()
      Returns the color used for valid highlights.
    • setInvalidColor

      public void setInvalidColor(Color value)
      Sets the color used for invalid highlights.
    • getInvalidColor

      public 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(Color value)
      Sets the current color.
    • getCurrentColor

      public 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(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, Color color)
    • highlight

      public void highlight(mxCellState state, 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 Color getMarkerColor(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(MouseEvent e)
      Uses getCell, getMarkedState and intersects to return the state for the given event.
    • getCell

      protected Object getCell(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, 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(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, String eventName)
      Removes the given event listener for the specified event name.
    • paint

      public void paint(Graphics g)
      Paints the outline of the markedState with the currentColor.
      Overrides:
      paint in class JComponent