ptolemy.vergil.fsm
Class FSMGraphFrame

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.gui.Top
                          extended by ptolemy.actor.gui.TableauFrame
                              extended by ptolemy.actor.gui.PtolemyFrame
                                  extended by ptolemy.vergil.basic.BasicGraphFrame
                                      extended by ptolemy.vergil.basic.ExtendedGraphFrame
                                          extended by ptolemy.vergil.fsm.FSMGraphFrame
All Implemented Interfaces:
java.awt.datatransfer.ClipboardOwner, java.awt.event.ActionListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.event.MouseWheelListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.awt.print.Printable, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants, ChangeListener
Direct Known Subclasses:
FmvAutomatonGraphFrame, InterfaceAutomatonGraphFrame

public class FSMGraphFrame
extends ExtendedGraphFrame
implements java.awt.event.ActionListener

This is a graph editor frame for ptolemy FSM models. Given a composite entity and a tableau, it creates an editor and populates the menus and toolbar. This overrides the base class to associate with the editor an instance of FSMGraphController.

Since:
Ptolemy II 2.0
Version:
$Id: FSMGraphFrame.java 57040 2010-01-27 20:52:32Z cxh $
Author:
Steve Neuendorffer, Contributor: Edward A. Lee
See Also:
Serialized Form
Accepted Rating:
Red (johnr)
Proposed Rating:
Red (neuendor)

Nested Class Summary
 class FSMGraphFrame.DebugMenuListener
          Listener for debug menu commands.
private  class FSMGraphFrame.LayoutAction
          Action to automatically lay out the graph.
 
Nested classes/interfaces inherited from class ptolemy.vergil.basic.ExtendedGraphFrame
ExtendedGraphFrame.FullScreenAction
 
Nested classes/interfaces inherited from class ptolemy.vergil.basic.BasicGraphFrame
BasicGraphFrame.CopyAction, BasicGraphFrame.CutAction, BasicGraphFrame.EditPreferencesAction, BasicGraphFrame.MoveToBackAction, BasicGraphFrame.MoveToFrontAction, BasicGraphFrame.PasteAction
 
Nested classes/interfaces inherited from class ptolemy.actor.gui.TableauFrame
TableauFrame.ExtensionFileFilter
 
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
protected  FSMGraphController _controller
          The controller.
protected  javax.swing.JMenu _debugMenu
          Debug menu for this frame.
protected  javax.swing.JMenu _graphMenu
          The graph menu.
private  long _lastDelayTime
           
protected  javax.swing.Action _layoutAction
          The action for automatically laying out the graph.
private  java.util.List<IOPort> _modifiedPorts
           
 
Fields inherited from class ptolemy.vergil.basic.BasicGraphFrame
_copyAction, _cutAction, _defaultLibrary, _dropTarget, _editMenu, _editPreferencesAction, _exportPDFAction, _graphPanner, _jgraph, _library, _libraryContextMenuCreator, _libraryModel, _libraryScrollPane, _moveToBackAction, _moveToFrontAction, _openGraphFrames, _palettePane, _pasteAction, _rightComponent, _splitPane, _toolbar, _topLibrary, _zoomFitAction, _zoomInAction, _zoomOutAction, _zoomResetAction, BACKGROUND_COLOR, VERGIL_USER_LIBRARY_NAME
 
Fields inherited from class ptolemy.actor.gui.PtolemyFrame
_query
 
Fields inherited from class ptolemy.actor.gui.TableauFrame
_initialSaveAsFileName, _viewMenu, aboutFile, helpFile
 
Fields inherited from class ptolemy.gui.Top
_CANCELED, _directory, _DISCARDED, _FAILED, _fileFilter, _fileMenu, _fileMenuItems, _helpMenu, _helpMenuItems, _menubar, _SAVED, _statusBar
 
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 java.awt.print.Printable
NO_SUCH_PAGE, PAGE_EXISTS
 
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
FSMGraphFrame(CompositeEntity entity, Tableau tableau)
          Construct a frame associated with the specified FSM model.
FSMGraphFrame(CompositeEntity entity, Tableau tableau, LibraryAttribute defaultLibrary)
          Construct a frame associated with the specified FSM model.
 
Method Summary
protected  void _addMenus()
          Create the menus that are used by this frame.
protected  boolean _close()
          Close the window.
protected  javax.swing.JMenuItem[] _createFileMenuItems()
          Create the items in the File menu.
protected  GraphPane _createGraphPane(NamedObj entity)
          Create a new graph pane.
protected  javax.swing.JMenuItem[] _debugMenuItems()
          Return an array of debug menu items.
protected  void _exportDesignPattern(java.io.Writer writer, NamedObj model, java.lang.String name)
          Export the model into the writer with the given name.
protected  void _finishExportDesignPattern()
          Finish exporting a design pattern.
protected  java.lang.String _getAnimationMenuText()
          Return the text to be used in the animation menu item.
protected  java.awt.event.ActionListener _getDebugMenuListener()
          Return a new DebugMenuListener.
protected  void _prepareExportDesignPattern()
          Prepare to export a design pattern.
 void actionPerformed(java.awt.event.ActionEvent e)
          React to the actions specific to this FSM graph frame.
 void copy()
          Get the currently selected objects from this document, if any, and place them on the clipboard in MoML format.
 
Methods inherited from class ptolemy.vergil.basic.ExtendedGraphFrame
_initExtendedGraphFrame, cancelFullScreen, fullScreen
 
Methods inherited from class ptolemy.vergil.basic.BasicGraphFrame
_checkForImplied, _createDefaultLibrary, _createRightComponent, _createSizeAttribute, _deleteMoML, _getDirectory, _getGraphController, _getGraphModel, _getRightComponent, _getSelectionSet, _initBasicGraphFrame, _isDesignPattern, _saveAsFileDialog, _setDirectory, _setDropIntoEnabled, _writeFile, changeExecuted, changeFailed, clearSelection, createHierarchy, cut, delete, dispose, disposeSuper, expandAllLibraryRows, exportDesignPattern, getCenter, getGraphPanner, getJGraph, getSelectionSet, getVisibleCanvasRectangle, getVisibleRectangle, importDesignPattern, layoutGraph, layoutGraphWithPtolemyLayout, lostOwnership, mouseClicked, mouseDragged, mouseEntered, mouseExited, mouseMoved, mousePressed, mouseReleased, mouseWheelMoved, openContainer, paste, print, redo, saveComponentInFile, saveComponentInLibrary, setCenter, setJGraph, undo, zoom, zoomFit, zoomReset
 
Methods inherited from class ptolemy.actor.gui.PtolemyFrame
_clear, _help, _print, _saveAs, getEffigy, getModel, setModel
 
Methods inherited from class ptolemy.actor.gui.TableauFrame
_about, _confirmFile, _exit, _getDefaultIconImage, _getName, _read, _save, _saveAs, _saveAsHelper, getAlternateTopPack, getConfiguration, getDirectory, getEffigy, getTableau, isModified, pack, printPDF, setModified, setTableau
 
Methods inherited from class ptolemy.gui.Top
_getCurrentDirectory, _open, _openURL, _printCrossPlatform, _printNative, _printPDF, _queryForSave, centerOnScreen, close, deferIfNecessary, getCentering, hideMenuBar, isMenuPopulated, report, report, report, setBackground, setCentering, setDirectory, show
 
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, 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, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, setAlwaysOnTop, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setLocationByPlatform, setLocationRelativeTo, 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, 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

_controller

protected FSMGraphController _controller
The controller. The controller is protected so that the subclass (InterfaceAutomatonGraphFrame) can set it to a more specific controller.


_debugMenu

protected javax.swing.JMenu _debugMenu
Debug menu for this frame.


_graphMenu

protected javax.swing.JMenu _graphMenu
The graph menu.


_layoutAction

protected javax.swing.Action _layoutAction
The action for automatically laying out the graph.


_lastDelayTime

private long _lastDelayTime

_modifiedPorts

private java.util.List<IOPort> _modifiedPorts
Constructor Detail

FSMGraphFrame

public FSMGraphFrame(CompositeEntity entity,
                     Tableau tableau)
Construct a frame associated with the specified FSM model. After constructing this, it is necessary to call setVisible(true) to make the frame appear. This is typically done by calling show() on the controlling tableau. This constructor results in a graph frame that obtains its library either from the model (if it has one) or the default library defined in the configuration.

Parameters:
entity - The model to put in this frame.
tableau - The tableau responsible for this frame.
See Also:
Tableau.show()

FSMGraphFrame

public FSMGraphFrame(CompositeEntity entity,
                     Tableau tableau,
                     LibraryAttribute defaultLibrary)
Construct a frame associated with the specified FSM model. After constructing this, it is necessary to call setVisible(true) to make the frame appear. This is typically done by calling show() on the controlling tableau. This constructor results in a graph frame that obtains its library either from the model (if it has one), or the defaultLibrary argument (if it is non-null), or the default library defined in the configuration.

Parameters:
entity - The model to put in this frame.
tableau - The tableau responsible for this frame.
defaultLibrary - An attribute specifying the default library to use if the model does not have a library.
See Also:
Tableau.show()
Method Detail

actionPerformed

public void actionPerformed(java.awt.event.ActionEvent e)
React to the actions specific to this FSM graph frame.

Specified by:
actionPerformed in interface java.awt.event.ActionListener
Parameters:
e - The action event.

copy

public void copy()
Get the currently selected objects from this document, if any, and place them on the clipboard in MoML format.

Overrides:
copy in class BasicGraphFrame

_addMenus

protected void _addMenus()
Create the menus that are used by this frame. It is essential that _createGraphPane() be called before this.

Overrides:
_addMenus in class ExtendedGraphFrame

_getDebugMenuListener

protected java.awt.event.ActionListener _getDebugMenuListener()
Return a new DebugMenuListener.

Returns:
the new DebugMenuListener.

_debugMenuItems

protected javax.swing.JMenuItem[] _debugMenuItems()
Return an array of debug menu items.

Returns:
an array of debug menu items.

_close

protected boolean _close()
Close the window. Override the base class to remove the debug listener, if there is one.

Overrides:
_close in class BasicGraphFrame
Returns:
False if the user cancels on a save query.

_createFileMenuItems

protected javax.swing.JMenuItem[] _createFileMenuItems()
Create the items in the File menu. A null element in the array represents a separator in the menu.

Overrides:
_createFileMenuItems in class BasicGraphFrame
Returns:
The items in the File menu.

_createGraphPane

protected GraphPane _createGraphPane(NamedObj entity)
Create a new graph pane. Note that this method is called in constructor of the base class, so it must be careful to not reference local variables that may not have yet been created.

Specified by:
_createGraphPane in class BasicGraphFrame
Parameters:
entity - The object to be displayed in the pane (which must be an instance of CompositeEntity).
Returns:
The pane that is created.

_exportDesignPattern

protected void _exportDesignPattern(java.io.Writer writer,
                                    NamedObj model,
                                    java.lang.String name)
                             throws java.io.IOException
Export the model into the writer with the given name. If ptolemy.vergil.fsm is set to true, then only the selected named objects are exported; otherwise, the whole model is exported with its exportMoML() method.

Overrides:
_exportDesignPattern in class BasicGraphFrame
Parameters:
writer - The writer.
model - The model to export.
name - The name of the exported model.
Throws:
java.io.IOException - If an I/O error occurs.

_finishExportDesignPattern

protected void _finishExportDesignPattern()
Finish exporting a design pattern.

Overrides:
_finishExportDesignPattern in class BasicGraphFrame

_getAnimationMenuText

protected java.lang.String _getAnimationMenuText()
Return the text to be used in the animation menu item. In this base class, always return "Animate States".

Returns:
The text for the menu item.

_prepareExportDesignPattern

protected void _prepareExportDesignPattern()
Prepare to export a design pattern.

Overrides:
_prepareExportDesignPattern in class BasicGraphFrame
Throws:
IllegalActionException - Thrown if attributes of the ports to be exported cannot be set.