ptolemy.actor.gui
Class PortConfigurerDialog

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by java.awt.Window
              extended by java.awt.Frame
                  extended by javax.swing.JFrame
                      extended by ptolemy.actor.gui.PtolemyDialog
                          extended by ptolemy.actor.gui.PortConfigurerDialog
All Implemented Interfaces:
java.awt.event.ActionListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants, ChangeListener

public class PortConfigurerDialog
extends PtolemyDialog
implements ChangeListener

This class is a non-modal dialog for configuring the ports of an entity. The columns of the dialog displayed depend on the type of the Entity (target) for which we are configuring the ports. By default, "Name", "Direction, "Show Name", and "Hide" are displayed for all target types. We assume that the ports are of type Port or ComponentPort. If the target is an Actor, then the ports are of type IOPort and we add the "Input", "Output", and "Multiport" columns. If the target is a TypedActor, then the ports are of type TypedIOPort, and we add the "Type" and "Units" columns. NOTE: This code checks for the existence of each column that may be used, but it sometimes assumes the existence of the "Name" column.

Since:
Ptolemy II 1.0
Version:
$Id: PortConfigurerDialog.java 59167 2010-09-21 17:08:02Z cxh $
Author:
Rowland R Johnson, Elaine Cheong
See Also:
Serialized Form
Accepted Rating:
Red (eal)
Proposed Rating:
Yellow (eal)

Nested Class Summary
(package private)  class PortConfigurerDialog.CellValidator
          Validate a cell.
private static class PortConfigurerDialog.ColumnNames
          Strings that are available for the column names.
(package private) static class PortConfigurerDialog.PortBooleanCellRenderer
          Render a boolean cell.
(package private)  class PortConfigurerDialog.PortTableModel
          The table model for the table.
(package private) static class PortConfigurerDialog.StringCellRenderer
          Default renderer for _portTable.
static class PortConfigurerDialog.ValidatingComboBoxCellEditor
          A validating ComboBox table cell editor for use with JTable.
 class PortConfigurerDialog.ValidatingJTextFieldCellEditor
          A validating JTextField table cell editor for use with JTable.
 
Nested classes/interfaces inherited from class javax.swing.JFrame
javax.swing.JFrame.AccessibleJFrame
 
Nested classes/interfaces inherited from class java.awt.Frame
java.awt.Frame.AccessibleAWTFrame
 
Nested classes/interfaces inherited from class java.awt.Window
java.awt.Window.AccessibleAWTWindow
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
private  javax.swing.JButton _addButton
          The various buttons.
private  javax.swing.JButton _applyButton
          The various buttons.
private  boolean _applyChangeRequestFailed
          True if the change request in _apply() failed
private  java.util.ArrayList _columnNames
          List of names of columns that will be used for this target.
private  boolean _hideAllPorts
          When you click on the "Hide" column header, toggle this value.
(package private)  javax.swing.table.JTableHeader _jth
          JTableHeader of _portTable.
(package private) static ParseTreeEvaluator _parseTreeEvaluator
           
private  javax.swing.JComboBox _portLocationComboBox
          The combination box used to select the location of a port.
(package private)  java.util.Vector _ports
           
(package private)  javax.swing.JTable _portTable
           
(package private)  PortConfigurerDialog.PortTableModel _portTableModel
           
private  javax.swing.JButton _removeButton
          The various buttons.
private  int _selectedRow
           
private  boolean _showAllNames
          When you click on the "Show Name" column header, toggle this value.
private static java.lang.String _SINGLETON_PARAMETER
           
private static java.lang.String _STRING_ATTRIBUTE
           
(package private) static PtParser _typeParser
           
private static java.lang.String _UNIT_ATTRIBUTE
           
private  javax.swing.JButton Button
          The various buttons.
static java.awt.Color UNEDITABLE_CELL_COLOR
          The background color of an uneditable cell.
 
Fields inherited from class ptolemy.actor.gui.PtolemyDialog
_cancelButton, _configuration, _helpButton
 
Fields inherited from class javax.swing.JFrame
accessibleContext, EXIT_ON_CLOSE, rootPane, rootPaneCheckingEnabled
 
Fields inherited from class java.awt.Frame
CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSOR
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface javax.swing.WindowConstants
DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
PortConfigurerDialog(DialogTableau tableau, java.awt.Frame owner, Entity target, Configuration configuration)
          Construct a dialog that presents the ports as a table.
 
Method Summary
protected  boolean _apply()
          Apply any changes that may have been made in the table.
protected  void _cancel()
          Cancel this dialog, saving if necessary.
private  javax.swing.JComboBox _createComboBox()
          Create a JComboBox with the appropriate listeners.
protected  void _createExtendedButtons(javax.swing.JPanel _buttons)
          Created extended buttons.
private  java.lang.String _createMoMLUpdate(java.util.Hashtable updates, java.util.Hashtable portInfo, java.lang.String currentPortName, java.lang.String newPortName)
          Create the MoML expression that represents the update.
private  javax.swing.JComboBox _createPortTypeComboBox()
          Generate a combo box based on the type names.
private  javax.swing.JComboBox _createPortUnitComboBox()
          Generate a combo box based on the unit names.
private  void _enableApplyButton(boolean e)
           
protected  java.net.URL _getHelpURL()
          Return a URL that points to the help page.
private  void _initColumnNames()
           
private  void _initColumnSizes()
           
private  boolean _isPropertySet(NamedObj object, java.lang.String name)
          Return true if the property of the specified name is set for the specified object.
private  java.lang.String _momlDeleteProperty(java.lang.String name)
           
private  java.lang.String _momlProperty(java.lang.String name)
           
private  java.lang.String _momlProperty(java.lang.String name, java.lang.String clz, java.lang.String value)
           
private  void _populateActualPorts()
           
protected  void _processButtonPress(java.lang.String button)
          Process a button press.
private  void _setSelectedRow(int row)
           
private  void _setupTableModel()
          Creates and sets the TableModel.
 void changeExecuted(ChangeRequest change)
          Notify the listener that a change has been successfully executed.
 void changeFailed(ChangeRequest change, java.lang.Exception exception)
          Notify the listener that a change has resulted in an exception.
 boolean close()
          Close this dialog.
 void saveIfRequired()
          If necessary save any state.
 
Methods inherited from class ptolemy.actor.gui.PtolemyDialog
_isDirty, _setDirty, _showHelp, actionPerformed, getTarget, setContents, setScrollableContents, setTarget
 
Methods inherited from class javax.swing.JFrame
addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getJMenuBar, getLayeredPane, getRootPane, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setIconImage, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, update
 
Methods inherited from class java.awt.Frame
addNotify, finalize, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setCursor, setExtendedState, setMaximizedBounds, setMenuBar, setResizable, setState, setTitle, setUndecorated
 
Methods inherited from class java.awt.Window
addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getGraphicsConfiguration, getInputContext, getListeners, getLocale, getMostRecentFocusOwner, getOwnedWindows, getOwner, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isShowing, pack, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, setAlwaysOnTop, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setLocationByPlatform, setLocationRelativeTo, show, toBack, toFront
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paint, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, reshape, resize, resize, setBackground, setBounds, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setMinimumSize, setName, setPreferredSize, setSize, setSize, setVisible, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.awt.MenuContainer
getFont, postEvent
 

Field Detail

UNEDITABLE_CELL_COLOR

public static final java.awt.Color UNEDITABLE_CELL_COLOR
The background color of an uneditable cell.


_columnNames

private java.util.ArrayList _columnNames
List of names of columns that will be used for this target.


_hideAllPorts

private boolean _hideAllPorts
When you click on the "Hide" column header, toggle this value.

See Also:
PortConfigurerDialog.PortTableModel.toggleHidePorts()

_portLocationComboBox

private javax.swing.JComboBox _portLocationComboBox
The combination box used to select the location of a port.


_portTable

javax.swing.JTable _portTable

_portTableModel

PortConfigurerDialog.PortTableModel _portTableModel

_jth

javax.swing.table.JTableHeader _jth
JTableHeader of _portTable. MouseListener is added to this.


_parseTreeEvaluator

static ParseTreeEvaluator _parseTreeEvaluator

_ports

java.util.Vector _ports

_selectedRow

private int _selectedRow

_SINGLETON_PARAMETER

private static java.lang.String _SINGLETON_PARAMETER

_showAllNames

private boolean _showAllNames
When you click on the "Show Name" column header, toggle this value.

See Also:
PortConfigurerDialog.PortTableModel.toggleShowAllNames()

_STRING_ATTRIBUTE

private static java.lang.String _STRING_ATTRIBUTE

_typeParser

static PtParser _typeParser

_UNIT_ATTRIBUTE

private static java.lang.String _UNIT_ATTRIBUTE

_applyButton

private javax.swing.JButton _applyButton
The various buttons.


Button

private javax.swing.JButton Button
The various buttons.


_addButton

private javax.swing.JButton _addButton
The various buttons.


_applyChangeRequestFailed

private boolean _applyChangeRequestFailed
True if the change request in _apply() failed


_removeButton

private javax.swing.JButton _removeButton
The various buttons.

Constructor Detail

PortConfigurerDialog

public PortConfigurerDialog(DialogTableau tableau,
                            java.awt.Frame owner,
                            Entity target,
                            Configuration configuration)
Construct a dialog that presents the ports as a table. Each row of the table corresponds to one port. The user modifies the table to specify changes in the ports. When the apply button is pressed the contents of the table is used to update the ports. When Commit is pressed an apply is done before exiting.

This dialog is is not modal. In particular, changes can be undone by clicking Edit->Undo, and the help screen can be manipulated while this dialog exists. The dialog is placed relative to the owner.

Parameters:
tableau - The DialogTableau.
owner - The object that, per the user, appears to be generating the dialog.
target - The object whose ports are being configured.
configuration - The configuration to use to open the help screen (or null if help is not supported).
Method Detail

changeExecuted

public void changeExecuted(ChangeRequest change)
Notify the listener that a change has been successfully executed.

Specified by:
changeExecuted in interface ChangeListener
Parameters:
change - The change that has been executed.

changeFailed

public void changeFailed(ChangeRequest change,
                         java.lang.Exception exception)
Notify the listener that a change has resulted in an exception.

Specified by:
changeFailed in interface ChangeListener
Parameters:
change - The change that was attempted.
exception - The exception that resulted.

close

public boolean close()
Close this dialog. If the state has not be saved, prompt the user to save the modifications.

Returns:
false if the user selects cancel, otherwise return true.

saveIfRequired

public void saveIfRequired()
Description copied from class: PtolemyDialog
If necessary save any state. In this base class, do nothing. Derived classes should extend this method so that the PtolemyDialog._cancel() method save state if necessary.

Overrides:
saveIfRequired in class PtolemyDialog

_apply

protected boolean _apply()
Apply any changes that may have been made in the table.

Returns:
true if the change was successfully applied

_cancel

protected void _cancel()
Description copied from class: PtolemyDialog
Cancel this dialog, saving if necessary.

Overrides:
_cancel in class PtolemyDialog

_createExtendedButtons

protected void _createExtendedButtons(javax.swing.JPanel _buttons)
Description copied from class: PtolemyDialog
Created extended buttons.

Specified by:
_createExtendedButtons in class PtolemyDialog
Parameters:
_buttons - The buttons to be created.

_getHelpURL

protected java.net.URL _getHelpURL()
Return a URL that points to the help page.

Specified by:
_getHelpURL in class PtolemyDialog
Returns:
A URL that points to the help page

_processButtonPress

protected void _processButtonPress(java.lang.String button)
Process a button press.

Overrides:
_processButtonPress in class PtolemyDialog
Parameters:
button - The button.

_createMoMLUpdate

private java.lang.String _createMoMLUpdate(java.util.Hashtable updates,
                                           java.util.Hashtable portInfo,
                                           java.lang.String currentPortName,
                                           java.lang.String newPortName)
Create the MoML expression that represents the update.


_createComboBox

private javax.swing.JComboBox _createComboBox()
Create a JComboBox with the appropriate listeners.


_createPortTypeComboBox

private javax.swing.JComboBox _createPortTypeComboBox()
Generate a combo box based on the type names.


_createPortUnitComboBox

private javax.swing.JComboBox _createPortUnitComboBox()
Generate a combo box based on the unit names.


_enableApplyButton

private void _enableApplyButton(boolean e)

_initColumnNames

private void _initColumnNames()

_initColumnSizes

private void _initColumnSizes()

_isPropertySet

private boolean _isPropertySet(NamedObj object,
                               java.lang.String name)
Return true if the property of the specified name is set for the specified object. A property is specified if the specified object contains an attribute with the specified name and that attribute is either not a boolean-valued parameter, or it is a boolean-valued parameter with value true.

Parameters:
object - The object.
name - The property name.
Returns:
True if the property is set.

_momlDeleteProperty

private java.lang.String _momlDeleteProperty(java.lang.String name)

_momlProperty

private java.lang.String _momlProperty(java.lang.String name)

_momlProperty

private java.lang.String _momlProperty(java.lang.String name,
                                       java.lang.String clz,
                                       java.lang.String value)

_populateActualPorts

private void _populateActualPorts()

_setSelectedRow

private void _setSelectedRow(int row)

_setupTableModel

private void _setupTableModel()
Creates and sets the TableModel. Also arranges for some columns to have their particular renderers and/or editors. This method will be invoked when the dialog is created, and every time a change request from above causes the table to change.