ptolemy.vergil.actor
Class ExternalIOPortController

java.lang.Object
  extended by diva.graph.BasicNodeController
      extended by ptolemy.vergil.basic.LocatableNodeController
          extended by ptolemy.vergil.basic.NamedObjController
              extended by ptolemy.vergil.basic.ParameterizedNodeController
                  extended by ptolemy.vergil.basic.IconController
                      extended by ptolemy.vergil.kernel.AttributeController
                          extended by ptolemy.vergil.actor.ExternalIOPortController
All Implemented Interfaces:
NodeController
Direct Known Subclasses:
MatchResultViewer.MatchResultExternalPortController, TransformationEditor.TransformationExternalPortController

public class ExternalIOPortController
extends AttributeController

This class provides interaction with nodes that represent Ptolemy II ports inside a composite. It provides a double click binding and context menu entry to edit the parameters of the port ("Configure") and a command to get documentation. It can have one of two access levels, FULL or PARTIAL. If the access level is FULL, the the context menu also contains a command to rename the node. Note that whether the port is an input or output or multiport cannot be controlled via this interface. The "Configure Ports" command of the container should be invoked instead.

Since:
Ptolemy II 2.0
Version:
$Id: ExternalIOPortController.java 57040 2010-01-27 20:52:32Z cxh $
Author:
Steve Neuendorffer and Edward A. Lee, Elaine Cheong
Accepted Rating:
Red (johnr)
Proposed Rating:
Red (eal)

Nested Class Summary
 class ExternalIOPortController.PortRenderer
          Render the external ports of a graph as a 5-sided tab thingy.
 
Nested classes/interfaces inherited from class ptolemy.vergil.kernel.AttributeController
AttributeController.Access
 
Nested classes/interfaces inherited from class ptolemy.vergil.basic.IconController
IconController.IconRenderer
 
Field Summary
static IOPort _GENERIC_INOUT
          Prototype inout port.
static IOPort _GENERIC_INOUT_MULTIPORT
          Prototype inout multiport.
static IOPort _GENERIC_INPUT
          Prototype input port.
static IOPort _GENERIC_INPUT_MULTIPORT
          Prototype input multiport.
static IOPort _GENERIC_OUTPUT
          Prototype output port.
static IOPort _GENERIC_OUTPUT_MULTIPORT
          Prototype output multiport.
private  java.util.HashMap<java.lang.Object,double[]> _inoutputPortLocations
           
private  java.util.HashMap<java.lang.Object,double[]> _inputPortLocations
           
private static java.awt.Font _labelFont
           
private  java.util.HashMap<java.lang.Object,double[]> _otherPortLocations
           
private  java.util.HashMap<java.lang.Object,double[]> _outputPortLocations
           
 
Fields inherited from class ptolemy.vergil.kernel.AttributeController
_appearanceMenuActionFactory, _listenToAction, _renameAction, FULL, PARTIAL
 
Fields inherited from class ptolemy.vergil.basic.ParameterizedNodeController
_configureAction, _configureMenuFactory, _menuCreator, _menuFactory
 
Fields inherited from class ptolemy.vergil.basic.NamedObjController
_configuration
 
Fields inherited from class ptolemy.vergil.basic.LocatableNodeController
_decoratable, CLASS_ELEMENT_HIGHLIGHT_COLOR
 
Constructor Summary
ExternalIOPortController(GraphController controller)
          Create a port controller associated with the specified graph controller.
ExternalIOPortController(GraphController controller, AttributeController.Access access)
          Create a port controller associated with the specified graph controller.
 
Method Summary
protected  boolean _hide(java.lang.Object node)
          Override the base class to return true if the specified node contains an attribute named "_hideInside".
private  java.lang.String _portTooltip(Port port)
          Given a port, return a reasonable tooltip message for that port.
 void locateFigure(java.lang.Object node)
          Move the node's figure to the location specified in the node's semantic object, if that object is an instance of Locatable.
 
Methods inherited from class ptolemy.vergil.kernel.AttributeController
_getComponentType, addHotKeys, setConfiguration
 
Methods inherited from class ptolemy.vergil.basic.ParameterizedNodeController
getConfigureMenuFactory
 
Methods inherited from class ptolemy.vergil.basic.LocatableNodeController
_drawChildren, _getCompositeFigure, _isPropertySet, _renderNode, addNode, drawNode, getLocation, hasLocation, setLocation, setSnapResolution
 
Methods inherited from class diva.graph.BasicNodeController
addNode, addNode, addNode, clearNode, drawNode, getController, getNodeInteractor, getNodeRenderer, removeNode, setNodeInteractor, setNodeRenderer
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_GENERIC_INPUT

public static final IOPort _GENERIC_INPUT
Prototype input port.


_GENERIC_OUTPUT

public static final IOPort _GENERIC_OUTPUT
Prototype output port.


_GENERIC_INOUT

public static final IOPort _GENERIC_INOUT
Prototype inout port.


_GENERIC_INPUT_MULTIPORT

public static final IOPort _GENERIC_INPUT_MULTIPORT
Prototype input multiport.


_GENERIC_OUTPUT_MULTIPORT

public static final IOPort _GENERIC_OUTPUT_MULTIPORT
Prototype output multiport.


_GENERIC_INOUT_MULTIPORT

public static final IOPort _GENERIC_INOUT_MULTIPORT
Prototype inout multiport.


_labelFont

private static java.awt.Font _labelFont

_inputPortLocations

private java.util.HashMap<java.lang.Object,double[]> _inputPortLocations

_outputPortLocations

private java.util.HashMap<java.lang.Object,double[]> _outputPortLocations

_inoutputPortLocations

private java.util.HashMap<java.lang.Object,double[]> _inoutputPortLocations

_otherPortLocations

private java.util.HashMap<java.lang.Object,double[]> _otherPortLocations
Constructor Detail

ExternalIOPortController

public ExternalIOPortController(GraphController controller)
Create a port controller associated with the specified graph controller. The controller is given full access.

Parameters:
controller - The associated graph controller.

ExternalIOPortController

public ExternalIOPortController(GraphController controller,
                                AttributeController.Access access)
Create a port controller associated with the specified graph controller.

Parameters:
controller - The associated graph controller.
access - The access level.
Method Detail

locateFigure

public void locateFigure(java.lang.Object node)
Move the node's figure to the location specified in the node's semantic object, if that object is an instance of Locatable. If the semantic object is not a location, then do nothing. If the figure associated with the semantic object is an instance of TerminalFigure, then modify the location to ensure that the connect site snaps to grid.

Overrides:
locateFigure in class LocatableNodeController
Parameters:
node - The object to locate.

_hide

protected boolean _hide(java.lang.Object node)
Override the base class to return true if the specified node contains an attribute named "_hideInside". This ensures that ports can be hidden on the outside while still being visible on the outside.

Overrides:
_hide in class LocatableNodeController
Parameters:
node - The node
Returns:
true if the specified node should be hidden.

_portTooltip

private java.lang.String _portTooltip(Port port)
Given a port, return a reasonable tooltip message for that port.

Parameters:
port - The port.
Returns:
The name, type, and whether it's a multiport.