jmri.jmrit.display.layoutEditor
Class LayoutTurnout

java.lang.Object
  extended by jmri.jmrit.display.layoutEditor.LayoutTurnout

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.

Author:
Dave Duchamp Copyright (c) 2004-2007

Field Summary
 String blockBName
           
 String blockCName
           
 String blockDName
           
 String blockName
           
 Point2D center
           
 Object connectA
           
 String connectAName
           
 Object connectB
           
 String connectBName
           
 Object connectC
           
 String connectCName
           
 Object connectD
           
 String connectDName
           
 int continuingSense
           
 boolean disabled
           
 boolean disableWhenOccupied
           
 Point2D dispB
           
 Point2D dispC
           
static int DOUBLE_XOVER
           
static int FIRST_3_WAY
           
 String ident
           
static int LH_TURNOUT
           
static int LH_XOVER
           
 String linkedTurnoutName
           
 int linkType
           
static int NO_LINK
           
static int RH_TURNOUT
           
static int RH_XOVER
           
static int SECOND_3_WAY
           
 String signalA1Name
           
 String signalA2Name
           
 String signalA3Name
           
 String signalAMast
           
 String signalB1Name
           
 String signalB2Name
           
 String signalBMast
           
 String signalC1Name
           
 String signalC2Name
           
 String signalCMast
           
 String signalD1Name
           
 String signalD2Name
           
 String signalDMast
           
 String tBlockBName
           
 String tBlockCName
           
 String tBlockDName
           
 String tBlockName
           
static int THROAT_TO_THROAT
           
 String tTurnoutName
           
 String turnoutName
           
 int type
           
static int WYE_TURNOUT
           
 
Constructor Summary
LayoutTurnout(String id, int t, Point2D c, double rot, double xFactor, double yFactor, LayoutEditor myPanel)
          constructor method
 
Method Summary
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()
           
 LayoutBlock getLayoutBlock()
           
 LayoutBlock getLayoutBlockB()
           
 LayoutBlock getLayoutBlockC()
           
 LayoutBlock getLayoutBlockD()
           
 String getLinkedTurnoutName()
           
 int getLinkType()
           
 String getName()
          Accessor methods
 String getSensorA()
           
 String getSensorB()
           
 String getSensorC()
           
 String getSensorD()
           
 String getSignalA1Name()
           
 String getSignalA2Name()
           
 String getSignalA3Name()
           
 String getSignalAMast()
           
 String getSignalB1Name()
           
 String getSignalB2Name()
           
 String getSignalBMast()
           
 String getSignalC1Name()
           
 String getSignalC2Name()
           
 String getSignalCMast()
           
 String getSignalD1Name()
           
 String getSignalD2Name()
           
 String getSignalDMast()
           
 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 scaleCoords(float xFactor, float yFactor)
           
 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 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 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)
          Display popup menu for information and editing
 void toggleTurnout()
          Toggle turnout if clicked on, physical turnout exists, and not disabled
 boolean useBlockSpeed()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

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

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

ident

public String ident

turnoutName

public String turnoutName

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

signalAMast

public String signalAMast

signalBMast

public String signalBMast

signalCMast

public String signalCMast

signalDMast

public String signalDMast

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
Constructor Detail

LayoutTurnout

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

Method Detail

getName

public String getName()
Accessor methods


useBlockSpeed

public boolean useBlockSpeed()

getTurnoutName

public String getTurnoutName()

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)

getSignalAMast

public String getSignalAMast()

setSignalAMast

public void setSignalAMast(String signalMast)

getSignalBMast

public String getSignalBMast()

setSignalBMast

public void setSignalBMast(String signalMast)

getSignalCMast

public String getSignalCMast()

setSignalCMast

public void setSignalCMast(String signalMast)

getSignalDMast

public String getSignalDMast()

setSignalDMast

public void setSignalDMast(String signalMast)

getSensorA

public String getSensorA()

setSensorA

public void setSensorA(String sensorName)

getSensorB

public String getSensorB()

setSensorB

public void setSensorB(String sensorName)

getSensorC

public String getSensorC()

setSensorC

public void setSensorC(String sensorName)

getSensorD

public String 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)

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)
Display popup menu for information and editing


getBlockBoundaries

public String[] getBlockBoundaries()

editLayoutTurnout

protected void editLayoutTurnout()
Edit a Layout Turnout


isActive

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



Copyright © 1997 - 2011 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