Package ptolemy.actor.gui
Class PtolemyEffigy.Factory
- java.lang.Object
-
- ptolemy.kernel.util.NamedObj
-
- ptolemy.kernel.InstantiableNamedObj
-
- ptolemy.kernel.Entity<T>
-
- ptolemy.kernel.ComponentEntity
-
- ptolemy.kernel.CompositeEntity
-
- ptolemy.actor.gui.EffigyFactory
-
- ptolemy.actor.gui.PtolemyEffigy.Factory
-
- All Implemented Interfaces:
java.lang.Cloneable
,Changeable
,Debuggable
,DebugListener
,Derivable
,Instantiable
,ModelErrorHandler
,MoMLExportable
,Moveable
,Nameable
- Direct Known Subclasses:
ExecShellEffigy.ShellFactory
,ExpressionShellEffigy.ShellFactory
,PtolemyEffigy.FactoryWithoutNew
,PythonShellEffigy.ShellFactory
,TclShellEffigy.ShellFactory
- Enclosing class:
- PtolemyEffigy
public static class PtolemyEffigy.Factory extends EffigyFactory
A factory for creating new Ptolemy effigies.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class ptolemy.kernel.CompositeEntity
CompositeEntity.ContainedObjectsIterator
-
-
Field Summary
-
Fields inherited from class ptolemy.kernel.CompositeEntity
_levelCrossingLinks
-
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 Factory(CompositeEntity container, java.lang.String name)
Create a factory with the given name and container.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected PtolemyEffigy
_newEffigy(CompositeEntity container, java.lang.String name)
Create a new effigy.boolean
canCreateBlankEffigy()
Return true, indicating that this effigy factory is capable of creating an effigy without a URL being specified.Effigy
createEffigy(CompositeEntity container, java.net.URL base, java.net.URL input)
Create a new effigy in the given container by reading the input URL.-
Methods inherited from class ptolemy.actor.gui.EffigyFactory
checkForDTD, createEffigy, getExtension
-
Methods inherited from class ptolemy.kernel.CompositeEntity
_addEntity, _addRelation, _adjustDeferrals, _containedDecorators, _deepOpaqueEntityList, _description, _exportMoMLContents, _finishedAddEntity, _removeEntity, _removeRelation, _validateSettables, allAtomicEntityList, allowLevelCrossingConnect, classDefinitionList, clone, connect, connect, containedObjectsIterator, deepCompositeEntityList, deepEntityList, deepGetEntities, deepNamedObjList, deepOpaqueEntityList, deepRelationSet, entityList, entityList, exportLinks, exportMoML, getAttribute, getEntities, getEntity, getPort, getRelation, getRelations, isAtomic, isOpaque, lazyAllAtomicEntityList, lazyAllCompositeEntityList, lazyAllCompositeTransparentAndOpaqueEntityList, lazyClassDefinitionList, lazyDeepEntityList, lazyEntityList, lazyRelationList, newRelation, numberOfEntities, numberOfRelations, numEntities, numRelations, relationList, removeAllEntities, removeAllRelations, setClassDefinition, setContainer, statistics, uniqueName
-
Methods inherited from class ptolemy.kernel.ComponentEntity
_checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, newPort, propagateExistence, setName
-
Methods inherited from class ptolemy.kernel.Entity
_addPort, _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, _copyChangeRequestList, _debug, _debug, _debug, _debug, _debug, _executeChangeRequests, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _notifyHierarchyListenersAfterChange, _notifyHierarchyListenersBeforeChange, _propagateValue, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, addHierarchyListener, attributeChanged, attributeDeleted, attributeList, attributeList, attributeTypeChanged, clone, decorators, 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, notifyOfNameChange, propagateValue, propagateValues, removeAttribute, removeChangeListener, removeDebugListener, removeHierarchyListener, 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
-
-
-
-
Constructor Detail
-
Factory
public Factory(CompositeEntity container, java.lang.String name) throws IllegalActionException, NameDuplicationException
Create a factory with the given name and container.- Parameters:
container
- The container.name
- The name.- Throws:
IllegalActionException
- If the container is incompatible with this entity.NameDuplicationException
- If the name coincides with an entity already in the container.
-
-
Method Detail
-
canCreateBlankEffigy
public boolean canCreateBlankEffigy()
Return true, indicating that this effigy factory is capable of creating an effigy without a URL being specified.- Overrides:
canCreateBlankEffigy
in classEffigyFactory
- Returns:
- True.
-
createEffigy
public Effigy createEffigy(CompositeEntity container, java.net.URL base, java.net.URL input) throws java.lang.Exception
Create a new effigy in the given container by reading the input URL. If the input URL is null, then create a blank effigy. The blank effigy will have a new model associated with it. If this effigy factory contains an entity or an attribute named "blank", then the new model will be a clone of that object. Otherwise, it will be an instance of TypedCompositeActor. If the URL does not end with extension ".xml" or ".moml" (case insensitive), then return null. If the URL points to an XML file that is not a MoML file, then also return null. A MoML file is required to have the MoML DTD designation in the first five lines. That is, it must contain a line beginning with the string "<!DOCTYPE" and ending with the string 'PUBLIC \"-//UC Berkeley//DTD MoML"'. The specified base is used to expand any relative file references within the URL. If the input URL contains a "#", then the fragment after the "#" assumed to be a dot separated path to an inner model and the inner model is opened.- Overrides:
createEffigy
in classEffigyFactory
- Parameters:
container
- The container for the effigy.base
- The base for relative file references, or null if there are no relative file references.input
- The input URL.- Returns:
- A new instance of PtolemyEffigy, or null if the URL does not specify a Ptolemy II model.
- Throws:
java.lang.Exception
- If the URL cannot be read, or if the data is malformed in some way.
-
_newEffigy
protected PtolemyEffigy _newEffigy(CompositeEntity container, java.lang.String name) throws IllegalActionException, NameDuplicationException
Create a new effigy. We use the strategy pattern here so that derived classes can easily override the exact class that is created.- Parameters:
container
- The container for the effigy.name
- The name.- Returns:
- A new 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.
-
-