ptolemy.actor.gui
Class PtolemyEffigy

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.gui.Effigy
                          extended by ptolemy.actor.gui.PtolemyEffigy
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, Changeable, ChangeListener, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable
Direct Known Subclasses:
ConfigurationEffigy, DocBuilderEffigy, NavigableEffigy

public class PtolemyEffigy
extends Effigy
implements ChangeListener

An effigy for a Ptolemy II model. An effigy represents model metadata, and is contained by the model directory or by another effigy. This class adds to the base class an association with a Ptolemy II model. The model, strictly speaking, is any Ptolemy II object (an instance of NamedObj). The Effigy class extends CompositeEntity, so an instance of Effigy can contain entities. By convention, an effigy contains all open instances of Tableau associated with the model.

Since:
Ptolemy II 1.0
Version:
$Id: PtolemyEffigy.java 59362 2010-10-03 09:06:23Z cxh $
Author:
Steve Neuendorffer and Edward A. Lee
See Also:
Serialized Form
Accepted Rating:
Yellow (janneck)
Proposed Rating:
Green (eal)

Nested Class Summary
static class PtolemyEffigy.Factory
          A factory for creating new Ptolemy effigies.
static class PtolemyEffigy.FactoryWithoutNew
          A factory for creating new Ptolemy effigies, but without the capability of creating a new blank effigy.
 
Nested classes/interfaces inherited from class ptolemy.kernel.CompositeEntity
CompositeEntity.ContainedObjectsIterator
 
Field Summary
private  NamedObj _model
           
 
Fields inherited from class ptolemy.actor.gui.Effigy
identifier, uri
 
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
 
Constructor Summary
PtolemyEffigy(CompositeEntity container, java.lang.String name)
          Create a new effigy in the given container with the given name.
PtolemyEffigy(Workspace workspace)
          Create a new effigy in the specified workspace with an empty string for its name.
 
Method Summary
protected  void _checkContainer(CompositeEntity container)
          Check that the specified container is of a suitable class for this entity, i.e., ModelDirectory or PtolemyEffigy.
 void changeExecuted(ChangeRequest change)
          React to the fact that a change has been successfully executed.
 void changeFailed(ChangeRequest change, java.lang.Exception exception)
          React to the fact that a change has triggered an error by reporting the error in a top-level dialog.
 java.lang.Object clone(Workspace workspace)
          Clone the object into the specified workspace.
 NamedObj getModel()
          Return the ptolemy model that this is an effigy of.
 Effigy masterEffigy()
          Return the effigy that is "in charge" of this effigy.
 void setModel(NamedObj model)
          Set the ptolemy model that this is an effigy of.
 void writeFile(java.io.File file)
          Write the model associated with this effigy to the specified file in MoML format.
 
Methods inherited from class ptolemy.actor.gui.Effigy
_removeEntity, attributeChanged, closeTableaux, getTableauFactory, getWritableFile, isModifiable, isModified, isSystemEffigy, numberOfOpenTableaux, setContainer, setModifiable, setModified, setSystemEffigy, setTableauFactory, showTableaux, topEffigy
 
Methods inherited from class ptolemy.kernel.CompositeEntity
_addEntity, _addRelation, _adjustDeferrals, _deepOpaqueEntityList, _description, _exportMoMLContents, _finishedAddEntity, _recordDecoratedAttributes, _removeRelation, _validateSettables, allAtomicEntityList, allCompositeEntityList, allowLevelCrossingConnect, classDefinitionList, connect, connect, containedObjectsIterator, deepEntityList, deepGetEntities, deepOpaqueEntityList, deepRelationSet, entityList, entityList, exportLinks, exportMoML, getAttribute, getEntities, getEntity, getPort, getRelation, getRelations, isAtomic, isOpaque, lazyAllAtomicEntityList, lazyAllCompositeEntityList, lazyClassDefinitionList, lazyDeepEntityList, lazyEntityList, lazyRelationList, newRelation, numberOfEntities, numberOfRelations, numEntities, numRelations, relationList, removeAllEntities, removeAllRelations, setClassDefinition, statistics, uniqueName
 
Methods inherited from class ptolemy.kernel.ComponentEntity
_addPort, _checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, newPort, propagateExistence, setName
 
Methods inherited from class ptolemy.kernel.Entity
_removePort, connectedPortList, connectedPorts, connectionsChanged, 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, 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, requestChange, 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.kernel.util.Derivable
getDerivedLevel, getDerivedList, propagateValue
 
Methods inherited from interface ptolemy.kernel.util.Nameable
description, getDisplayName, getFullName, getName, getName
 

Field Detail

_model

private NamedObj _model
Constructor Detail

PtolemyEffigy

public PtolemyEffigy(Workspace workspace)
Create a new effigy in the specified workspace with an empty string for its name.

Parameters:
workspace - The workspace for this effigy.

PtolemyEffigy

public PtolemyEffigy(CompositeEntity container,
                     java.lang.String name)
              throws IllegalActionException,
                     NameDuplicationException
Create a new effigy in the given container with the given name.

Parameters:
container - The container that contains this effigy.
name - The name of this effigy.
Throws:
IllegalActionException - If the entity cannot be contained by the proposed container.
NameDuplicationException - If the name coincides with an entity already in the container.
Method Detail

changeExecuted

public void changeExecuted(ChangeRequest change)
React to the fact that a change has been successfully executed. This method does nothing.

Specified by:
changeExecuted in interface ChangeListener
Parameters:
change - The change that has been executed.

changeFailed

public void changeFailed(ChangeRequest change,
                         java.lang.Exception exception)
React to the fact that a change has triggered an error by reporting the error in a top-level dialog.

Specified by:
changeFailed in interface ChangeListener
Parameters:
change - The change that was attempted.
exception - The exception that resulted.

clone

public java.lang.Object clone(Workspace workspace)
                       throws java.lang.CloneNotSupportedException
Clone the object into the specified workspace. This calls the base class and then clones the associated model into a new workspace, if there is one.

Overrides:
clone in class CompositeEntity
Parameters:
workspace - The workspace for the new effigy.
Returns:
A new effigy.
Throws:
java.lang.CloneNotSupportedException - If a derived class contains an attribute that cannot be cloned.
See Also:
NamedObj.exportMoML(Writer, int, String), NamedObj.setDeferringChangeRequests(boolean)

getModel

public NamedObj getModel()
Return the ptolemy model that this is an effigy of.

Returns:
The model, or null if none has been set.
See Also:
setModel(NamedObj)

masterEffigy

public Effigy masterEffigy()
Return the effigy that is "in charge" of this effigy. In this base class, this returns the effigy associated with the top-level of the associated model. If there is no model, or it has no effigy, then delegate to the base class.

Overrides:
masterEffigy in class Effigy
Returns:
The effigy associated with the top-level of the model.
See Also:
Effigy.topEffigy()

setModel

public void setModel(NamedObj model)
Set the ptolemy model that this is an effigy of. Register with that model as a change listener.

Parameters:
model - The model.
See Also:
getModel()

writeFile

public void writeFile(java.io.File file)
               throws java.io.IOException
Write the model associated with this effigy to the specified file in MoML format. Change the name of the model to match the file name, up to its first period.

Overrides:
writeFile in class Effigy
Parameters:
file - The file to write to.
Throws:
java.io.IOException - If the write fails.

_checkContainer

protected void _checkContainer(CompositeEntity container)
                        throws IllegalActionException
Check that the specified container is of a suitable class for this entity, i.e., ModelDirectory or PtolemyEffigy.

Overrides:
_checkContainer in class Effigy
Parameters:
container - The proposed container.
Throws:
IllegalActionException - If the container is not of an acceptable class.