Package ptolemy.moml
Class MoMLModelAttribute
- java.lang.Object
-
- ptolemy.kernel.util.NamedObj
-
- ptolemy.kernel.util.Attribute
-
- ptolemy.moml.MoMLModelAttribute
-
- All Implemented Interfaces:
java.lang.Cloneable
,Changeable
,Configurable
,Debuggable
,DebugListener
,Derivable
,ModelErrorHandler
,MoMLExportable
,Moveable
,Nameable
- Direct Known Subclasses:
ExceptionManager
,OntologySolverBase
public class MoMLModelAttribute extends Attribute implements Configurable
An attribute that has a model described in MoML. The MoML is specified by callingconfigure(URL, String, String)
, or by including the MoML within <configure> tags in a MoML file. The MoML is returned by thegetConfigureText()
method. ThegetContainedModel()
method returns the model specified by the MoML.When an instance of this attribute is exported to MoML, the MoML description above will be included in the exported MoML within <configure> tags.
An instance of this attribute may wish to override the default "Look Inside" behavior by including an instance of ptolemy.vergil.toolbox.MoMLModelAttributeControllerFactory as an attribute contained by this instance. Instead of having an explicit compile-time dependency between this class and MoMLModelAttributeControllerFactory, derived classes should use MoML to set up the containment relationship. For example,
<property name="MyAttribute" class="ptolemy.moml.MoMLModelAttribute"> <property name="_controllerFactory" class="ptolemy.vergil.toolbox.MoMLModelAttributeControllerFactory"> </property> <configure> ... my MoML text here ... </configure> </property>
- Since:
- Ptolemy II 8.0
- Version:
- $Id$
- Author:
- Dai Bui, Edward Lee, Ben Lickly, Charles Shelton
- Pt.AcceptedRating:
- Red (tfeng)
- Pt.ProposedRating:
- Red (tfeng)
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class ptolemy.kernel.util.NamedObj
NamedObj.ContainedObjectsIterator
-
-
Field Summary
Fields Modifier and Type Field Description protected NamedObj
_model
The contained model.FileParameter
modelURL
URL from which to get the model.-
Fields inherited from class ptolemy.kernel.util.NamedObj
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _deferChangeRequests, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS
-
-
Constructor Summary
Constructors Constructor Description MoMLModelAttribute(NamedObj container, java.lang.String name)
Create a model attribute with the specified container and name.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
_exportMoMLContents(java.io.Writer output, int depth)
Write a MoML description this object, which includes a MoML description of the contained model within the <configure> tag.void
attributeChanged(Attribute attribute)
React to a change in an attribute.java.lang.Object
clone(Workspace workspace)
Return a clone of this model attribute.void
configure(java.net.URL base, java.lang.String source, java.lang.String text)
Construct and configure the contained model with the specified source and text.java.lang.String
getConfigureSource()
Return the input source that was specified the last time the configure method was called.java.lang.String
getConfigureText()
Return the MoML description of the model, if there is one, and null otherwise.NamedObj
getContainedModel()
Return the contained model.-
Methods inherited from class ptolemy.kernel.util.Attribute
_checkContainer, _getContainedObject, _propagateExistence, getContainer, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, setContainer, setName, updateContent
-
Methods inherited from class ptolemy.kernel.util.NamedObj
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _containedDecorators, _copyChangeRequestList, _debug, _debug, _debug, _debug, _debug, _description, _executeChangeRequests, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _notifyHierarchyListenersAfterChange, _notifyHierarchyListenersBeforeChange, _propagateValue, _removeAttribute, _splitName, _stripNumericSuffix, _validateSettables, addChangeListener, addDebugListener, addHierarchyListener, attributeDeleted, attributeList, attributeList, attributeTypeChanged, clone, containedObjectsIterator, decorators, 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, notifyOfNameChange, propagateExistence, propagateValue, propagateValues, removeAttribute, removeChangeListener, removeDebugListener, removeHierarchyListener, requestChange, setClassName, setDeferringChangeRequests, setDerivedLevel, setDisplayName, setModelErrorHandler, setPersistent, setSource, sortContainedObjects, toplevel, toString, uniqueName, validateSettables, workspace
-
-
-
-
Field Detail
-
modelURL
public FileParameter modelURL
URL from which to get the model. If this is specified, then the URL will be referenced in the exported configure tag rather than including the MoML for the model in the configure tag. This parameter is a string that defaults to empty. This string can either be an absolute, fully-qualified URL, or a URL relative to the container model's file location. A URL relative to the system's classpath can also be specified by a string starting with$CLASSPATH/{relative URL}
.
-
_model
protected NamedObj _model
The contained model. This is protected so that derived classes can provide a default model.
-
-
Constructor Detail
-
MoMLModelAttribute
public MoMLModelAttribute(NamedObj container, java.lang.String name) throws NameDuplicationException, IllegalActionException
Create a model attribute with the specified container and name.- Parameters:
container
- The specified container.name
- The specified name.- 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(Attribute attribute) throws IllegalActionException
React to a change in an attribute. If the modelURL attribute changes, reconfigure the MoML model with the new URL string.- Overrides:
attributeChanged
in classNamedObj
- Parameters:
attribute
- The attribute that changed.- Throws:
IllegalActionException
- Thrown if the URL string contained in the modelURL attribute is not valid.
-
clone
public java.lang.Object clone(Workspace workspace) throws java.lang.CloneNotSupportedException
Return a clone of this model attribute. This also creates a clone for the contained model.- Overrides:
clone
in classAttribute
- Parameters:
workspace
- The workspace for the cloned object.- Returns:
- A clone.
- Throws:
java.lang.CloneNotSupportedException
- Thrown if an error occurs while cloning the attribute or the contained model.- See Also:
NamedObj.exportMoML(Writer, int, String)
,NamedObj.setDeferringChangeRequests(boolean)
-
configure
public void configure(java.net.URL base, java.lang.String source, java.lang.String text) throws java.lang.Exception
Construct and configure the contained model with the specified source and text. This parses the specified MoML text.- Specified by:
configure
in interfaceConfigurable
- Parameters:
base
- The base URL for relative references, or null if not known.source
- The URI of a document providing source, which if specified, will be used to obtain the text. In that case, the text argument will be ignored.text
- The MoML description.- Throws:
java.lang.Exception
- If the parsing fails.
-
getConfigureSource
public java.lang.String getConfigureSource()
Return the input source that was specified the last time the configure method was called.- Specified by:
getConfigureSource
in interfaceConfigurable
- Returns:
- The string representation of the input URL, or null if the no source has been used to configure this object, or null if no external source need be used to configure this object.
-
getConfigureText
public java.lang.String getConfigureText()
Return the MoML description of the model, if there is one, and null otherwise.- Specified by:
getConfigureText
in interfaceConfigurable
- Returns:
- The text to include in a configure tag.
-
getContainedModel
public NamedObj getContainedModel()
Return the contained model.- Returns:
- The contained model.
-
_exportMoMLContents
protected void _exportMoMLContents(java.io.Writer output, int depth) throws java.io.IOException
Write a MoML description this object, which includes a MoML description of the contained model within the <configure> tag. If the source URL is specified, do not write the MoML description.- Overrides:
_exportMoMLContents
in classNamedObj
- Parameters:
output
- The output stream to write to.depth
- The depth in the hierarchy, to determine indenting.- Throws:
java.io.IOException
- If an I/O error occurs.- See Also:
NamedObj.exportMoML(Writer, int)
-
-