Class LayoutTurntableView

    • Method Detail

      • toString

        public java.lang.String toString()
        Get a string that represents this object. This should only be used for debugging.
        Overrides:
        toString in class java.lang.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
      • setLayoutBlock

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

        public void setLayoutBlockByName​(@CheckForNull
                                         java.lang.String name)
        Set up a LayoutBlock for this LayoutTurntable.
        Parameters:
        name - the name of the new LayoutBlock
      • 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

        public TrackSegment getRayConnectOrdered​(int i)
        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
      • 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,
                                  java.lang.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 java.lang.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 java.awt.geom.Point2D getRayCoordsIndexed​(int index)
        Get the coordinates for the ray with this index.
        Parameters:
        index - the index
        Returns:
        the coordinates
      • getRayCoordsOrdered

        public java.awt.geom.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​(java.awt.geom.Point2D point,
                                        int index)
        Set the coordinates for the ray at this index.
        Parameters:
        point - the new coordinates
        index - the index
      • 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​(java.awt.geom.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

        @Nonnull
        protected javax.swing.JPopupMenu showPopup​(@Nonnull
                                                   JmriMouseEvent mouseEvent)
        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
      • 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
      • 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​(java.awt.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​(java.awt.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​(java.awt.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
      • checkForNonContiguousBlocks

        public void checkForNonContiguousBlocks​(@Nonnull
                                                java.util.HashMap<java.lang.String,​java.util.List<java.util.Set<java.lang.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
      • 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.