ptolemy.actor.gui.properties
Class GUIProperty

java.lang.Object
  extended by ptolemy.kernel.util.NamedObj
      extended by ptolemy.kernel.util.Attribute
          extended by ptolemy.actor.gui.properties.GUIProperty
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, Changeable, Debuggable, DebugListener, Derivable, ModelErrorHandler, MoMLExportable, Moveable, Nameable
Direct Known Subclasses:
ActionGUIProperty, ComboBox, Panel, Separator, ToolBar

public abstract class GUIProperty
extends Attribute

Base class for the properties that can be used to configure a tableau.

Since:
Ptolemy II 8.0
Version:
$Id: GUIProperty.java 57044 2010-01-27 22:41:05Z cxh $
Author:
Thomas Huining Feng
See Also:
Serialized Form
Accepted Rating:
Red (tfeng)
Proposed Rating:
Red (tfeng)

Nested Class Summary
 
Nested classes/interfaces inherited from class ptolemy.kernel.util.NamedObj
NamedObj.ContainedObjectsIterator
 
Field Summary
private  javax.swing.JComponent _component
          The Java Swing component.
private  java.lang.Object _constraint
          The layout constraint.
 Parameter preferredSize
          The preferred size of the Swing component.
 
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
GUIProperty(NamedObj container, java.lang.String name)
          Construct a GUI property with the given name contained by the specified entity.
GUIProperty(NamedObj container, java.lang.String name, javax.swing.JComponent component)
          Construct a GUI property with the given name contained by the specified entity with the given Java Swing component.
GUIProperty(NamedObj container, java.lang.String name, javax.swing.JComponent component, java.lang.Object constraint)
          Construct a GUI property with the given name contained by the specified entity with the given Java Swing component and the given layout constraint.
GUIProperty(NamedObj container, java.lang.String name, java.lang.Object constraint)
          Construct a GUI property with the given name contained by the specified entity with the given layout constraint.
 
Method Summary
private  boolean _add(NamedObj container)
          Add the Java Swing component to the tableau or GUI property that contains this GUI property.
protected abstract  javax.swing.JComponent _createComponent()
          Create a new Java Swing component.
private  void _remove()
          Remove the Java Swing component from the tableau or GUI property that contains this GUI property.
 void attributeChanged(Attribute attribute)
          React to a change in an attribute.
 javax.swing.JComponent getComponent()
          Return the Swing component.
 void setContainer(NamedObj container)
          Specify the container NamedObj, adding this attribute to the list of attributes in the container.
 
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, 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

preferredSize

public Parameter preferredSize
The preferred size of the Swing component. It would be a matrix of 2 integers, such as [100, 20]. It is ignored if any integer is less than 0.


_component

private javax.swing.JComponent _component
The Java Swing component.


_constraint

private java.lang.Object _constraint
The layout constraint.

Constructor Detail

GUIProperty

public GUIProperty(NamedObj container,
                   java.lang.String name)
            throws IllegalActionException,
                   NameDuplicationException
Construct a GUI property 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.

GUIProperty

public GUIProperty(NamedObj container,
                   java.lang.String name,
                   javax.swing.JComponent component)
            throws IllegalActionException,
                   NameDuplicationException
Construct a GUI property with the given name contained by the specified entity with the given Java Swing component. 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.
component - The Java Swing component.
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.

GUIProperty

public GUIProperty(NamedObj container,
                   java.lang.String name,
                   javax.swing.JComponent component,
                   java.lang.Object constraint)
            throws IllegalActionException,
                   NameDuplicationException
Construct a GUI property with the given name contained by the specified entity with the given Java Swing component and the given layout constraint. 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.
component - The Java Swing component.
constraint - The layout constraint.
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.

GUIProperty

public GUIProperty(NamedObj container,
                   java.lang.String name,
                   java.lang.Object constraint)
            throws IllegalActionException,
                   NameDuplicationException
Construct a GUI property with the given name contained by the specified entity with the given layout constraint. 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.
constraint - The layout constraint.
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. This method is called by a contained attribute when its value changes. If the changed attribute is preferredSize, then the preferred size of the Swing component in this GUI property is adjusted accordingly.

Overrides:
attributeChanged in class NamedObj
Parameters:
attribute - The attribute that changed.
Throws:
IllegalActionException - If the change is not acceptable to this container (not thrown in this base class).

getComponent

public javax.swing.JComponent getComponent()
Return the Swing component.

Returns:
The Swing component.

setContainer

public void setContainer(NamedObj container)
                  throws IllegalActionException,
                         NameDuplicationException
Specify the container NamedObj, adding this attribute to the list of attributes in the container. If the container already contains an attribute with the same name, then throw an exception and do not make any changes. Similarly, if the container is not in the same workspace as this attribute, throw an exception. If this attribute is already contained by the NamedObj, do nothing. If the attribute already has a container, remove this attribute from its attribute list first. Otherwise, remove it from the directory of the workspace, if it is there. If the argument is null, then remove it from its container. It is not added to the workspace directory, so this could result in this object being garbage collected. Note that since an Attribute is a NamedObj, it can itself have attributes. However, recursive containment is not allowed, where an attribute is an attribute of itself, or indirectly of any attribute it contains. This method is write-synchronized on the workspace and increments its version number.

Subclasses may constrain the type of container by overriding setContainer(NamedObj).

Overrides:
setContainer in class Attribute
Parameters:
container - The container to attach this attribute to..
Throws:
IllegalActionException - If this attribute is not of the expected class for the container, or it has no name, or the attribute and container are not in the same workspace, or the proposed container would result in recursive containment.
NameDuplicationException - If the container already has an attribute with the name of this attribute.
See Also:
Attribute.getContainer()

_createComponent

protected abstract javax.swing.JComponent _createComponent()
                                                    throws IllegalActionException
Create a new Java Swing component.

Returns:
A Swing component that can be enclosed in this GUI property.
Throws:
IllegalActionException - Not thrown in this base class.

_add

private boolean _add(NamedObj container)
Add the Java Swing component to the tableau or GUI property that contains this GUI property. If this GUI property is already added to one such container, it will be removed from its old container first.

Parameters:
container - The new container.
Returns:
true if the container can be used; false if the adding is not successful.

_remove

private void _remove()
Remove the Java Swing component from the tableau or GUI property that contains this GUI property.