Class SignalHeadIcon
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JLabel
-
- jmri.jmrit.display.PositionableLabel
-
- jmri.jmrit.display.PositionableIcon
-
- jmri.jmrit.display.SignalHeadIcon
-
- All Implemented Interfaces:
java.awt.image.ImageObserver
,java.awt.MenuContainer
,java.beans.PropertyChangeListener
,java.io.Serializable
,java.lang.Cloneable
,java.util.EventListener
,javax.accessibility.Accessible
,javax.swing.SwingConstants
,Positionable
,InlineLogixNG
public class SignalHeadIcon extends PositionableIcon implements java.beans.PropertyChangeListener
An icon to display a status of a SignalHead.SignalHeads are located via the SignalHeadManager, which in turn is located via the InstanceManager.
- See Also:
SignalHeadManager
,InstanceManager
, Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class jmri.jmrit.display.PositionableLabel
PositionableLabel.PaletteFrameCloser
-
Nested classes/interfaces inherited from class javax.swing.JLabel
javax.swing.JLabel.AccessibleJLabel
-
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 int
clickMode
What to do on click?protected boolean
litMode
How to handle lit vs not lit?-
Fields inherited from class jmri.jmrit.display.PositionableIcon
_iconFamily, _iconMap, _rotate, _scale
-
Fields inherited from class jmri.jmrit.display.PositionableLabel
_control, _controlling, _displayLevel, _editable, _editor, _emptyHidden, _hidden, _icon, _iconEditor, _iconEditorFrame, _iconItemPanel, _namedIcon, _paletteFrame, _popupUtil, _positionable, _rotateText, _showTooltip, _text, _tooltip, _unRotatedText, _valueEditDisabled, _viewCoordinates, active, disableItem
-
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
-
-
Constructor Summary
Constructors Constructor Description SignalHeadIcon(Editor editor)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Positionable
deepClone()
Make a deep copy of Positional object.void
displayState(int state)
Drive the current state of the display from the state of the underlying SignalHead object.void
dispose()
Clean up when this object is no longer needed.void
doMouseClicked(JmriMouseEvent e)
Change the SignalHead state when the icon is clicked.protected void
edit()
protected void
editItem()
protected Positionable
finishClone(SignalHeadIcon pos)
int
getClickMode()
boolean
getLitMode()
NamedBean
getNamedBean()
Provide a generic method to return the bean associated with the Positionable.NamedBeanHandle<SignalHead>
getNamedSignalHead()
java.lang.String
getNameString()
Get the name of the positional as a String.SignalHead
getSignalHead()
java.lang.String
getTypeString()
Get the type of the positional as a String.int
headState()
Get current appearance of the head.void
performMouseClicked(JmriMouseEvent e)
Handle mouse clicks when no modifier keys are pressed.void
propertyChange(java.beans.PropertyChangeEvent e)
void
rotate(int deg)
protected void
rotateOrthogonal()
************* popup AbstractAction.actionPerformed method overrides ***********void
setClickMode(int mode)
boolean
setEditIconMenu(javax.swing.JPopupMenu popup)
Add additional menu items to the menu.boolean
setEditItemMenu(javax.swing.JPopupMenu popup)
Add additional menu items to the menu.void
setIcon(java.lang.String state, NamedIcon icon)
Place icon by its non-localized bean state name.void
setLitMode(boolean mode)
void
setScale(double s)
void
setSignalHead(java.lang.String pName)
Attach a SignalHead element to this display item by name.void
setSignalHead(NamedBeanHandle<SignalHead> sh)
Attach a SignalHead element to this display item by bean.boolean
showPopUp(javax.swing.JPopupMenu popup)
If editable, adds custom options to the Pop-up menu.(package private) void
updateItem()
(package private) void
updateSignal()
-
Methods inherited from class jmri.jmrit.display.PositionableIcon
cloneMap, finishClone, getFamily, getIcon, getIconMap, getIconStateNames, getScale, getStateNameCollection, maxHeight, maxWidth, setFamily
-
Methods inherited from class jmri.jmrit.display.PositionableLabel
addClass, cloneIcon, doMouseDragged, doMouseEntered, doMouseExited, doMouseMoved, doMousePressed, doMouseReleased, doViemMenu, editIcon, editIconItem, editTextItem, finishClone, finishItemUpdate, getClasses, getDegrees, getDisplayLevel, getEditor, getHeight, getId, getLogixNG, getPopupUtility, getSize, getTextComponent, getToolTip, getUnRotatedText, getViewCoordinates, getWidth, initPaletteFrame, isActive, isBackground, isControl, isControlling, isEditable, isEmptyHidden, isHidden, isIcon, isPositionable, isRotated, isText, isValueEditDisabled, makeIconEditorFrame, makePaletteFrame, makeTextOverlaidIcon, maxHeightTrue, maxWidthTrue, paintComponent, remove, removeAllClasses, removeClass, setControlling, setDegrees, setDisableControlMenu, setDisplayLevel, setEditable, setEditor, setEditTextItemMenu, setEmptyHidden, setHidden, setIcon, setId, setLevel, setLogixNG, setLogixNG_SystemName, setPopupUtility, setPositionable, setRotateMenu, setRotateOrthogonalMenu, setScaleMenu, setShowToolTip, setSuperText, setText, setTextEditMenu, setToolTip, setUnRotatedText, setupLogixNG, setValueEditDisabled, setViewCoordinates, showHidden, showToolTip, storeItem, updateIcon, updateSize, updateTextItem
-
Methods inherited from class javax.swing.JLabel
checkHorizontalKey, checkVerticalKey, getAccessibleContext, getDisabledIcon, getDisplayedMnemonic, getDisplayedMnemonicIndex, getHorizontalAlignment, getHorizontalTextPosition, getIcon, getIconTextGap, getLabelFor, getText, getUI, getUIClassID, getVerticalAlignment, getVerticalTextPosition, imageUpdate, paramString, setDisabledIcon, setDisplayedMnemonic, setDisplayedMnemonic, setDisplayedMnemonicIndex, setHorizontalAlignment, setHorizontalTextPosition, setIcon, setIconTextGap, setLabelFor, setUI, setVerticalAlignment, setVerticalTextPosition, updateUI
-
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, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, 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
-
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, 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, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, 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
-
clickMode
protected int clickMode
What to do on click? 0 means sequence through aspects; 1 means alternate the "lit" aspect; 2 means alternate the "held" aspect.
-
litMode
protected boolean litMode
How to handle lit vs not lit?False means ignore (always show R/Y/G/etc appearance on screen); True means show "dark" if lit is set false.
Note that setting the appearance "DARK" explicitly will show the dark icon regardless of how this is set.
-
-
Constructor Detail
-
SignalHeadIcon
public SignalHeadIcon(Editor editor)
-
-
Method Detail
-
deepClone
public 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 classPositionableIcon
- Returns:
- the copy
-
finishClone
protected Positionable finishClone(SignalHeadIcon pos)
-
setSignalHead
public void setSignalHead(NamedBeanHandle<SignalHead> sh)
Attach a SignalHead element to this display item by bean.- Parameters:
sh
- the specific SignalHead object to attach
-
setSignalHead
public void setSignalHead(java.lang.String pName)
Attach a SignalHead element to this display item by name. Taken from the Layout Editor.- Parameters:
pName
- Used as a system/user name to lookup the SignalHead object
-
getNamedSignalHead
public NamedBeanHandle<SignalHead> getNamedSignalHead()
-
getSignalHead
public SignalHead getSignalHead()
-
getNamedBean
public NamedBean getNamedBean()
Description copied from class:PositionableLabel
Provide a generic method to return the bean associated with the Positionable.- Specified by:
getNamedBean
in interfacePositionable
- Overrides:
getNamedBean
in classPositionableLabel
-
setIcon
public void setIcon(java.lang.String state, NamedIcon icon)
Place icon by its non-localized bean state name.- Parameters:
state
- the non-localized stateicon
- the icon to place
-
headState
public int headState()
Get current appearance of the head.- Returns:
- an appearance variable from a SignalHead, e.g. SignalHead.RED
-
propertyChange
public void propertyChange(java.beans.PropertyChangeEvent e)
- Specified by:
propertyChange
in interfacejava.beans.PropertyChangeListener
-
getTypeString
@Nonnull public java.lang.String getTypeString()
Description copied from interface:Positionable
Get the type of the positional as a String.- Specified by:
getTypeString
in interfacePositionable
- Overrides:
getTypeString
in classPositionableLabel
- Returns:
- the type to display
-
getNameString
@Nonnull public java.lang.String getNameString()
Description copied from interface:Positionable
Get the name of the positional as a String. This is often the display name of the NamedBean being positioned.- Specified by:
getNameString
in interfaceInlineLogixNG
- Specified by:
getNameString
in interfacePositionable
- Overrides:
getNameString
in classPositionableLabel
- Returns:
- the name to display
-
showPopUp
public boolean showPopUp(javax.swing.JPopupMenu popup)
If editable, adds custom options to the Pop-up menu. Call to a Positionable that has unique requirements - e.g. RpsPositionIcon, SecurityElementIcon- Specified by:
showPopUp
in interfacePositionable
- Overrides:
showPopUp
in classPositionableLabel
-
rotateOrthogonal
protected void rotateOrthogonal()
************* popup AbstractAction.actionPerformed method overrides ***********- Overrides:
rotateOrthogonal
in classPositionableIcon
-
setScale
public void setScale(double s)
- Specified by:
setScale
in interfacePositionable
- Overrides:
setScale
in classPositionableIcon
-
rotate
public void rotate(int deg)
- Specified by:
rotate
in interfacePositionable
- Overrides:
rotate
in classPositionableIcon
-
displayState
public void displayState(int state)
Drive the current state of the display from the state of the underlying SignalHead object.- If the signal is held, display that.
- If set to monitor the status of the lit parameter and lit is false, show the dark icon ("dark", when set as an explicit appearance, is displayed anyway)
- Show the icon corresponding to one of the (max seven) appearances.
- Overrides:
displayState
in classPositionableIcon
-
setEditItemMenu
public boolean setEditItemMenu(javax.swing.JPopupMenu popup)
Description copied from interface:Positionable
Add additional menu items to the menu.- Specified by:
setEditItemMenu
in interfacePositionable
- Overrides:
setEditItemMenu
in classPositionableLabel
- Parameters:
popup
- the menu to add the menu items to- Returns:
- true if adding items; false otherwise
-
editItem
protected void editItem()
-
updateItem
void updateItem()
-
setEditIconMenu
public boolean setEditIconMenu(javax.swing.JPopupMenu popup)
Description copied from interface:Positionable
Add additional menu items to the menu.- Specified by:
setEditIconMenu
in interfacePositionable
- Overrides:
setEditIconMenu
in classPositionableLabel
- Parameters:
popup
- the menu to add the menu items to- Returns:
- true if adding items; false otherwise
-
edit
protected void edit()
- Overrides:
edit
in classPositionableLabel
-
updateSignal
void updateSignal()
-
setClickMode
public void setClickMode(int mode)
-
getClickMode
public int getClickMode()
-
setLitMode
public void setLitMode(boolean mode)
-
getLitMode
public boolean getLitMode()
-
doMouseClicked
public void doMouseClicked(JmriMouseEvent e)
Change the SignalHead state when the icon is clicked. Note that this change may not be permanent if there is logic controlling the signal head.- Specified by:
doMouseClicked
in interfacePositionable
- Overrides:
doMouseClicked
in classPositionableLabel
-
performMouseClicked
public void performMouseClicked(JmriMouseEvent e)
Handle mouse clicks when no modifier keys are pressed. Mouse clicks with modifier keys pressed can be processed by the containing component.- Parameters:
e
- the mouse click event
-
dispose
public void dispose()
Description copied from class:PositionableLabel
Clean up when this object is no longer needed. Should not be called while the object is still displayed; see remove()- Overrides:
dispose
in classPositionableLabel
-
-