ptolemy.vergil.icon
Class XMLIcon

java.lang.Object
  extended by ptolemy.kernel.util.NamedObj
      extended by ptolemy.kernel.util.Attribute
          extended by ptolemy.vergil.icon.EditorIcon
              extended by ptolemy.vergil.icon.DynamicEditorIcon
                  extended by ptolemy.vergil.icon.XMLIcon
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, Changeable, Debuggable, DebugListener, Derivable, ModelErrorHandler, MoMLExportable, Moveable, Nameable, ValueListener
Direct Known Subclasses:
AttributeValueIcon, BoxedValuesIcon, CopyCatIcon, IterativeParameterIcon, ValueIcon

public class XMLIcon
extends DynamicEditorIcon
implements ValueListener

An icon is a visual representation of an entity. Three such visual representations are supported here. A background figure is returned by the createBackgroundFigure() method. This figure is specified by an attribute named "_iconDescription" of the container, if there is one. If there is no such attribute, then a default icon is used. The createFigure() method returns this same background figure, but decorated with a label giving the name of the container, unless the container contains a parameter named "_hideName" with value true. The createIcon() method returns a Swing icon given by an attribute named "_smallIconDescription", if there is one. If there is no such attribute, then the icon is simply a small representation of the background figure.

The XML schema used in the "_iconDescription" and "_smallIconDescription" attributes is SVG (scalable vector graphics), although currently Diva only supports a small subset of SVG.

Since:
Ptolemy II 2.0
Version:
$Id: XMLIcon.java 57040 2010-01-27 20:52:32Z cxh $
Author:
Steve Neuendorffer, John Reekie, Contributors: Edward A. Lee, Chad Berkley (Kepler)
See Also:
Serialized Form
Accepted Rating:
Red (johnr)
Proposed Rating:
Yellow (neuendor)

Nested Class Summary
 
Nested classes/interfaces inherited from class ptolemy.kernel.util.NamedObj
NamedObj.ContainedObjectsIterator
 
Field Summary
private  ConfigurableAttribute _description
           
private  PaintedList _paintedList
           
private  ConfigurableAttribute _smallIconDescription
           
 
Fields inherited from class ptolemy.vergil.icon.EditorIcon
_containerToBe, _iconCache
 
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
XMLIcon(NamedObj container, java.lang.String name)
          Create a new icon with the given name in the given container.
XMLIcon(Workspace workspace, java.lang.String name)
          Construct an icon in the specified workspace and name.
 
Method Summary
protected  java.lang.String _description(int detail, int indent, int bracket)
          Return a description of the object.
private static java.lang.Class _getAlternateXMLIcon()
          Check to see if there is an _alternatXMLIcon attribute in the configuration.
protected  void _recreateFigure()
          Recreate the figure.
private  void _updatePaintedList()
          Update the painted list of the icon based on the SVG data in the associated "_iconDescription" parameter, if there is one.
 java.lang.Object clone(Workspace workspace)
          Clone the object into the specified workspace.
 Figure createBackgroundFigure()
          Create a background figure based on this icon.
 javax.swing.Icon createIcon()
          Create a new Swing icon.
static XMLIcon getXMLIcon(NamedObj container, java.lang.String name)
          Instantiate an XMLIcon in a NamedObj.
static XMLIcon getXMLIcon(Workspace workspace, java.lang.String name)
          Instantiate an XMLIcon in a Workspace.
 PaintedList paintedList()
          Return the painted list contained by this icon.
 java.lang.String toString()
          Return a string representing this Icon.
 void valueChanged(Settable settable)
          React to the fact that the value of an attribute named "_iconDescription" contained by the same container has changed value by redrawing the figure.
 
Methods inherited from class ptolemy.vergil.icon.DynamicEditorIcon
_addLiveFigure, _liveFigureIterator, _trimLiveFigures
 
Methods inherited from class ptolemy.vergil.icon.EditorIcon
_createDefaultBackgroundFigure, _isPropertySet, createFigure, getContainerOrContainerToBe, setContainerToBe
 
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, _debug, _debug, _debug, _debug, _debug, _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, uniqueName, validateSettables, workspace
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

_paintedList

private PaintedList _paintedList

_description

private ConfigurableAttribute _description

_smallIconDescription

private ConfigurableAttribute _smallIconDescription
Constructor Detail

XMLIcon

public XMLIcon(Workspace workspace,
               java.lang.String name)
        throws IllegalActionException
Construct an icon in the specified workspace and name. This constructor is typically used in conjunction with setContainerToBe() and createFigure() to create an icon and generate a figure without having to have write access to the workspace. If the workspace argument is null, then use the default workspace. The object is added to the directory of the workspace.

Parameters:
workspace - The workspace that will list the attribute.
name - The name of this attribute.
Throws:
IllegalActionException - If the specified name contains a period.
See Also:
Increment the version number of the workspace.

XMLIcon

public XMLIcon(NamedObj container,
               java.lang.String name)
        throws NameDuplicationException,
               IllegalActionException
Create a new icon with the given name in the given container. By default, the icon contains no graphic objects.

Parameters:
container - The container for this attribute.
name - The name of this attribute.
Throws:
IllegalActionException - If thrown by the parent class or while setting an attribute.
NameDuplicationException - If the name coincides with an attribute already in the container.
Method Detail

getXMLIcon

public static XMLIcon getXMLIcon(NamedObj container,
                                 java.lang.String name)
                          throws NameDuplicationException,
                                 IllegalActionException
Instantiate an XMLIcon in a NamedObj.

This method looks for the _alternateXMLIcon attribute in the configuration. If it is found, it returns an XMLIcon of the class found there, if not, it returns an instance of this class.

Parameters:
container - The container for this attribute.
name - The name of this attribute.
Returns:
an instance of the XMLIcon class.
Throws:
NameDuplicationException - If an object with that name already exists in the container.
IllegalActionException - If the specified name contains a period.

getXMLIcon

public static XMLIcon getXMLIcon(Workspace workspace,
                                 java.lang.String name)
                          throws NameDuplicationException,
                                 IllegalActionException
Instantiate an XMLIcon in a Workspace.

This method looks for the _alternateXMLIcon attribute in the configuration. If it is found, it returns an XMLIcon of the class found there, if not, it returns an instance of this class.

Parameters:
workspace - The workspace that will list the attribute.
name - The name of this attribute.
Returns:
an instance of the XMLIcon class.
Throws:
NameDuplicationException - If an object with that name already exists in the container.
IllegalActionException - If the specified name contains a period.

clone

public java.lang.Object clone(Workspace workspace)
                       throws java.lang.CloneNotSupportedException
Clone the object into the specified workspace. The new object is not added to the directory of that workspace (you must do this yourself if you want it there). The result is an object with no container.

Overrides:
clone in class DynamicEditorIcon
Parameters:
workspace - The workspace for the cloned object.
Returns:
The new Attribute.
Throws:
java.lang.CloneNotSupportedException - Not thrown in this base class
See Also:
NamedObj.exportMoML(Writer, int, String), NamedObj.setDeferringChangeRequests(boolean)

createBackgroundFigure

public Figure createBackgroundFigure()
Create a background figure based on this icon. The background figure will be painted with each graphic element that this icon contains.

Overrides:
createBackgroundFigure in class EditorIcon
Returns:
A figure for this icon.

createIcon

public javax.swing.Icon createIcon()
Create a new Swing icon. This class looks for an attribute called "_smallIconDescription", and if it exists, uses it to create the icon. If it does not exist, then it simply creates a small version of the background figure returned by createBackgroundFigure().

Overrides:
createIcon in class EditorIcon
Returns:
A new Swing Icon.

paintedList

public PaintedList paintedList()
Return the painted list contained by this icon. This is used by the icon editor.

Returns:
The painted list contained by this icon.

toString

public java.lang.String toString()
Return a string representing this Icon.

Overrides:
toString in class NamedObj
Returns:
The class name and the full name.

valueChanged

public void valueChanged(Settable settable)
React to the fact that the value of an attribute named "_iconDescription" contained by the same container has changed value by redrawing the figure.

Specified by:
valueChanged in interface ValueListener
Parameters:
settable - The object that has changed value.

_description

protected java.lang.String _description(int detail,
                                        int indent,
                                        int bracket)
                                 throws IllegalActionException
Return a description of the object. Lines are indented according to to the level argument using the protected method _getIndentPrefix(). Zero, one or two brackets can be specified to surround the returned description. If one is specified it is the the leading bracket. This is used by derived classes that will append to the description. Those derived classes are responsible for the closing bracket. An argument other than 0, 1, or 2 is taken to be equivalent to 0. This method is read-synchronized on the workspace.

Overrides:
_description in class NamedObj
Parameters:
detail - The level of detail.
indent - The amount of indenting.
bracket - The number of surrounding brackets (0, 1, or 2).
Returns:
A description of the object.
Throws:
IllegalActionException

_recreateFigure

protected void _recreateFigure()
Recreate the figure. Call to cause createIcon() to call createBackgroundFigure() to obtain a new figure.

Overrides:
_recreateFigure in class EditorIcon

_getAlternateXMLIcon

private static java.lang.Class _getAlternateXMLIcon()
                                             throws java.lang.Exception
Check to see if there is an _alternatXMLIcon attribute in the configuration. This attribute should name a class that is an alternative to XMLIcon. If the attribute is present, return the class, if not, return null.

Throws:
java.lang.Exception

_updatePaintedList

private void _updatePaintedList()
Update the painted list of the icon based on the SVG data in the associated "_iconDescription" parameter, if there is one.