ptolemy.domains.modal.modal
Class Refinement

java.lang.Object
  extended by ptolemy.kernel.util.NamedObj
      extended by ptolemy.kernel.InstantiableNamedObj
          extended by ptolemy.kernel.Entity
              extended by ptolemy.kernel.ComponentEntity
                  extended by ptolemy.kernel.CompositeEntity
                      extended by ptolemy.actor.CompositeActor
                          extended by ptolemy.actor.TypedCompositeActor
                              extended by ptolemy.domains.modal.modal.Refinement
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, TypedActor, RefinementActor, Suspendable, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable
Direct Known Subclasses:
TransitionRefinement

public class Refinement
extends TypedCompositeActor
implements RefinementActor, Suspendable

This typed composite actor supports mirroring of its ports in its container (which is required to be a ModalModel), which in turn assures mirroring of ports in each of the refinements and the controller. Refinements fulfills the CTStepSizeControlActor interface so that it can be used to construct hybrid systems using the CT domain. Refinements also fulfills the CTEventGenerator interface so that they can report events generated inside.

Since:
Ptolemy II 8.0
Version:
$Id: Refinement.java 57046 2010-01-27 23:35:53Z cxh $
Author:
Edward A. Lee
See Also:
Serialized Form
Accepted Rating:
Red (reviewmoderator)
Proposed Rating:
Red (eal)

Nested Class Summary
 
Nested classes/interfaces inherited from class ptolemy.kernel.CompositeEntity
CompositeEntity.ContainedObjectsIterator
 
Field Summary
private  Time _accumulatedSuspendTime
          Accumulated time that this actor has been suspended since initialize().
private  Time _lastSuspendTime
          The environment time when this refinement was last suspended (that is, the enclosing state was exited).
protected  boolean _mirrorDisable
          Indicator that we are processing a newPort request.
 
Fields inherited from class ptolemy.actor.CompositeActor
_actorFiringListeners, _causalityInterface, _initializables, _notifyingActorFiring, _publishedPorts, _publisherRelations, _stopRequested
 
Fields inherited from class ptolemy.kernel.CompositeEntity
_levelCrossingLinks
 
Fields inherited from class ptolemy.kernel.util.NamedObj
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS
 
Fields inherited from interface ptolemy.actor.Executable
COMPLETED, NOT_READY, STOP_ITERATING
 
Constructor Summary
Refinement(CompositeEntity container, java.lang.String name)
          Construct a modal controller with a name and a container.
 
Method Summary
protected  void _checkContainer(Entity container)
          Override the base class to ensure that the proposed container is a ModalModel or null.
 Time accumulatedSuspendTime()
          Return the accumulated time that the actor has been suspended since the last call to initialize(), or null if it has never been suspended.
 void addRefinement(State state, java.lang.String name, Entity template, java.lang.String className, Configuration configuration)
          Perform no action but throw an IllegalActionException because a refinement cannot be created in an arbitrary actor-oriented refinement.
 State getRefinedState()
          Get the state in any ModalController within this ModalModel that has this refinement as its refinement, if any.
 void initialize()
          Initialize this actor.
 Port newPort(java.lang.String name)
          Create a new port with the specified name in the container of this refinement, which in turn creates a port in this refinement all other refinements, and the controller.
 void resume(Time time)
          Resume the actor at the specified time.
 void setMirrorDisable(int disable)
          Control whether adding a port should be mirrored in the modal model and the mode controller.
 void suspend(Time time)
          Suspend the actor at the specified time.
 
Methods inherited from class ptolemy.actor.TypedCompositeActor
_addEntity, _addPort, _addRelation, _checkTypesFromTo, _typeConstraintsFromTo, newRelation, resolveTypes, typeConstraintList, typeConstraints
 
Methods inherited from class ptolemy.actor.CompositeActor
_actorFiring, _actorFiring, _finishedAddEntity, _getPublishedPort, _setDirector, addActorFiringListener, addInitializable, addPiggyback, clone, connectionsChanged, createReceivers, createSchedule, fire, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inferringWidths, inferWidths, inputPortList, isFireFunctional, isOpaque, isStrict, iterate, linkToPublishedPort, linkToPublishedPort, needsWidthInference, newInsideReceiver, newReceiver, notifyConnectivityChange, outputPortList, postfire, prefire, preinitialize, recordFiring, registerPublisherPort, removeActorFiringListener, removeInitializable, removePiggyback, requestChange, setContainer, setDirector, setManager, stop, stopFire, terminate, unlinkToPublishedPort, unlinkToPublishedPort, unregisterPublisherPort, wrapup
 
Methods inherited from class ptolemy.kernel.CompositeEntity
_adjustDeferrals, _deepOpaqueEntityList, _description, _exportMoMLContents, _recordDecoratedAttributes, _removeEntity, _removeRelation, _validateSettables, allAtomicEntityList, allCompositeEntityList, allowLevelCrossingConnect, classDefinitionList, connect, connect, containedObjectsIterator, deepEntityList, deepGetEntities, deepOpaqueEntityList, deepRelationSet, entityList, entityList, exportLinks, exportMoML, getAttribute, getEntities, getEntity, getPort, getRelation, getRelations, isAtomic, lazyAllAtomicEntityList, lazyAllCompositeEntityList, lazyClassDefinitionList, lazyDeepEntityList, lazyEntityList, lazyRelationList, numberOfEntities, numberOfRelations, numEntities, numRelations, relationList, removeAllEntities, removeAllRelations, setClassDefinition, statistics, uniqueName
 
Methods inherited from class ptolemy.kernel.ComponentEntity
_checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, propagateExistence, setName
 
Methods inherited from class ptolemy.kernel.Entity
_removePort, connectedPortList, connectedPorts, getPorts, linkedRelationList, linkedRelations, portList, removeAllPorts
 
Methods inherited from class ptolemy.kernel.InstantiableNamedObj
_setParent, getChildren, getElementName, getParent, getPrototypeList, isClassDefinition, isWithinClassDefinition
 
Methods inherited from class ptolemy.kernel.util.NamedObj
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _debug, _debug, _debug, _debug, _debug, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _propagateValue, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, attributeChanged, attributeList, attributeList, attributeTypeChanged, clone, deepContains, depthInHierarchy, description, description, event, executeChangeRequests, exportMoML, exportMoML, exportMoML, exportMoML, exportMoMLPlain, getAttribute, getAttributes, getChangeListeners, getClassName, getDecoratorAttribute, getDecoratorAttributes, getDerivedLevel, getDerivedList, getDisplayName, getFullName, getModelErrorHandler, getName, getName, getSource, handleModelError, isDeferringChangeRequests, isOverridden, isPersistent, lazyContainedObjectsIterator, message, propagateValue, propagateValues, removeChangeListener, removeDebugListener, setClassName, setDeferringChangeRequests, setDerivedLevel, setDisplayName, setModelErrorHandler, setPersistent, setSource, sortContainedObjects, toplevel, toString, validateSettables, workspace
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface ptolemy.actor.TypedActor
typeConstraints
 
Methods inherited from interface ptolemy.actor.Actor
createReceivers, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, newReceiver, outputPortList
 
Methods inherited from interface ptolemy.actor.Executable
fire, isFireFunctional, isStrict, iterate, postfire, prefire, stop, stopFire, terminate
 
Methods inherited from interface ptolemy.actor.Initializable
addInitializable, preinitialize, removeInitializable, wrapup
 
Methods inherited from interface ptolemy.kernel.util.Nameable
description, getContainer, getDisplayName, getFullName, getName, getName, setName
 
Methods inherited from interface ptolemy.kernel.util.Derivable
getDerivedLevel, getDerivedList, propagateValue
 

Field Detail

_mirrorDisable

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


_accumulatedSuspendTime

private Time _accumulatedSuspendTime
Accumulated time that this actor has been suspended since initialize().


_lastSuspendTime

private Time _lastSuspendTime
The environment time when this refinement was last suspended (that is, the enclosing state was exited). This is null if the actor has not been suspended since initialize() or resume() has been called more recently than suspend().

Constructor Detail

Refinement

public Refinement(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.
Method Detail

accumulatedSuspendTime

public Time accumulatedSuspendTime()
Return the accumulated time that the actor has been suspended since the last call to initialize(), or null if it has never been suspended.

Specified by:
accumulatedSuspendTime in interface Suspendable
Returns:
The total time between calls to suspend and subsequent calls to resume, or null if the actor has not been suspended.

addRefinement

public void addRefinement(State state,
                          java.lang.String name,
                          Entity template,
                          java.lang.String className,
                          Configuration configuration)
                   throws IllegalActionException
Perform no action but throw an IllegalActionException because a refinement cannot be created in an arbitrary actor-oriented refinement.

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.
configuration - The 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.

getRefinedState

public State getRefinedState()
                      throws IllegalActionException
Get the state in any ModalController within this ModalModel that has this refinement as its refinement, if any. Return null if no such state is found.

Specified by:
getRefinedState in interface RefinementActor
Returns:
The state with this refinement 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.

initialize

public void initialize()
                throws IllegalActionException
Initialize this actor. If this actor is opaque, invoke the initialize() method of its local director. Set the accumulated suspend time to zero.

Specified by:
initialize in interface Initializable
Overrides:
initialize in class CompositeActor
Throws:
IllegalActionException - If there is no director, or if the director's initialize() method throws it, or if the actor is not opaque.

newPort

public Port newPort(java.lang.String name)
             throws NameDuplicationException
Create a new port with the specified name in the container of this refinement, which in turn creates a port in this refinement all other refinements, and the controller. This method is write-synchronized on the workspace.

Overrides:
newPort in class TypedCompositeActor
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.

resume

public void resume(Time time)
            throws IllegalActionException
Resume the actor at the specified time. If the actor has not been suspended since the last call to initialize(), then this has no effect. If this actor has a director that implements Suspendable, then this method is also delegated to it.

Specified by:
resume in interface Suspendable
Parameters:
time - The time at which the actor is resumed.
Throws:
IllegalActionException - If the resume cannot be completed.

suspend

public void suspend(Time time)
             throws IllegalActionException
Suspend the actor at the specified time. If the actor is already suspended, then it remains suspended but the accumulated suspend time is incremented by the time since it was last suspended. If the actor contains a director that implements Suspendable, then its suspend() method is also called.

Specified by:
suspend in interface Suspendable
Parameters:
time - The time at which the actor is suspended.
Throws:
IllegalActionException - If the suspend cannot be completed.

setMirrorDisable

public void setMirrorDisable(int disable)
Control whether adding a port should be mirrored in the modal model and the mode controller. 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.

_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.