Class 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. 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 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
    • Nested Class Summary

      • Nested classes/interfaces inherited from class javax.swing.JComponent

        javax.swing.JComponent.AccessibleJComponent
      • Nested classes/interfaces inherited from class java.awt.Container

        java.awt.Container.AccessibleAWTContainer
      • Nested classes/interfaces inherited from class java.awt.Component

        java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
    • 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
      • 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

      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
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • 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 class javax.swing.JComponent
      • isEnabled

        public boolean isEnabled()
        Returns true if the marker is enabled, that is, if it processes events in process.
        Overrides:
        isEnabled in class java.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.
      • 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 class javax.swing.JComponent