Class TransitionRefinementPort

  • All Implemented Interfaces:
    java.lang.Cloneable, HasTypeConstraints, Typeable, Changeable, Debuggable, DebugListener, Derivable, ModelErrorHandler, MoMLExportable, Moveable, Nameable

    public class TransitionRefinementPort
    extends RefinementPort
    A port for transition refinements in modal models. This port mirrors certain changes to it in the ports of the container of the container. That container in turn mirrors those changes in other refinements and/or controllers.

    For output ports, this class creates a sibling "input" port. The sibling port is normally treated like any other port but mirrors changes via it's output sibling. This is so that TransitionRefinement instances can get the outputs from the State refinements without having the port be an input/output. This sibling port is labeled as "port_in" where port is the name of the corresponding output port.

    Since:
    Ptolemy II 8.0
    Version:
    $Id$
    Author:
    David Hermann, Research In Motion Limited
    See Also:
    ModalPort, TransitionRefinement
    Pt.AcceptedRating:
    Red (liuxj)
    Pt.ProposedRating:
    Red (eal)
    • Field Detail

      • _hasSibling

        protected boolean _hasSibling
        Flag indicating if this port has a sibling. This flag should be set to true for all output ports and their associated input port siblings.
    • Constructor Detail

      • TransitionRefinementPort

        public TransitionRefinementPort​(ComponentEntity container,
                                        java.lang.String name)
                                 throws IllegalActionException,
                                        NameDuplicationException
        Construct a port with a containing actor and a name that is neither an input nor an output. The specified container must implement the TypedActor interface, or an exception will be thrown.
        Parameters:
        container - The container actor.
        name - The name of the port.
        Throws:
        IllegalActionException - If the port is not of an acceptable class for the container, or if the container does not implement the TypedActor interface.
        NameDuplicationException - If the name coincides with a port already in the container.
    • Method Detail

      • link

        public void link​(Relation relation)
                  throws IllegalActionException
        Override the base class to avoid linking a sibling input port to the same relation as the sibling output port multiple times.
        Overrides:
        link in class RefinementPort
        Parameters:
        relation - The relation to link to.
        Throws:
        IllegalActionException - If the link crosses levels of the hierarchy, or the port has no container, or the relation is not an instance of IORelation.
      • setInput

        public void setInput​(boolean isInput)
                      throws IllegalActionException
        If the argument is true, make the port an input port. If the argument is false, make the port not an input port. This method overrides the base class to make the same change on the mirror ports in the controller and state refinments. This method invalidates the schedule and resolved types of the director of the container, if there is one. It is write-synchronized on the workspace, and increments the version of the workspace.
        Overrides:
        setInput in class RefinementPort
        Parameters:
        isInput - True to make the port an input.
        Throws:
        IllegalActionException - If changing the port status is not permitted.
      • setMultiport

        public void setMultiport​(boolean isMultiport)
                          throws IllegalActionException
        If the argument is true, make the port a multiport. If the argument is false, make the port not a multiport. This method overrides the base class to make the same change on the mirror ports in the controller and state refinments. This method invalidates the schedule and resolved types of the director of the container, if there is one. It is write-synchronized on the workspace, and increments the version of the workspace.
        Overrides:
        setMultiport in class RefinementPort
        Parameters:
        isMultiport - True to make the port a multiport.
        Throws:
        IllegalActionException - If changing the port status is not permitted.
      • setOutput

        public void setOutput​(boolean isOutput)
                       throws IllegalActionException
        If the argument is true, make the port an output port. If the argument is false, make the port not an output port. In addition, if the container is an instance of Refinement, and the argument is true, find the corresponding port of the controller and make it an input and not an output. This makes it possible for the controller to see the outputs of the refinements. This method overrides the base class to make the same change on the mirror ports in the controller and state refinments. This method invalidates the schedule and resolved types of the director of the container, if there is one. It is write-synchronized on the workspace, and increments the version of the workspace.
        Overrides:
        setOutput in class RefinementPort
        Parameters:
        isOutput - True to make the port an output.
        Throws:
        IllegalActionException - If changing the port status is not permitted.