Class ModalController

    • Field Detail

      • _mirrorDisable

        protected boolean _mirrorDisable
        Indicator that we are processing a newPort request.
    • Constructor Detail

      • ModalController

        public ModalController​(CompositeEntity container,
                               java.lang.String name)
                        throws IllegalActionException,
                               NameDuplicationException
        Construct a modal controller with a name and a container. The container argument must not be null, or a NullPointerException will be thrown.
        Parameters:
        container - The container.
        name - The name of this actor.
        Throws:
        IllegalActionException - If the container is incompatible with this actor.
        NameDuplicationException - If the name coincides with an actor already in the container.
      • ModalController

        public ModalController​(Workspace workspace)
        Construct a modal controller in the specified workspace with no container and an empty string as a name. You can then change the name with setName(). If the workspace argument is null, then use the default workspace.
        Parameters:
        workspace - The workspace that will list the actor.
    • Method Detail

      • addRefinement

        public void addRefinement​(State state,
                                  java.lang.String name,
                                  Entity template,
                                  java.lang.String className,
                                  InstanceOpener instanceOpener)
                           throws IllegalActionException
        Create a refinement for the given state.
        Specified by:
        addRefinement in interface RefinementActor
        Parameters:
        state - The state that will contain the new refinement.
        name - The name of the composite entity that stores the refinement.
        template - The template used to create the refinement, or null if template is not used.
        className - The class name for the refinement, which is used when template is null.
        instanceOpener - The instanceOpener, typically a Configuration, that is used to open the refinement (as a look-inside action) after it is created, or null if it is not needed to open the refinement.
        Throws:
        IllegalActionException - If error occurs while creating the refinement.
      • dropObject

        public void dropObject​(NamedObj target,
                               java.util.List dropObjects,
                               java.lang.String moml)
                        throws IllegalActionException
        React to a list of objects being dropped onto a target.
        Specified by:
        dropObject in interface DropTargetHandler
        Parameters:
        target - The target on which the objects are dropped.
        dropObjects - The list of objects dropped onto the target.
        moml - The moml string generated for the dropped objects.
        Throws:
        IllegalActionException - If the handling is unsuccessful.
      • getRefinedState

        public State getRefinedState()
                              throws IllegalActionException
        Get the state in any ModalController within this ModalModel that has this ModalController as its refinement, if any. Return null if no such state is found.
        Specified by:
        getRefinedState in interface RefinementActor
        Returns:
        The state with this ModalController as its refinement, or null.
        Throws:
        IllegalActionException - If the specified refinement cannot be found in a state, or if a comma-separated list is malformed.
      • newPort

        public Port newPort​(java.lang.String name)
                     throws NameDuplicationException
        Create a new port with the specified name in the container of this controller, which in turn creates a port in this controller and all the refinements. This method is write-synchronized on the workspace.
        Overrides:
        newPort in class FSMActor
        Parameters:
        name - The name to assign to the newly created port.
        Returns:
        The new port.
        Throws:
        NameDuplicationException - If the entity already has a port with the specified name.
      • setMirrorDisable

        public void setMirrorDisable​(int disable)
        Control whether adding a port should be mirrored in the modal model and refinements. This is added to allow control by the UI.
        Specified by:
        setMirrorDisable in interface RefinementActor
        Parameters:
        disable - 0 if mirroring should occur, -1 if mirroring should not occur downwards in the hierarchy, 1 if mirroring should not occur upwards in the hierarchy.
      • _addPort

        protected void _addPort​(Port port)
                         throws IllegalActionException,
                                NameDuplicationException
        Override the base class to check that the container contains a mirror port. If it does not, then this port is being added by copy and paste or some other mechanism that has bypassed the newPort() method. Such mechanisms do not properly mirror the port in the containing ModalModel.
        Overrides:
        _addPort in class Entity
        Parameters:
        port - The port to add to this entity.
        Throws:
        IllegalActionException - If the port is not being added by the enclosing ModalModel.
        NameDuplicationException - If the port name collides with a name already in the entity.
      • _checkContainer

        protected void _checkContainer​(Entity container)
                                throws IllegalActionException
        Override the base class to ensure that the proposed container is a ModalModel or null.
        Parameters:
        container - The proposed container.
        Throws:
        IllegalActionException - If the proposed container is not a TypedActor, or if the base class throws it.
      • _getRefinementClasses

        protected java.util.TreeMap<java.lang.Class<? extends Entity>,​java.lang.String> _getRefinementClasses()
        Return a map from the classes of the entities to be dropped into a state and the class names of the refinements that can be used to contain those entities.
        Returns:
        The map.