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
_editFrame
protected java.awt.Color
_fillColor
protected int
_height
protected int
_hitIndex
protected int
_lastX
protected int
_lastY
protected java.awt.Color
_lineColor
protected int
_lineWidth
protected java.awt.geom.AffineTransform
_transform
protected int
_width
(package private) static int
BOTTOM
(package private) static int
LEFT
(package private) static int
RIGHT
(package private) static int
SIZE
(package private) static int
TOP
-
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 Positionable
deepClone()
Make a deep copy of Positional object.protected boolean
doHandleMove(JmriMouseEvent event)
void
doMousePressed(JmriMouseEvent event)
void
drawHandles()
protected Positionable
finishClone(PositionableShape pos)
int
getChangeLevel()
Sensor
getControlSensor()
NamedBeanHandle<Sensor>
getControlSensorHandle()
int
getDegrees()
protected DrawFrame
getEditFrame()
java.awt.Color
getFillColor()
int
getHeight()
java.awt.Point
getInversePoint(int x, int y)
java.awt.Color
getLineColor()
int
getLineWidth()
java.awt.geom.PathIterator
getPathIterator(java.awt.geom.AffineTransform at)
protected java.lang.String
getSensorName()
protected java.awt.Shape
getShape()
java.awt.Dimension
getSize(java.awt.Dimension rv)
java.awt.geom.AffineTransform
getTransform()
int
getWidth()
protected void
invalidateShape()
Force the shape to be regenerated next time it is needed.boolean
isHideOnSensor()
protected abstract DrawFrame
makeEditFrame(boolean create)
protected abstract java.awt.Shape
makeShape()
Create the shape returned bygetShape()
.int
maxHeight()
int
maxWidth()
void
paint(java.awt.Graphics g)
protected void
paintHandles(java.awt.Graphics2D g2d)
void
propertyChange(java.beans.PropertyChangeEvent evt)
void
removeHandles()
protected void
removeListener()
void
rotate(int deg)
void
setChangeLevel(int l)
java.lang.String
setControlSensor(java.lang.String pName)
Attach a named sensor to a PositionableShape.void
setDisplayLevel(int l)
void
setFillColor(java.awt.Color c)
void
setHeight(int h)
void
setHide(boolean h)
void
setLineColor(java.awt.Color c)
void
setLineWidth(int w)
void
setListener()
boolean
setRotateMenu(javax.swing.JPopupMenu popup)
Add a rotation menu to the contextual menu for this PostionableShape.boolean
setScaleMenu(javax.swing.JPopupMenu popup)
Add additional menu items to the menu.protected void
setShape(java.awt.Shape s)
void
setWidth(int w)
boolean
showPopUp(javax.swing.JPopupMenu popup)
void
updateSize()
-
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:
getHeight
in interfacePositionable
- Overrides:
getHeight
in classjavax.swing.JComponent
-
getWidth
public int getWidth()
- Specified by:
getWidth
in interfacePositionable
- Overrides:
getWidth
in 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:
rotate
in interfacePositionable
- Overrides:
rotate
in classPositionableJComponent
-
paint
public void paint(java.awt.Graphics g)
- Overrides:
paint
in classjavax.swing.JComponent
-
paintHandles
protected void paintHandles(java.awt.Graphics2D g2d)
-
deepClone
public abstract Positionable deepClone()
Description copied from interface:Positionable
Make 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:
deepClone
in interfacePositionable
- Overrides:
deepClone
in classPositionableJComponent
- Returns:
- the copy
-
finishClone
protected Positionable finishClone(PositionableShape pos)
-
getSize
public java.awt.Dimension getSize(java.awt.Dimension rv)
- Overrides:
getSize
in classjavax.swing.JComponent
-
updateSize
public void updateSize()
- Specified by:
updateSize
in interfacePositionable
- Overrides:
updateSize
in classPositionableJComponent
-
maxWidth
public int maxWidth()
- Specified by:
maxWidth
in interfacePositionable
- Overrides:
maxWidth
in classPositionableJComponent
-
maxHeight
public int maxHeight()
- Specified by:
maxHeight
in interfacePositionable
- Overrides:
maxHeight
in classPositionableJComponent
-
showPopUp
public boolean showPopUp(javax.swing.JPopupMenu popup)
- Specified by:
showPopUp
in interfacePositionable
- Overrides:
showPopUp
in classPositionableJComponent
-
setRotateMenu
public boolean setRotateMenu(javax.swing.JPopupMenu popup)
Add a rotation menu to the contextual menu for this PostionableShape.- Specified by:
setRotateMenu
in interfacePositionable
- Overrides:
setRotateMenu
in 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:Positionable
Add additional menu items to the menu.- Specified by:
setScaleMenu
in interfacePositionable
- Overrides:
setScaleMenu
in classPositionableJComponent
- Parameters:
popup
- the menu to add the menu items to- Returns:
- true if adding items; false otherwise
-
getDegrees
public int getDegrees()
- Specified by:
getDegrees
in interfacePositionable
- Overrides:
getDegrees
in classPositionableJComponent
-
propertyChange
public void propertyChange(java.beans.PropertyChangeEvent evt)
- Specified by:
propertyChange
in interfacejava.beans.PropertyChangeListener
-
setDisplayLevel
public void setDisplayLevel(int l)
- Specified by:
setDisplayLevel
in interfacePositionable
- Overrides:
setDisplayLevel
in 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:
doMousePressed
in interfacePositionable
- Overrides:
doMousePressed
in classPositionableJComponent
-
doHandleMove
protected boolean doHandleMove(JmriMouseEvent event)
-
-