Class PositionableShape
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- jmri.jmrit.display.PositionableJComponent
-
- jmri.jmrit.display.controlPanelEditor.shape.PositionableShape
-
- All Implemented Interfaces:
java.awt.image.ImageObserver,java.awt.MenuContainer,java.beans.PropertyChangeListener,java.io.Serializable,java.lang.Cloneable,java.util.EventListener,Positionable,InlineLogixNG
- Direct Known Subclasses:
PositionableCircle,PositionablePolygon,PositionableRectangle
public abstract class PositionableShape extends PositionableJComponent implements java.beans.PropertyChangeListener
PositionableShape is item drawn by java.awt.Graphics2D.- 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
-
Nested classes/interfaces inherited from interface jmri.jmrit.display.Positionable
Positionable.DuplicateIdException
-
-
Field Summary
Fields Modifier and Type Field Description protected DrawFrame_editFrameprotected java.awt.Color_fillColorprotected int_heightprotected int_hitIndexprotected int_lastXprotected int_lastYprotected java.awt.Color_lineColorprotected int_lineWidthprotected java.awt.geom.AffineTransform_transformprotected int_width(package private) static intBOTTOM(package private) static intLEFT(package private) static intRIGHT(package private) static intSIZE(package private) static intTOP-
Fields inherited from class jmri.jmrit.display.PositionableJComponent
_editor
-
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 PositionableShape(Editor editor)PositionableShape(Editor editor, java.awt.Shape shape)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract PositionabledeepClone()Make a deep copy of Positional object.protected booleandoHandleMove(JmriMouseEvent event)voiddoMousePressed(JmriMouseEvent event)voiddrawHandles()protected PositionablefinishClone(PositionableShape pos)intgetChangeLevel()SensorgetControlSensor()NamedBeanHandle<Sensor>getControlSensorHandle()intgetDegrees()protected DrawFramegetEditFrame()java.awt.ColorgetFillColor()intgetHeight()java.awt.PointgetInversePoint(int x, int y)java.awt.ColorgetLineColor()intgetLineWidth()java.awt.geom.PathIteratorgetPathIterator(java.awt.geom.AffineTransform at)protected java.lang.StringgetSensorName()protected java.awt.ShapegetShape()java.awt.DimensiongetSize(java.awt.Dimension rv)java.awt.geom.AffineTransformgetTransform()intgetWidth()protected voidinvalidateShape()Force the shape to be regenerated next time it is needed.booleanisHideOnSensor()protected abstract DrawFramemakeEditFrame(boolean create)protected abstract java.awt.ShapemakeShape()Create the shape returned bygetShape().intmaxHeight()intmaxWidth()voidpaint(java.awt.Graphics g)protected voidpaintHandles(java.awt.Graphics2D g2d)voidpropertyChange(java.beans.PropertyChangeEvent evt)voidremoveHandles()protected voidremoveListener()voidrotate(int deg)voidsetChangeLevel(int l)java.lang.StringsetControlSensor(java.lang.String pName)Attach a named sensor to a PositionableShape.voidsetDisplayLevel(int l)voidsetFillColor(java.awt.Color c)voidsetHeight(int h)voidsetHide(boolean h)voidsetLineColor(java.awt.Color c)voidsetLineWidth(int w)voidsetListener()booleansetRotateMenu(javax.swing.JPopupMenu popup)Add a rotation menu to the contextual menu for this PostionableShape.booleansetScaleMenu(javax.swing.JPopupMenu popup)Add additional menu items to the menu.protected voidsetShape(java.awt.Shape s)voidsetWidth(int w)booleanshowPopUp(javax.swing.JPopupMenu popup)voidupdateSize()-
Methods inherited from class jmri.jmrit.display.PositionableJComponent
addClass, displayState, doMouseClicked, doMouseDragged, doMouseEntered, doMouseExited, doMouseMoved, doMouseReleased, doViemMenu, finishClone, getClasses, getDisplayLevel, getEditor, getId, getLogixNG, getNamedBean, getNameString, getPopupUtility, getScale, getTextComponent, getToolTip, getTypeString, getViewCoordinates, isActive, isControlling, isEditable, isEmptyHidden, isHidden, isPositionable, isValueEditDisabled, remove, removeAllClasses, removeClass, setControlling, setDisableControlMenu, setEditable, setEditIconMenu, setEditItemMenu, setEditor, setEmptyHidden, setHidden, setId, setLevel, setLogixNG, setLogixNG_SystemName, setPopupUtility, setPositionable, setRotateOrthogonalMenu, setScale, setShowToolTip, setTextEditMenu, setToolTip, setupLogixNG, setValueEditDisabled, setViewCoordinates, showHidden, showToolTip, storeItem
-
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, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUI, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, 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, setEnabled, 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, isEnabled, 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
-
Methods inherited from interface jmri.jmrit.display.Positionable
contains, getBackground, getBounds, getEditorName, getFont, getForeground, getLocation, getParent, getPreferredSize, getTypeName, getX, getY, invalidate, isOpaque, repaint, requestFocusInWindow, setBackground, setBorder, setForeground, setLocation, setLocation, setOpaque, setSize, setVisible
-
-
-
-
Field Detail
-
_lineColor
protected java.awt.Color _lineColor
-
_fillColor
protected java.awt.Color _fillColor
-
_lineWidth
protected int _lineWidth
-
_transform
protected java.awt.geom.AffineTransform _transform
-
_hitIndex
protected int _hitIndex
-
_lastX
protected int _lastX
-
_lastY
protected int _lastY
-
_width
protected int _width
-
_height
protected int _height
-
_editFrame
protected DrawFrame _editFrame
-
TOP
static final int TOP
- See Also:
- Constant Field Values
-
RIGHT
static final int RIGHT
- See Also:
- Constant Field Values
-
BOTTOM
static final int BOTTOM
- See Also:
- Constant Field Values
-
LEFT
static final int LEFT
- See Also:
- Constant Field Values
-
SIZE
static final int SIZE
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
PositionableShape
public PositionableShape(Editor editor)
-
PositionableShape
public PositionableShape(Editor editor, @Nonnull java.awt.Shape shape)
-
-
Method Detail
-
getPathIterator
public java.awt.geom.PathIterator getPathIterator(java.awt.geom.AffineTransform at)
-
getTransform
public java.awt.geom.AffineTransform getTransform()
-
setWidth
public void setWidth(int w)
-
setHeight
public void setHeight(int h)
-
getHeight
public int getHeight()
- Specified by:
getHeightin interfacePositionable- Overrides:
getHeightin classjavax.swing.JComponent
-
getWidth
public int getWidth()
- Specified by:
getWidthin interfacePositionable- Overrides:
getWidthin classjavax.swing.JComponent
-
makeShape
@Nonnull protected abstract java.awt.Shape makeShape()
Create the shape returned bygetShape().- Returns:
- the created shape
-
invalidateShape
protected void invalidateShape()
Force the shape to be regenerated next time it is needed.
-
setLineColor
public void setLineColor(java.awt.Color c)
-
getLineColor
public java.awt.Color getLineColor()
-
setFillColor
public void setFillColor(java.awt.Color c)
-
getFillColor
public java.awt.Color getFillColor()
-
setLineWidth
public void setLineWidth(int w)
-
getLineWidth
public int getLineWidth()
-
rotate
public void rotate(int deg)
- Specified by:
rotatein interfacePositionable- Overrides:
rotatein classPositionableJComponent
-
paint
public void paint(java.awt.Graphics g)
- Overrides:
paintin classjavax.swing.JComponent
-
paintHandles
protected void paintHandles(java.awt.Graphics2D g2d)
-
deepClone
public abstract Positionable deepClone()
Description copied from interface:PositionableMake a deep copy of Positional object. Implementation should create a new object and immediately pass the object to finishClone() returning the result of finishClone(). i.e. implementation must be:public Positionable deepClone() { Subtype t = new Subtype(); return finishClone(t); }Then finishClone() finishes the deep Copy of a Positional object. Implementation should make deep copies of the additional members of this sub class and then pass Positionable p to super.finishClone(). i.e. implementation must terminate with statement return super.finishClone(p); See IndicatorTurnoutIcon extends TurnoutIcon extends PositionableLabel for an example of how to continue deep cloning a chain of subclasses.
- Specified by:
deepClonein interfacePositionable- Overrides:
deepClonein classPositionableJComponent- Returns:
- the copy
-
finishClone
protected Positionable finishClone(PositionableShape pos)
-
getSize
public java.awt.Dimension getSize(java.awt.Dimension rv)
- Overrides:
getSizein classjavax.swing.JComponent
-
updateSize
public void updateSize()
- Specified by:
updateSizein interfacePositionable- Overrides:
updateSizein classPositionableJComponent
-
maxWidth
public int maxWidth()
- Specified by:
maxWidthin interfacePositionable- Overrides:
maxWidthin classPositionableJComponent
-
maxHeight
public int maxHeight()
- Specified by:
maxHeightin interfacePositionable- Overrides:
maxHeightin classPositionableJComponent
-
showPopUp
public boolean showPopUp(javax.swing.JPopupMenu popup)
- Specified by:
showPopUpin interfacePositionable- Overrides:
showPopUpin classPositionableJComponent
-
setRotateMenu
public boolean setRotateMenu(javax.swing.JPopupMenu popup)
Add a rotation menu to the contextual menu for this PostionableShape.- Specified by:
setRotateMenuin interfacePositionable- Overrides:
setRotateMenuin classPositionableJComponent- Parameters:
popup- the menu to add a rotation menu to- Returns:
- true if rotation menu is added; false otherwise
-
setScaleMenu
public boolean setScaleMenu(javax.swing.JPopupMenu popup)
Description copied from interface:PositionableAdd additional menu items to the menu.- Specified by:
setScaleMenuin interfacePositionable- Overrides:
setScaleMenuin classPositionableJComponent- Parameters:
popup- the menu to add the menu items to- Returns:
- true if adding items; false otherwise
-
getDegrees
public int getDegrees()
- Specified by:
getDegreesin interfacePositionable- Overrides:
getDegreesin classPositionableJComponent
-
propertyChange
public void propertyChange(java.beans.PropertyChangeEvent evt)
- Specified by:
propertyChangein interfacejava.beans.PropertyChangeListener
-
setDisplayLevel
public void setDisplayLevel(int l)
- Specified by:
setDisplayLevelin interfacePositionable- Overrides:
setDisplayLevelin classPositionableJComponent
-
setControlSensor
public java.lang.String setControlSensor(java.lang.String pName)
Attach a named sensor to a PositionableShape.- Parameters:
pName- Used as a system/user name to lookup the sensor object- Returns:
- errror message or null
-
getControlSensor
public Sensor getControlSensor()
-
getSensorName
protected java.lang.String getSensorName()
-
getControlSensorHandle
public NamedBeanHandle<Sensor> getControlSensorHandle()
-
isHideOnSensor
public boolean isHideOnSensor()
-
setHide
public void setHide(boolean h)
-
getChangeLevel
public int getChangeLevel()
-
setChangeLevel
public void setChangeLevel(int l)
-
setListener
public void setListener()
-
removeListener
protected void removeListener()
-
makeEditFrame
protected abstract DrawFrame makeEditFrame(boolean create)
-
getEditFrame
protected DrawFrame getEditFrame()
-
removeHandles
public void removeHandles()
-
drawHandles
public void drawHandles()
-
getInversePoint
public java.awt.Point getInversePoint(int x, int y) throws java.awt.geom.NoninvertibleTransformException
- Throws:
java.awt.geom.NoninvertibleTransformException
-
doMousePressed
public void doMousePressed(JmriMouseEvent event)
- Specified by:
doMousePressedin interfacePositionable- Overrides:
doMousePressedin classPositionableJComponent
-
doHandleMove
protected boolean doHandleMove(JmriMouseEvent event)
-
-