Class LayoutTurntableView

java.lang.Object
jmri.jmrit.display.layoutEditor.LayoutTrackView
jmri.jmrit.display.layoutEditor.LayoutTurntableView
All Implemented Interfaces:
InlineLogixNG

MVC View component for the LayoutTurntable class.
  • Field Details

  • Constructor Details

  • Method Details

    • getTurntable

      public final LayoutTurntable getTurntable()
    • toString

      public String toString()
      Get a string that represents this object. This should only be used for debugging.
      Overrides:
      toString in class Object
      Returns:
      the string
    • getRadius

      public double getRadius()
      Get the radius for this turntable.
      Returns:
      the radius for this turntable
    • setRadius

      public void setRadius(double r)
      Set the radius for this turntable.
      Parameters:
      r - the radius for this turntable
    • getBlockName

      Returns:
      the layout block name
    • getLayoutBlock

      Returns:
      the layout block
    • setLayoutBlock

      public void setLayoutBlock(@CheckForNull LayoutBlock newLayoutBlock)
      Set up a LayoutBlock for this LayoutTurntable.
      Parameters:
      newLayoutBlock - the LayoutBlock to set
    • setLayoutBlockByName

      Set up a LayoutBlock for this LayoutTurntable.
      Parameters:
      name - the name of the new LayoutBlock
    • getBounds

      Specified by:
      getBounds in class LayoutTrackView
      Returns:
      the bounds of this turntable.
    • addRay

      public LayoutTurntable.RayTrack addRay(double angle)
      Add a ray at the specified angle.
      Parameters:
      angle - the angle
      Returns:
      the RayTrack
    • getRayConnectIndexed

      public TrackSegment getRayConnectIndexed(int index)
      Get the connection for the ray with this index.
      Parameters:
      index - the index
      Returns:
      the connection for the ray with this value of getConnectionIndex
    • getRayConnectOrdered

      Get the connection for the ray at the index in the rayTrackList.
      Parameters:
      i - the index in the rayTrackList
      Returns:
      the connection for the ray at that index in the rayTrackList or null
    • setRayConnect

      public void setRayConnect(TrackSegment ts, int index)
      Set the connection for the ray at the index in the rayTrackList.
      Parameters:
      ts - the connection
      index - the index in the rayTrackList
    • getRayTrackList

    • getNumberRays

      public int getNumberRays()
      Get the number of rays on turntable.
      Returns:
      the number of rays
    • getRayIndex

      public int getRayIndex(int i)
      Get the index for the ray at this position in the rayTrackList.
      Parameters:
      i - the position in the rayTrackList
      Returns:
      the index
    • getRayAngle

      public double getRayAngle(int i)
      Get the angle for the ray at this position in the rayTrackList.
      Parameters:
      i - the position in the rayTrackList
      Returns:
      the angle
    • setRayTurnout

      public void setRayTurnout(int index, String turnoutName, int state)
      Set the turnout and state for the ray with this index.
      Parameters:
      index - the index
      turnoutName - the turnout name
      state - the state
    • getRayTurnoutName

      public String getRayTurnoutName(int i)
      Get the name of the turnout for the ray at this index.
      Parameters:
      i - the index
      Returns:
      name of the turnout for the ray at this index
    • getRayTurnout

      public Turnout getRayTurnout(int i)
      Get the turnout for the ray at this index.
      Parameters:
      i - the index
      Returns:
      the turnout for the ray at this index
    • getRayTurnoutState

      public int getRayTurnoutState(int i)
      Get the state of the turnout for the ray at this index.
      Parameters:
      i - the index
      Returns:
      state of the turnout for the ray at this index
    • isRayDisabled

      public boolean isRayDisabled(int i)
      Get if the ray at this index is disabled.
      Parameters:
      i - the index
      Returns:
      true if disabled
    • setRayDisabled

      public void setRayDisabled(int i, boolean boo)
      Set the disabled state of the ray at this index.
      Parameters:
      i - the index
      boo - the state
    • isRayDisabledWhenOccupied

      public boolean isRayDisabledWhenOccupied(int i)
      Get the disabled when occupied state of the ray at this index.
      Parameters:
      i - the index
      Returns:
      the state
    • setRayDisabledWhenOccupied

      public void setRayDisabledWhenOccupied(int i, boolean boo)
      Set the disabled when occupied state of the ray at this index.
      Parameters:
      i - the index
      boo - the state
    • getRayCoordsIndexed

      public Point2D getRayCoordsIndexed(int index)
      Get the coordinates for the ray with this index.
      Parameters:
      index - the index
      Returns:
      the coordinates
    • getRayCoordsOrdered

      public Point2D getRayCoordsOrdered(int i)
      Get the coordinates for the ray at this index.
      Parameters:
      i - the index; zero point returned if this is out of range
      Returns:
      the coordinates
    • setRayCoordsIndexed

      public void setRayCoordsIndexed(double x, double y, int index)
      Set the coordinates for the ray at this index.
      Parameters:
      x - the x coordinates
      y - the y coordinates
      index - the index
    • setRayCoordsIndexed

      public void setRayCoordsIndexed(Point2D point, int index)
      Set the coordinates for the ray at this index.
      Parameters:
      point - the new coordinates
      index - the index
    • getCoordsForConnectionType

      Get the coordinates for a specified connection type.
      Specified by:
      getCoordsForConnectionType in class LayoutTrackView
      Parameters:
      connectionType - the connection type
      Returns:
      the coordinates
    • getConnection

      public LayoutTrack getConnection(HitPointType connectionType) throws JmriException
      get the LayoutTrack connected at the specified connection type
      Specified by:
      getConnection in class LayoutTrackView
      Parameters:
      connectionType - where on us to get the connection
      Returns:
      the LayoutTrack connected at the specified connection type
      Throws:
      JmriException - - if the connectionType is invalid
    • setConnection

      public void setConnection(HitPointType connectionType, LayoutTrack o, HitPointType type) throws JmriException
      set the LayoutTrack connected at the specified connection type
      Specified by:
      setConnection in class LayoutTrackView
      Parameters:
      connectionType - where on us to set the connection
      o - the LayoutTrack that is to be connected
      type - where on the LayoutTrack we are connected
      Throws:
      JmriException - - if connectionType or type are invalid
    • isMainlineIndexed

      public boolean isMainlineIndexed(int index)
      Test if ray with this index is a mainline track or not.

      Defaults to false (not mainline) if connecting track segment is missing.

      Parameters:
      index - the index
      Returns:
      true if connecting track segment is mainline
    • isMainlineOrdered

      public boolean isMainlineOrdered(int i)
      Test if ray at this index is a mainline track or not.

      Defaults to false (not mainline) if connecting track segment is missing

      Parameters:
      i - the index
      Returns:
      true if connecting track segment is mainline
    • scaleCoords

      public void scaleCoords(double xFactor, double yFactor)
      Scale this LayoutTrack's coordinates by the x and y factors.
      Specified by:
      scaleCoords in class LayoutTrackView
      Parameters:
      xFactor - the amount to scale X coordinates
      yFactor - the amount to scale Y coordinates
    • translateCoords

      public void translateCoords(double xFactor, double yFactor)
      Translate (2D move) this LayoutTrack's coordinates by the x and y factors.
      Specified by:
      translateCoords in class LayoutTrackView
      Parameters:
      xFactor - the amount to translate X coordinates
      yFactor - the amount to translate Y coordinates
    • rotateCoords

      public void rotateCoords(double angleDEG)
      rotate this LayoutTrack's coordinates by angleDEG's
      Specified by:
      rotateCoords in class LayoutTrackView
      Parameters:
      angleDEG - the amount to rotate in degrees
    • findHitPointType

      protected HitPointType findHitPointType(Point2D hitPoint, boolean useRectangles, boolean requireUnconnected)
      find the hit (location) type for a point
      Specified by:
      findHitPointType in class LayoutTrackView
      Parameters:
      hitPoint - the point
      useRectangles - whether to use (larger) rectangles or (smaller) circles for hit testing
      requireUnconnected - whether to only return hit types for free connections
      Returns:
      the location type for the point (or NONE)
    • isTurnoutControlled

      public boolean isTurnoutControlled()
      Is this turntable turnout controlled?
      Returns:
      true if so
    • setTurnoutControlled

      public void setTurnoutControlled(boolean boo)
      Set if this turntable is turnout controlled.
      Parameters:
      boo - set true if so
    • showPopup

      show the popup menu for this layout track
      Specified by:
      showPopup in class LayoutTrackView
      Parameters:
      mouseEvent - the mouse down event that triggered this popup
      Returns:
      the popup menu for this layout track
    • showRayPopUp

      protected void showRayPopUp(JmriMouseEvent e, int index)
    • setPosition

      public void setPosition(int index)
      Set turntable position to the ray with this index.
      Parameters:
      index - the index
    • getPosition

      public int getPosition()
      Get the turntable position.
      Returns:
      the turntable position
    • deleteRay

      public void deleteRay(LayoutTurntable.RayTrack rayTrack)
      Delete this ray track.
      Parameters:
      rayTrack - the ray track
    • dispose

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

      public void remove()
      Remove this object from display and persistance.
    • isActive

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

      protected void drawDecorations(Graphics2D g2)
      Draw track decorations. This type of track has none, so this method is empty.
      Specified by:
      drawDecorations in class LayoutTrackView
      Parameters:
      g2 - the graphics context
    • draw1

      protected void draw1(Graphics2D g2, boolean isMain, boolean isBlock)
      draw one line (Ballast, ties, center or 3rd rail, block lines)
      Specified by:
      draw1 in class LayoutTrackView
      Parameters:
      g2 - the graphics context
      isMain - true if drawing mainlines
      isBlock - true if drawing block lines
    • draw2

      protected void draw2(Graphics2D g2, boolean isMain, float railDisplacement)
      draw two lines (rails)
      Specified by:
      draw2 in class LayoutTrackView
      Parameters:
      g2 - the graphics context
      isMain - true if drawing mainlines
      railDisplacement - the offset from center to draw the lines
    • highlightUnconnected

      protected void highlightUnconnected(Graphics2D g2, HitPointType specificType)
      highlight unconnected connections
      Specified by:
      highlightUnconnected in class LayoutTrackView
      Parameters:
      g2 - the graphics context
      specificType - the specific connection to draw (or NONE for all)
    • drawTurnoutControls

      protected void drawTurnoutControls(Graphics2D g2)
      Draw this turntable's controls.
      Specified by:
      drawTurnoutControls in class LayoutTrackView
      Parameters:
      g2 - the graphics port to draw to
    • drawEditControls

      protected void drawEditControls(Graphics2D g2)
      Draw this turntable's edit controls.
      Specified by:
      drawEditControls in class LayoutTrackView
      Parameters:
      g2 - the graphics port to draw to
    • reCheckBlockBoundary

      protected void reCheckBlockBoundary()
      abstract method... subclasses should implement _IF_ they need to recheck their block boundaries
      Specified by:
      reCheckBlockBoundary in class LayoutTrackView
    • getLayoutConnectivity

      get the layout connectivity for this track
      Specified by:
      getLayoutConnectivity in class LayoutTrackView
      Returns:
      the list of Layout Connectivity objects
    • checkForFreeConnections

      return a list of the available connections for this layout track
      Specified by:
      checkForFreeConnections in class LayoutTrackView
      Returns:
      the list of available connections
    • checkForUnAssignedBlocks

      public boolean checkForUnAssignedBlocks()
      determine if all the appropriate blocks have been assigned to this track
      Specified by:
      checkForUnAssignedBlocks in class LayoutTrackView
      Returns:
      true if all appropriate blocks have been assigned
    • checkForNonContiguousBlocks

      public void checkForNonContiguousBlocks(@Nonnull HashMap<String,List<Set<String>>> blockNamesToTrackNameSetsMap)
      check this track and its neighbors for non-contiguous blocks

      For each (non-null) blocks of this track do: #1) If it's got an entry in the blockNamesToTrackNameSetMap then #2) If this track is not in one of the TrackNameSets for this block #3) add a new set (with this block/track) to blockNamesToTrackNameSetMap and #4) check all the connections in this block (by calling the 2nd method below)

      Basically, we're maintaining contiguous track sets for each block found (in blockNamesToTrackNameSetMap)

      Specified by:
      checkForNonContiguousBlocks in class LayoutTrackView
      Parameters:
      blockNamesToTrackNameSetsMap - hashmap of key:block names to lists of track name sets for those blocks
    • collectContiguousTracksNamesInBlockNamed

      recursive routine to check for all contiguous tracks in this blockName
      Specified by:
      collectContiguousTracksNamesInBlockNamed in class LayoutTrackView
      Parameters:
      blockName - the block that we're checking for
      TrackNameSet - the set of track names in this block
    • setAllLayoutBlocks

      public void setAllLayoutBlocks(LayoutBlock layoutBlock)
      Assign all the layout blocks in this track
      Specified by:
      setAllLayoutBlocks in class LayoutTrackView
      Parameters:
      layoutBlock - to this layout block (used by the Tools menu's "Assign block to selection" item)
    • canRemove

      public boolean canRemove()
      Check for active block boundaries.

      If any connection point of a layout track object has attached objects, such as signal masts, signal heads or NX sensors, the layout track object cannot be deleted.

      Specified by:
      canRemove in class LayoutTrackView
      Returns:
      true if the layout track object can be deleted.