ptolemy.actor.gt.controller
Class DesignPatternImporter

java.lang.Object
  extended by ptolemy.kernel.util.NamedObj
      extended by ptolemy.kernel.util.Attribute
          extended by ptolemy.actor.gt.controller.DesignPatternImporter
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, GTAttribute, Changeable, Debuggable, DebugListener, Derivable, ModelErrorHandler, MoMLExportable, Moveable, Nameable, ValueListener

public class DesignPatternImporter
extends Attribute
implements GTAttribute, ValueListener

An attribute that specifies the location of a design pattern and populates the container with that design pattern automatically. This attribute has the same effect of importing a design pattern into the current model with the menu item in the File menu of the Ptolemy environment, but it automatically imports the specified design pattern and does not require the model user to manually import it.

Since:
Ptolemy II 8.0
Version:
$Id: DesignPatternImporter.java 57040 2010-01-27 20:52:32Z cxh $
Author:
Thomas Huining Feng
See Also:
Serialized Form
Accepted Rating:
Red (tfeng)
Proposed Rating:
Yellow (tfeng)

Nested Class Summary
private  class DesignPatternImporter.MoMLContentFilter
          A moml filter that sets each created object to be non-persistent.
 
Nested classes/interfaces inherited from class ptolemy.kernel.util.NamedObj
NamedObj.ContainedObjectsIterator
 
Field Summary
private  UndoStackAttribute _lastUndoStack
          The last undo stack.
private  java.util.HashMap<java.lang.String,Token> _lastValues
          The last values of the parameters to this importer, used to test whether attributes are changed and whether the container needs to be updated.
 FileParameter designPatternFile
          The design pattern file.
 
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
DesignPatternImporter(NamedObj container, java.lang.String name)
          Construct an attribute with the given name contained by the specified entity.
 
Method Summary
 void attributeChanged(Settable settable)
          Update the design pattern.
 void setContainer(NamedObj container)
          Set the container of this importer, and update the new container if it is not null.
 void update()
          Update the container of this importer with the design pattern.
 void valueChanged(Settable settable)
          React to change of an attribute and update the container of this importer.
 
Methods inherited from class ptolemy.kernel.util.Attribute
_checkContainer, _getContainedObject, _propagateExistence, clone, getContainer, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, setName, updateContent
 
Methods inherited from class ptolemy.kernel.util.NamedObj
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _debug, _debug, _debug, _debug, _debug, _description, _exportMoMLContents, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _propagateValue, _recordDecoratedAttributes, _removeAttribute, _splitName, _stripNumericSuffix, _validateSettables, addChangeListener, addDebugListener, attributeChanged, attributeList, attributeList, attributeTypeChanged, clone, containedObjectsIterator, deepContains, depthInHierarchy, description, description, event, executeChangeRequests, exportMoML, exportMoML, exportMoML, exportMoML, exportMoML, exportMoMLPlain, getAttribute, getAttribute, getAttributes, getChangeListeners, getClassName, getDecoratorAttribute, getDecoratorAttributes, getDerivedLevel, getDerivedList, getDisplayName, getElementName, getFullName, getModelErrorHandler, getName, getName, getPrototypeList, getSource, handleModelError, isDeferringChangeRequests, isOverridden, isPersistent, lazyContainedObjectsIterator, message, propagateExistence, propagateValue, propagateValues, removeChangeListener, removeDebugListener, requestChange, setClassName, setDeferringChangeRequests, setDerivedLevel, setDisplayName, setModelErrorHandler, setPersistent, setSource, sortContainedObjects, toplevel, toString, uniqueName, validateSettables, workspace
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

designPatternFile

public FileParameter designPatternFile
The design pattern file.


_lastUndoStack

private UndoStackAttribute _lastUndoStack
The last undo stack.


_lastValues

private java.util.HashMap<java.lang.String,Token> _lastValues
The last values of the parameters to this importer, used to test whether attributes are changed and whether the container needs to be updated.

Constructor Detail

DesignPatternImporter

public DesignPatternImporter(NamedObj container,
                             java.lang.String name)
                      throws IllegalActionException,
                             NameDuplicationException
Construct an attribute with the given name contained by the specified entity. The container argument must not be null, or a NullPointerException will be thrown. This attribute will use the workspace of the container for synchronization and version counts. If the name argument is null, then the name is set to the empty string. Increment the version of the workspace.

Parameters:
container - The container.
name - The name of this attribute.
Throws:
IllegalActionException - If the attribute is not of an acceptable class for the container, or if the name contains a period.
NameDuplicationException - If the name coincides with an attribute already in the container.
Method Detail

attributeChanged

public void attributeChanged(Settable settable)
Update the design pattern.

Parameters:
settable - The attribute changed.

setContainer

public void setContainer(NamedObj container)
                  throws IllegalActionException,
                         NameDuplicationException
Set the container of this importer, and update the new container if it is not null.

Overrides:
setContainer in class Attribute
Parameters:
container - The new container.
Throws:
IllegalActionException - If thrown by the superclass.
NameDuplicationException - If thrown by the superclass.
See Also:
Attribute.getContainer()

update

public void update()
Update the container of this importer with the design pattern. If a design pattern is previously added to the container, the importer first tries to undo the importation before importing the new design pattern.


valueChanged

public void valueChanged(Settable settable)
React to change of an attribute and update the container of this importer.

Specified by:
valueChanged in interface ValueListener
Parameters:
settable - The attribute changed.