jmri.jmrit.display.layoutEditor
Class LayoutTurnout

Show UML class diagram
java.lang.Object
  extended by jmri.jmrit.display.layoutEditor.LayoutTurnout
Direct Known Subclasses:
LayoutSlip

public class LayoutTurnout
extends Object

A LayoutTurnout corresponds to a turnout on the layout. A LayoutTurnout is an extension of the standard Turnout object with drawing and connectivity information added.

Six types are supported: right-hand, left-hand, wye, double crossover, right-handed single crossover, and left-handed single crossover. Note that double-slip turnouts can be handled as two turnouts, throat to throat, and three-way turnouts can be handles as two turnouts, left-hand and right-hand, arranged throat to continuing route.

A LayoutTurnout has three or four connection points, designated A, B, C, and D. For right-handed or left-handed turnouts, A corresponds to the throat. At the crossing, A-B (and C-D for crossovers) is a straight segment (continuing route). A-C (and B-D for crossovers) is the diverging route. B-C (and A-D for crossovers) is an illegal condition.

A LayoutTurnout carries Block information. For right-handed, left-handed, and wye turnouts, the entire turnout is in one block,however, a block border may occur at any connection (A,B,C,D). For a double crossover turnout, up to four blocks may be assigned, one for each connection point, but if only one block is assigned, that block applies to the entire turnout.

For drawing purposes, each LayoutTurnout carries a center point and displacements for B and C. For right-handed or left-handed turnouts, the displacement for A = - the displacement for B, and the center point is at the junction of the diverging route and the straight through continuing route. For double crossovers, the center point is at the center of the turnout, and the displacement for A = - the displacement for C and the displacement for D = - the displacement for B. The center point and these displacements may be adjusted by the user when in edit mode. For double crossovers, AB and BC are constrained to remain perpendicular. For single crossovers, AB and CD are constrained to remain parallel, and AC and BD are constrained to remain parallel.

When LayoutTurnouts are first created, a rotation (degrees) is provided. For 0.0 rotation, the turnout lies on the east-west line with A facing east. Rotations are performed in a clockwise direction.

When LayoutTurnouts are first created, there are no connections. Block information and connections may be added when available.

When a LayoutTurnout is first created, it is enabled for control of an assigned actual turnout. Clicking on the turnout center point will toggle the turnout. This can be disabled via the popup menu.

Signal Head names are saved here to keep track of where signals are. LayoutTurnout only serves as a storage place for signal head names. The names are placed here by tools, e.g., Set Signals at Turnout, and Set Signals at Double Crossover.

A LayoutTurnout may be linked to another LayoutTurnout to form a turnout pair. Throat-To-Throat Turnouts - Two turnouts connected closely at their throats, so closely that signals are not appropriate at the their throats. This is the situation when two RH, LH, or WYE turnouts are used to model a double slip. 3-Way Turnout - Two turnouts modeling a 3-way turnout, where the throat of the second turnout is closely connected to the continuing track of the first turnout. The throat will have three heads, or one head. A link is required to be able to correctly interpret the use of signal heads.


Field Summary
(package private)  boolean active
           
protected  LayoutBlock block
           
 String blockBName
           
 String blockCName
           
 String blockDName
           
 String blockName
           
protected  JTextField blockNameField
           
 Point2D center
           
 Object connectA
           
 String connectAName
           
 Object connectB
           
 String connectBName
           
 Object connectC
           
 String connectCName
           
 Object connectD
           
 String connectDName
           
 int continuingSense
           
 boolean disabled
           
(package private)  JCheckBoxMenuItem disableItem
           
 boolean disableWhenOccupied
           
(package private)  JCheckBoxMenuItem disableWhenOccupiedItem
           
 Point2D dispB
           
 Point2D dispC
           
static int DOUBLE_SLIP
           
static int DOUBLE_XOVER
           
(package private)  ArrayList<JMenuItem> editAdditionalMenu
           
protected  JmriJFrame editLayoutTurnoutFrame
           
static int FIRST_3_WAY
           
 String ident
           
protected  LayoutTurnout instance
           
protected  LayoutEditor layoutEditor
           
static int LH_TURNOUT
           
static int LH_XOVER
           
 String linkedTurnoutName
           
 int linkType
           
(package private) static org.slf4j.Logger log
           
protected  NamedBeanHandle<Turnout> namedTurnout
           
protected  boolean needRedraw
           
protected  boolean needsBlockUpdate
           
static int NO_LINK
           
(package private)  JPopupMenu popup
           
(package private)  ResourceBundle rb
           
static int RH_TURNOUT
           
static int RH_XOVER
           
static int SECOND_3_WAY
           
protected  NamedBeanHandle<Turnout> secondNamedTurnout
           
 String secondTurnoutName
           
protected  NamedBeanHandle<Sensor> sensorANamed
           
protected  NamedBeanHandle<Sensor> sensorBNamed
           
protected  NamedBeanHandle<Sensor> sensorCNamed
           
protected  NamedBeanHandle<Sensor> sensorDNamed
           
 String signalA1Name
           
 String signalA2Name
           
 String signalA3Name
           
protected  NamedBeanHandle<SignalMast> signalAMastNamed
           
 String signalB1Name
           
 String signalB2Name
           
protected  NamedBeanHandle<SignalMast> signalBMastNamed
           
 String signalC1Name
           
 String signalC2Name
           
protected  NamedBeanHandle<SignalMast> signalCMastNamed
           
 String signalD1Name
           
 String signalD2Name
           
protected  NamedBeanHandle<SignalMast> signalDMastNamed
           
static int SINGLE_SLIP
           
 String tBlockBName
           
 String tBlockCName
           
 String tBlockDName
           
 String tBlockName
           
static int THROAT_TO_THROAT
           
(package private)  LayoutEditorTools tools
           
 String tSecondTurnoutName
           
 String tTurnoutName
           
 String turnoutName
           
 int type
           
(package private)  ArrayList<JMenuItem> viewAdditionalMenu
           
static int WYE_TURNOUT
           
 
Constructor Summary
protected LayoutTurnout()
           
  LayoutTurnout(String id, int t, Point2D c, double rot, double xFactor, double yFactor, LayoutEditor myPanel)
          constructor method
 
Method Summary
 void addEditPopUpMenu(JMenuItem menu)
           
 void addViewPopUpMenu(JMenuItem menu)
           
(package private)  void dispose()
          Clean up when this object is no longer needed.
protected  void editLayoutTurnout()
          Edit a Layout Turnout
 String getBlockBName()
           
 String[] getBlockBoundaries()
           
 String getBlockCName()
           
 String getBlockDName()
           
 String getBlockName()
           
 Object getConnectA()
           
 Object getConnectB()
           
 Object getConnectC()
           
 Object getConnectD()
           
 int getContinuingSense()
           
 Point2D getCoordsA()
           
 Point2D getCoordsB()
           
 Point2D getCoordsC()
           
 Point2D getCoordsCenter()
           
 Point2D getCoordsD()
           
 boolean getHidden()
           
 LayoutBlock getLayoutBlock()
           
 LayoutBlock getLayoutBlockB()
           
 LayoutBlock getLayoutBlockC()
           
 LayoutBlock getLayoutBlockD()
           
 String getLinkedTurnoutName()
           
 int getLinkType()
           
 String getName()
          Accessor methods
 ArrayList<LayoutBlock> getProtectedBlocks(NamedBean bean)
           
 Turnout getSecondTurnout()
           
 String getSecondTurnoutName()
           
 Sensor getSensorA()
           
 String getSensorAName()
           
 Sensor getSensorB()
           
 String getSensorBName()
           
 Sensor getSensorC()
           
 String getSensorCName()
           
 Sensor getSensorD()
           
 String getSensorDName()
           
 String getSignalA1Name()
           
 String getSignalA2Name()
           
 String getSignalA3Name()
           
 SignalMast getSignalAMast()
           
 String getSignalAMastName()
           
 String getSignalB1Name()
           
 String getSignalB2Name()
           
 SignalMast getSignalBMast()
           
 String getSignalBMastName()
           
 String getSignalC1Name()
           
 String getSignalC2Name()
           
 SignalMast getSignalCMast()
           
 String getSignalCMastName()
           
 String getSignalD1Name()
           
 String getSignalD2Name()
           
 SignalMast getSignalDMast()
           
 String getSignalDMastName()
           
 Turnout getTurnout()
           
 String getTurnoutName()
           
 int getTurnoutType()
           
 boolean isActive()
          "active" means that the object is still displayed, and should be stored.
 boolean isDisabled()
           
 boolean isDisabledWhenOccupied()
           
 boolean isMainlineA()
          Methods to test if turnout legs are mainline track or not Returns true if connecting track segment is mainline Defaults to not mainline if connecting track segment is missing
 boolean isMainlineB()
           
 boolean isMainlineC()
           
 boolean isMainlineD()
           
 void reCheckBlockBoundary()
           
(package private)  void remove()
          Removes this object from display and persistance
protected  void removeSML(SignalMast signalMast)
           
protected  void rotateCoords(double rot)
           
 void scaleCoords(float xFactor, float yFactor)
           
 void setAdditionalEditPopUpMenu(JPopupMenu popup)
           
 void setAdditionalViewPopUpMenu(JPopupMenu popup)
           
 void setConnectA(Object o, int type)
           
 void setConnectB(Object o, int type)
           
 void setConnectC(Object o, int type)
           
 void setConnectD(Object o, int type)
           
 void setContinuingSense(int sense)
           
 void setCoordsA(Point2D p)
           
 void setCoordsB(Point2D p)
           
 void setCoordsC(Point2D p)
           
 void setCoordsCenter(Point2D p)
          Modify coordinates methods
 void setCoordsD(Point2D p)
           
 void setDisabled(boolean state)
           
 void setDisableWhenOccupied(boolean state)
           
 void setHidden(boolean hide)
           
 void setLayoutBlock(LayoutBlock b)
          Set Up a Layout Block(s) for this Turnout
 void setLayoutBlockB(LayoutBlock b)
           
 void setLayoutBlockBByName(String name)
           
 void setLayoutBlockByName(String name)
           
 void setLayoutBlockC(LayoutBlock b)
           
 void setLayoutBlockCByName(String name)
           
 void setLayoutBlockD(LayoutBlock b)
           
 void setLayoutBlockDByName(String name)
           
 void setLinkedTurnoutName(String s)
           
 void setLinkType(int type)
           
 void setObjects(LayoutEditor p)
          Initialization method The above variables are initialized by PositionablePointXml, then the following method is called after the entire LayoutEditor is loaded to set the specific TrackSegment objects.
 void setSecondTurnout(String tName)
           
 void setSensorA(String sensorName)
           
 void setSensorB(String sensorName)
           
 void setSensorC(String sensorName)
           
 void setSensorD(String sensorName)
           
 void setSignalA1Name(String signalName)
           
 void setSignalA2Name(String signalName)
           
 void setSignalA3Name(String signalName)
           
 void setSignalAMast(String signalMast)
           
 void setSignalB1Name(String signalName)
           
 void setSignalB2Name(String signalName)
           
 void setSignalBMast(String signalMast)
           
 void setSignalC1Name(String signalName)
           
 void setSignalC2Name(String signalName)
           
 void setSignalCMast(String signalMast)
           
 void setSignalD1Name(String signalName)
           
 void setSignalD2Name(String signalName)
           
 void setSignalDMast(String signalMast)
           
 void setTurnout(String tName)
           
protected  void showPopUp(MouseEvent e, boolean editable)
          Display popup menu for information and editing
 void toggleTurnout()
          Toggle turnout if clicked on, physical turnout exists, and not disabled
(package private)  void turnoutEditBlockBPressed(ActionEvent a)
           
(package private)  void turnoutEditBlockCPressed(ActionEvent a)
           
(package private)  void turnoutEditBlockDPressed(ActionEvent a)
           
(package private)  void turnoutEditBlockPressed(ActionEvent a)
           
(package private)  void turnoutEditCancelPressed(ActionEvent a)
           
(package private)  void turnoutEditDonePressed(ActionEvent a)
           
 boolean useBlockSpeed()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

rb

ResourceBundle rb

RH_TURNOUT

public static final int RH_TURNOUT
See Also:
Constant Field Values

LH_TURNOUT

public static final int LH_TURNOUT
See Also:
Constant Field Values

WYE_TURNOUT

public static final int WYE_TURNOUT
See Also:
Constant Field Values

DOUBLE_XOVER

public static final int DOUBLE_XOVER
See Also:
Constant Field Values

RH_XOVER

public static final int RH_XOVER
See Also:
Constant Field Values

LH_XOVER

public static final int LH_XOVER
See Also:
Constant Field Values

SINGLE_SLIP

public static final int SINGLE_SLIP
See Also:
Constant Field Values

DOUBLE_SLIP

public static final int DOUBLE_SLIP
See Also:
Constant Field Values

NO_LINK

public static final int NO_LINK
See Also:
Constant Field Values

FIRST_3_WAY

public static final int FIRST_3_WAY
See Also:
Constant Field Values

SECOND_3_WAY

public static final int SECOND_3_WAY
See Also:
Constant Field Values

THROAT_TO_THROAT

public static final int THROAT_TO_THROAT
See Also:
Constant Field Values

namedTurnout

protected NamedBeanHandle<Turnout> namedTurnout

secondNamedTurnout

protected NamedBeanHandle<Turnout> secondNamedTurnout

block

protected LayoutBlock block

instance

protected LayoutTurnout instance

layoutEditor

protected LayoutEditor layoutEditor

ident

public String ident

turnoutName

public String turnoutName

secondTurnoutName

public String secondTurnoutName

blockName

public String blockName

blockBName

public String blockBName

blockCName

public String blockCName

blockDName

public String blockDName

signalA1Name

public String signalA1Name

signalA2Name

public String signalA2Name

signalA3Name

public String signalA3Name

signalB1Name

public String signalB1Name

signalB2Name

public String signalB2Name

signalC1Name

public String signalC1Name

signalC2Name

public String signalC2Name

signalD1Name

public String signalD1Name

signalD2Name

public String signalD2Name

signalAMastNamed

protected NamedBeanHandle<SignalMast> signalAMastNamed

signalBMastNamed

protected NamedBeanHandle<SignalMast> signalBMastNamed

signalCMastNamed

protected NamedBeanHandle<SignalMast> signalCMastNamed

signalDMastNamed

protected NamedBeanHandle<SignalMast> signalDMastNamed

sensorANamed

protected NamedBeanHandle<Sensor> sensorANamed

sensorBNamed

protected NamedBeanHandle<Sensor> sensorBNamed

sensorCNamed

protected NamedBeanHandle<Sensor> sensorCNamed

sensorDNamed

protected NamedBeanHandle<Sensor> sensorDNamed

type

public int type

connectA

public Object connectA

connectB

public Object connectB

connectC

public Object connectC

connectD

public Object connectD

continuingSense

public int continuingSense

disabled

public boolean disabled

disableWhenOccupied

public boolean disableWhenOccupied

center

public Point2D center

dispB

public Point2D dispB

dispC

public Point2D dispC

linkedTurnoutName

public String linkedTurnoutName

linkType

public int linkType

connectAName

public String connectAName

connectBName

public String connectBName

connectCName

public String connectCName

connectDName

public String connectDName

tBlockName

public String tBlockName

tBlockBName

public String tBlockBName

tBlockCName

public String tBlockCName

tBlockDName

public String tBlockDName

tTurnoutName

public String tTurnoutName

tSecondTurnoutName

public String tSecondTurnoutName

popup

JPopupMenu popup

disableItem

JCheckBoxMenuItem disableItem

disableWhenOccupiedItem

JCheckBoxMenuItem disableWhenOccupiedItem

tools

LayoutEditorTools tools

editLayoutTurnoutFrame

protected JmriJFrame editLayoutTurnoutFrame

blockNameField

protected JTextField blockNameField

needRedraw

protected boolean needRedraw

needsBlockUpdate

protected boolean needsBlockUpdate

active

boolean active

editAdditionalMenu

ArrayList<JMenuItem> editAdditionalMenu

viewAdditionalMenu

ArrayList<JMenuItem> viewAdditionalMenu

log

static org.slf4j.Logger log
Constructor Detail

LayoutTurnout

protected LayoutTurnout()

LayoutTurnout

public LayoutTurnout(String id,
                     int t,
                     Point2D c,
                     double rot,
                     double xFactor,
                     double yFactor,
                     LayoutEditor myPanel)
constructor method

Method Detail

rotateCoords

protected void rotateCoords(double rot)

getName

public String getName()
Accessor methods


useBlockSpeed

public boolean useBlockSpeed()

getTurnoutName

public String getTurnoutName()

getSecondTurnoutName

public String getSecondTurnoutName()

getHidden

public boolean getHidden()

setHidden

public void setHidden(boolean hide)

getBlockName

public String getBlockName()

getBlockBName

public String getBlockBName()

getBlockCName

public String getBlockCName()

getBlockDName

public String getBlockDName()

getSignalA1Name

public String getSignalA1Name()

setSignalA1Name

public void setSignalA1Name(String signalName)

getSignalA2Name

public String getSignalA2Name()

setSignalA2Name

public void setSignalA2Name(String signalName)

getSignalA3Name

public String getSignalA3Name()

setSignalA3Name

public void setSignalA3Name(String signalName)

getSignalB1Name

public String getSignalB1Name()

setSignalB1Name

public void setSignalB1Name(String signalName)

getSignalB2Name

public String getSignalB2Name()

setSignalB2Name

public void setSignalB2Name(String signalName)

getSignalC1Name

public String getSignalC1Name()

setSignalC1Name

public void setSignalC1Name(String signalName)

getSignalC2Name

public String getSignalC2Name()

setSignalC2Name

public void setSignalC2Name(String signalName)

getSignalD1Name

public String getSignalD1Name()

setSignalD1Name

public void setSignalD1Name(String signalName)

getSignalD2Name

public String getSignalD2Name()

setSignalD2Name

public void setSignalD2Name(String signalName)

getSignalAMastName

public String getSignalAMastName()

getSignalAMast

public SignalMast getSignalAMast()

setSignalAMast

public void setSignalAMast(String signalMast)

getSignalBMastName

public String getSignalBMastName()

getSignalBMast

public SignalMast getSignalBMast()

setSignalBMast

public void setSignalBMast(String signalMast)

getSignalCMastName

public String getSignalCMastName()

getSignalCMast

public SignalMast getSignalCMast()

setSignalCMast

public void setSignalCMast(String signalMast)

getSignalDMastName

public String getSignalDMastName()

getSignalDMast

public SignalMast getSignalDMast()

setSignalDMast

public void setSignalDMast(String signalMast)

getSensorAName

public String getSensorAName()

getSensorA

public Sensor getSensorA()

setSensorA

public void setSensorA(String sensorName)

getSensorBName

public String getSensorBName()

getSensorB

public Sensor getSensorB()

setSensorB

public void setSensorB(String sensorName)

getSensorCName

public String getSensorCName()

getSensorC

public Sensor getSensorC()

setSensorC

public void setSensorC(String sensorName)

getSensorDName

public String getSensorDName()

getSensorD

public Sensor getSensorD()

setSensorD

public void setSensorD(String sensorName)

getLinkedTurnoutName

public String getLinkedTurnoutName()

setLinkedTurnoutName

public void setLinkedTurnoutName(String s)

getLinkType

public int getLinkType()

setLinkType

public void setLinkType(int type)

getTurnoutType

public int getTurnoutType()

getConnectA

public Object getConnectA()

getConnectB

public Object getConnectB()

getConnectC

public Object getConnectC()

getConnectD

public Object getConnectD()

getTurnout

public Turnout getTurnout()

getContinuingSense

public int getContinuingSense()

setTurnout

public void setTurnout(String tName)

getSecondTurnout

public Turnout getSecondTurnout()

setSecondTurnout

public void setSecondTurnout(String tName)

setContinuingSense

public void setContinuingSense(int sense)

setDisabled

public void setDisabled(boolean state)

isDisabled

public boolean isDisabled()

setDisableWhenOccupied

public void setDisableWhenOccupied(boolean state)

isDisabledWhenOccupied

public boolean isDisabledWhenOccupied()

setConnectA

public void setConnectA(Object o,
                        int type)

setConnectB

public void setConnectB(Object o,
                        int type)

setConnectC

public void setConnectC(Object o,
                        int type)

setConnectD

public void setConnectD(Object o,
                        int type)

getLayoutBlock

public LayoutBlock getLayoutBlock()

getLayoutBlockB

public LayoutBlock getLayoutBlockB()

getLayoutBlockC

public LayoutBlock getLayoutBlockC()

getLayoutBlockD

public LayoutBlock getLayoutBlockD()

getCoordsCenter

public Point2D getCoordsCenter()

getCoordsA

public Point2D getCoordsA()

getCoordsB

public Point2D getCoordsB()

getCoordsC

public Point2D getCoordsC()

getCoordsD

public Point2D getCoordsD()

setLayoutBlock

public void setLayoutBlock(LayoutBlock b)
Set Up a Layout Block(s) for this Turnout


setLayoutBlockB

public void setLayoutBlockB(LayoutBlock b)

setLayoutBlockC

public void setLayoutBlockC(LayoutBlock b)

setLayoutBlockD

public void setLayoutBlockD(LayoutBlock b)

setLayoutBlockByName

public void setLayoutBlockByName(String name)

setLayoutBlockBByName

public void setLayoutBlockBByName(String name)

setLayoutBlockCByName

public void setLayoutBlockCByName(String name)

setLayoutBlockDByName

public void setLayoutBlockDByName(String name)

isMainlineA

public boolean isMainlineA()
Methods to test if turnout legs are mainline track or not Returns true if connecting track segment is mainline Defaults to not mainline if connecting track segment is missing


isMainlineB

public boolean isMainlineB()

isMainlineC

public boolean isMainlineC()

isMainlineD

public boolean isMainlineD()

setCoordsCenter

public void setCoordsCenter(Point2D p)
Modify coordinates methods


setCoordsA

public void setCoordsA(Point2D p)

setCoordsB

public void setCoordsB(Point2D p)

setCoordsC

public void setCoordsC(Point2D p)

setCoordsD

public void setCoordsD(Point2D p)

scaleCoords

public void scaleCoords(float xFactor,
                        float yFactor)

toggleTurnout

public void toggleTurnout()
Toggle turnout if clicked on, physical turnout exists, and not disabled


setObjects

public void setObjects(LayoutEditor p)
Initialization method The above variables are initialized by PositionablePointXml, then the following method is called after the entire LayoutEditor is loaded to set the specific TrackSegment objects.


showPopUp

protected void showPopUp(MouseEvent e,
                         boolean editable)
Display popup menu for information and editing


getBlockBoundaries

public String[] getBlockBoundaries()

editLayoutTurnout

protected void editLayoutTurnout()
Edit a Layout Turnout


turnoutEditBlockPressed

void turnoutEditBlockPressed(ActionEvent a)

turnoutEditBlockBPressed

void turnoutEditBlockBPressed(ActionEvent a)

turnoutEditBlockCPressed

void turnoutEditBlockCPressed(ActionEvent a)

turnoutEditBlockDPressed

void turnoutEditBlockDPressed(ActionEvent a)

turnoutEditDonePressed

void turnoutEditDonePressed(ActionEvent a)

turnoutEditCancelPressed

void turnoutEditCancelPressed(ActionEvent a)

reCheckBlockBoundary

public void reCheckBlockBoundary()

getProtectedBlocks

public ArrayList<LayoutBlock> getProtectedBlocks(NamedBean bean)

removeSML

protected void removeSML(SignalMast signalMast)

dispose

void dispose()
Clean up when this object is no longer needed. Should not be called while the object is still displayed; see remove()


remove

void remove()
Removes this object from display and persistance


isActive

public boolean isActive()
"active" means that the object is still displayed, and should be stored.


addEditPopUpMenu

public void addEditPopUpMenu(JMenuItem menu)

addViewPopUpMenu

public void addViewPopUpMenu(JMenuItem menu)

setAdditionalEditPopUpMenu

public void setAdditionalEditPopUpMenu(JPopupMenu popup)

setAdditionalViewPopUpMenu

public void setAdditionalViewPopUpMenu(JPopupMenu popup)


Copyright © 1997-2013 JMRI Community.
JMRI, DecoderPro, PanelPro, SoundPro, DispatcherPro and associated logos are our trademarks.

Additional information on copyright, trademarks and licenses is linked here.
Site hosted by: Get JMRI Model Railroad Interface at SourceForge.net. Fast, secure and Free Open Source software downloads