Class RMTool<T extends RMShape>

    • Constructor Detail

      • RMTool

        public RMTool()
      • RMTool

        public RMTool​(com.google.common.eventbus.EventBus ebus)
    • Method Detail

      • getShapeClass

        public java.lang.Class<T> getShapeClass()
        Returns the shape class that this tool handles.
      • attachEventBus

        public void attachEventBus​(com.google.common.eventbus.EventBus bus)
      • newInstance

        protected T newInstance()
        Returns a new instance of the shape class that this tool is responsible for.
      • getWindowTitle

        public java.lang.String getWindowTitle()
        Returns the string to be used for the inspector window title.
      • createUI

        protected javax.swing.JComponent createUI()
        Create UI.
        Overrides:
        createUI in class SwingOwner
      • getDatasetEntity

        @Nullable
        public Entity getDatasetEntity​(RMShape aShape)
        Returns the given shape's dataset entity. Provides a level of indirection show shapes can show a different entity in the designer.
      • getEditor

        public RMEditor getEditor()
        Returns the currently active editor.
      • getEditorPane

        public RMEditorPane getEditorPane()
        Returns the currently active editor pane.
      • getSelectedShape

        public T getSelectedShape()
        Returns the current selected shape for the current editor.
      • getSelectedShapes

        public java.util.List<? extends RMShape> getSelectedShapes()
        Returns the current selected shapes for the current editor.
      • activateTool

        public void activateTool()
        Called when a tool is selected.
      • deactivateTool

        public void deactivateTool()
        Called when a tool is deselected (when another tool is selected).
      • reactivateTool

        public void reactivateTool()
        Called when a tool is selected even when it's already the current tool.
      • flushChanges

        public void flushChanges​(RMEditor anEditor,
                                 RMShape aShape)
        Called when a tool is deselected to give an opportunity to finalize changes in progress.
      • isSelected

        public boolean isSelected​(RMShape aShape)
        Returns whether a given shape is selected in the editor.
      • isSuperSelected

        public boolean isSuperSelected​(RMShape aShape)
        Returns whether a given shape is superselected in the editor.
      • isSuperSelectable

        public boolean isSuperSelectable​(RMShape aShape)
        Returns whether a given shape is super-selectable.
      • getAcceptsChildren

        public boolean getAcceptsChildren​(RMShape aShape)
        Returns whether a given shape accepts children.
      • isUngroupable

        public boolean isUngroupable​(RMShape aShape)
        Returns whether a given shape can be ungrouped.
      • didBecomeSuperSelectedShapeInEditor

        public void didBecomeSuperSelectedShapeInEditor​(RMShape aShape,
                                                        RMEditor anEditor)
        Editor method - called when an instance of this tool's shape is super selected.
      • willLoseSuperSelectionInEditor

        public void willLoseSuperSelectionInEditor​(RMShape aShape,
                                                   RMEditor anEditor)
        Editor method - called when an instance of this tool's shape in de-super-selected.
      • getBoundsSuperSelected

        public RMRect getBoundsSuperSelected​(RMShape aShape)
        Returns the bounds of the shape in parent coords when super selected (same as getBoundsMarkedDeep by default).
      • getUnitsFromPoints

        public double getUnitsFromPoints​(double aValue)
        Converts from shape units to tool units.
      • getPointsFromUnits

        public double getPointsFromUnits​(double aValue)
        Converts from tool units to shape units.
      • getFont

        public RMFont getFont​(RMEditor anEditor,
                              RMShape shape)
        Returns the font for the given shape. If the shape is a table, table row, or CrossTab it returns the font of the first text in the first row or the first text in the row. If the first item has no string it searches through all the children in order to find text and returns that font.
      • setFont

        public void setFont​(RMEditor anEditor,
                            RMShape aShape,
                            RMFont aFont)
        Sets the font for the given shape.
      • getFontDeep

        public RMFont getFontDeep​(RMEditor anEditor,
                                  RMShape aShape)
        Returns the font for the given shape.
      • setFontFamily

        public void setFontFamily​(RMEditor anEditor,
                                  RMShape aShape,
                                  RMFont aFont)
        Sets the font family for given shape.
      • setFontFamilyDeep

        public void setFontFamilyDeep​(RMEditor anEditor,
                                      RMShape aShape,
                                      RMFont aFont)
        Sets the font family for given shape.
      • setFontName

        public void setFontName​(RMEditor anEditor,
                                RMShape aShape,
                                RMFont aFont)
        Sets the font name for given shape.
      • setFontNameDeep

        public void setFontNameDeep​(RMEditor anEditor,
                                    RMShape aShape,
                                    RMFont aFont)
        Sets the font name for given shape.
      • setFontSize

        public void setFontSize​(RMEditor anEditor,
                                RMShape aShape,
                                double aSize,
                                boolean isRelative)
        Sets the font size for given shape.
      • setFontSizeDeep

        public void setFontSizeDeep​(RMEditor anEditor,
                                    RMShape aShape,
                                    double aSize,
                                    boolean isRelative)
        Sets the font size for given shape.
      • setFontBold

        public void setFontBold​(RMEditor anEditor,
                                RMShape aShape,
                                boolean aFlag)
        Sets the font to bold or not bold for given shape.
      • setFontBoldDeep

        public void setFontBoldDeep​(RMEditor anEditor,
                                    RMShape aShape,
                                    boolean aFlag)
        Sets the font to bold or not bold for given shape and its children.
      • setFontItalic

        public void setFontItalic​(RMEditor anEditor,
                                  RMShape aShape,
                                  boolean aFlag)
        Sets the font to italic or not italic for given shape.
      • setFontItalicDeep

        public void setFontItalicDeep​(RMEditor anEditor,
                                      RMShape aShape,
                                      boolean aFlag)
        Sets the font to italic or not italic for given shape and its children.
      • mouseMoved

        public void mouseMoved​(java.awt.event.MouseEvent anEvent)
        Event handling - called on mouse move when this tool is active.
      • mousePressed

        public void mousePressed​(java.awt.event.MouseEvent anEvent)
        Event handling for shape creation.
      • mouseDragged

        public void mouseDragged​(java.awt.event.MouseEvent anEvent)
        Event handling for shape creation.
      • mouseReleased

        public void mouseReleased​(java.awt.event.MouseEvent anEvent)
        Event handling for shape creation.
      • mouseMoved

        public void mouseMoved​(T aShape,
                               java.awt.event.MouseEvent anEvent)
        Event handling from select tool - called on mouse move when tool shape is super selected. MouseMoved is useful for setting a custom cursor.
      • mousePressed

        public void mousePressed​(T aShape,
                                 java.awt.event.MouseEvent anEvent)
        Event handling from select tool for super selected shapes.
      • mouseDragged

        public void mouseDragged​(T aShape,
                                 java.awt.event.MouseEvent anEvent)
        Event handling from select tool for super selected shapes.
      • mouseReleased

        public void mouseReleased​(T aShape,
                                  java.awt.event.MouseEvent anEvent)
        Event handling from select tool for super selected shapes.
      • mousePressedSelection

        public boolean mousePressedSelection​(java.awt.event.MouseEvent anEvent)
        Event hook during selection.
      • getToolTipText

        public java.lang.String getToolTipText​(T aShape,
                                               java.awt.event.MouseEvent anEvent)
        Returns a tool tip string for given shape and event.
      • processKeyEvent

        public void processKeyEvent​(T aShape,
                                    java.awt.event.KeyEvent anEvent)
        Editor method.
      • paintTool

        public void paintTool​(java.awt.Graphics2D g)
        Paints when tool is active for things like SelectTool's handles & selection rect or polygon's in-progress path.
      • paintShapeHandles

        public void paintShapeHandles​(T aShape,
                                      java.awt.Graphics2D g,
                                      boolean isSuperSelected)
        Handles painting shape handles (or any indication that a shape is selected/super-selected).
      • getHandleCount

        public int getHandleCount​(T aShape)
        Returns the number of handles for this shape.
      • getHandlePoint

        public RMPoint getHandlePoint​(T aShape,
                                      int aHandle,
                                      boolean isSuperSelected)
        Returns the point for the handle of the given shape at the given handle index in the given shape's coords.
      • getHandleRect

        public RMRect getHandleRect​(T aShape,
                                    int aHandle,
                                    boolean isSuperSelected)
        Returns the rect for the handle at the given index in editor coords.
      • getHandleAtPoint

        public int getHandleAtPoint​(T aShape,
                                    java.awt.geom.Point2D aPoint,
                                    boolean isSuperSelected)
        Returns the handle hit by the given editor coord point.
      • getHandleCursor

        public java.awt.Cursor getHandleCursor​(T aShape,
                                               int aHandle)
        Returns the cursor for given handle.
      • moveShapeHandle

        public void moveShapeHandle​(T aShape,
                                    int aHandle,
                                    RMPoint toPoint)
        Moves the handle at the given index to the given point.
      • getHandleOpposing

        public int getHandleOpposing​(int handle)
        Returns the handle index that is across from given handle index.
      • getShapeFillInspector

        public SwingOwner getShapeFillInspector()
        Returns the fill inspector for this tool's shape class.
      • getShapeHandleAtPoint

        public RMTool.RMShapeHandle getShapeHandleAtPoint​(java.awt.geom.Point2D aPoint)
        Returns the shape handle for the given editor point.
      • acceptsDrag

        public boolean acceptsDrag​(T aShape,
                                   java.awt.dnd.DropTargetDragEvent anEvent)
        Implemented by shapes that can handle drag & drop.
      • dragEnter

        public void dragEnter​(RMShape aShape,
                              java.awt.dnd.DropTargetDragEvent anEvent)
        Notifies tool that a something was dragged into of one of its shapes with drag and drop.
      • dragExit

        public void dragExit​(RMShape aShape,
                             java.awt.dnd.DropTargetDragEvent anEvent)
        Notifies tool that a something was dragged out of one of its shapes with drag and drop.
      • dragOver

        public void dragOver​(RMShape aShape,
                             java.awt.dnd.DropTargetDragEvent anEvent)
        Notifies tool that something was dragged over one of its shapes with drag and drop.
      • drop

        public void drop​(T aShape,
                         java.awt.dnd.DropTargetDropEvent anEvent)
        Notifies tool that something was dropped on one of its shapes with drag and drop.
      • dropDragKey

        public void dropDragKey​(T aShape,
                                java.awt.dnd.DropTargetDropEvent anEvent)
      • dropClass

        public void dropClass​(T aShape,
                              java.awt.dnd.DropTargetDropEvent anEvent)
      • flavorForClass

        public static java.awt.datatransfer.DataFlavor flavorForClass​(java.lang.Class clazz)
      • getDragDisplayBounds

        public RMRect getDragDisplayBounds​(RMShape aShape,
                                           java.awt.dnd.DropTargetDragEvent anEvent)
        Returns the bounds to be highlighted for a drag over a given shape.
      • dropString

        public void dropString​(T aShape,
                               java.awt.dnd.DropTargetDropEvent anEvent)
        Called to handle dropping a string.
      • dropColor

        public void dropColor​(RMShape aShape,
                              java.awt.dnd.DropTargetDropEvent anEvent)
        Called to handle dropping a color.
      • dropFiles

        public void dropFiles​(RMShape aShape,
                              java.awt.dnd.DropTargetDropEvent anEvent)
        Called to handle dropping a file.
      • getGalleryClone

        public RMShape getGalleryClone​(T aShape)
        Returns a clone of a gallery shape (hook to allow extra configuration for subclasses).
      • getIcon

        public javax.swing.Icon getIcon()
        Returns the icon used to represent shapes that this tool represents.
      • getIcon

        public static javax.swing.Icon getIcon​(java.lang.Class aClass)
        Returns the icon for the given shape class.
      • getSelectTool

        public static RMSelectTool getSelectTool()
        Returns the SelectTool.
      • getTool

        @Nonnull
        public static RMTool getTool​(java.util.List aList)
        Returns the specific tool for a list of shapes (if they have the same tool).
      • getTool

        @Nonnull
        public static RMTool getTool​(java.lang.Object anObj)
        Returns the specific tool for a given shape.