thales.actor.gui
Class NavigableEffigy.Factory

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.EffigyFactory
                          extended by thales.actor.gui.NavigableEffigy.Factory
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable
Direct Known Subclasses:
NavigableEffigy.FactoryWithoutNew
Enclosing class:
NavigableEffigy

public static class NavigableEffigy.Factory
extends EffigyFactory

A factory for creating new Ptolemy effigies.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class ptolemy.kernel.CompositeEntity
CompositeEntity.ContainedObjectsIterator
 
Field Summary
protected  java.lang.String _tagToCheck
           
 
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
NavigableEffigy.Factory(CompositeEntity container, java.lang.String name)
          Create a factory with the given name and container.
 
Method Summary
protected  NavigableEffigy _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.
private  boolean checkFile(java.net.URL url)
           
 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.
private  boolean modelIsValid(NamedObj model)
           
 
Methods inherited from class ptolemy.actor.gui.EffigyFactory
checkForDTD, createEffigy, getExtension
 
Methods inherited from class ptolemy.kernel.CompositeEntity
_addEntity, _addRelation, _adjustDeferrals, _deepOpaqueEntityList, _description, _exportMoMLContents, _finishedAddEntity, _recordDecoratedAttributes, _removeEntity, _removeRelation, _validateSettables, allAtomicEntityList, allCompositeEntityList, allowLevelCrossingConnect, classDefinitionList, clone, 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, setContainer, 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, 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, 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

_tagToCheck

protected java.lang.String _tagToCheck
Constructor Detail

NavigableEffigy.Factory

public NavigableEffigy.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 class EffigyFactory
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", then return null. If the URL points to an XML file that is not a MoML file, then also return null. The specified base is used to expand any relative file references within the URL.

Overrides:
createEffigy in class EffigyFactory
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.

modelIsValid

private boolean modelIsValid(NamedObj model)

checkFile

private boolean checkFile(java.net.URL url)

_newEffigy

protected NavigableEffigy _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
NameDuplicationException