ptolemy.actor.gui
Class PtolemyFrame

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
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants
Direct Known Subclasses:
BasicGraphFrame, CodeGeneratorGUI, DocBuilderGUI, GeneratorTableau.GeneratorFrame, JVMTableau.JVMFrame, KielerLayoutTableau.KielerLayoutFrame, MathematicalModelConverterGUI, ModelFrame, TreeTableau.TreeFrame

public abstract class PtolemyFrame
extends TableauFrame

This is a top-level window for Ptolemy models with a menubar and status bar. Derived classes should add components to the content pane using a line like:

 getContentPane().add(component, BorderLayout.CENTER);
 
This extends the base class by associating with it a Ptolemy II model or object and specifying a model error handler for that model that handles model errors by throwing an exception.

If the model contains an instance of FileParameter named "_help", then the file or URL specified by that attribute will be opened when "Help" in the Help menu is invoked.

Since:
Ptolemy II 1.0
Version:
$Id: PtolemyFrame.java 59167 2010-09-21 17:08:02Z cxh $
Author:
Edward A. Lee
See Also:
Serialized Form
Accepted Rating:
Yellow (johnr)
Proposed Rating:
Green (eal)

Nested Class Summary
 
Nested classes/interfaces inherited from class ptolemy.actor.gui.TableauFrame
TableauFrame.ExtensionFileFilter, TableauFrame.ViewMenuListener
 
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  NamedObj _model
           
protected  Query _query
          The query used to specify save as options.
 
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 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
PtolemyFrame(NamedObj model)
          Construct a frame associated with the specified Ptolemy II model.
PtolemyFrame(NamedObj model, Tableau tableau)
          Construct a frame associated with the specified Ptolemy II model or object.
 
Method Summary
protected  boolean _clear()
          Clear the current contents.
protected  boolean _close()
          Close the window.
protected  void _help()
          Display more detailed information than given by _about().
protected  void _print()
          Print the contents.
protected  boolean _saveAs()
          Query the user for a filename, save the model to that file, and open a new window to view the model.
protected  javax.swing.JFileChooser _saveAsFileDialog()
          Create and return a file dialog for the "Save As" command.
protected  void _writeFile(java.io.File file)
          Write the model to the specified file.
 void expandAllLibraryRows()
          Expand all the rows of the library.
 Effigy getEffigy()
          Override the base class to check to see whether the effigy is still the valid one for the associated model.
 NamedObj getModel()
          Get the associated model or Ptolemy II object.
 void setModel(NamedObj model)
          Set the associated model.
 
Methods inherited from class ptolemy.actor.gui.TableauFrame
_about, _addMenus, _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
_createFileMenuItems, _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, 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, 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

_query

protected Query _query
The query used to specify save as options.


_model

private NamedObj _model
Constructor Detail

PtolemyFrame

public PtolemyFrame(NamedObj model)
Construct a frame associated with the specified Ptolemy II 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.

Parameters:
model - The model to put in this frame, or null if none.
See Also:
Tableau.show()

PtolemyFrame

public PtolemyFrame(NamedObj model,
                    Tableau tableau)
Construct a frame associated with the specified Ptolemy II model or object. 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.

Parameters:
model - The model or object to put in this frame, or null if none.
tableau - The tableau responsible for this frame, or null if none.
See Also:
Tableau.show()
Method Detail

expandAllLibraryRows

public void expandAllLibraryRows()
Expand all the rows of the library. Expanding all the rows is useful for testing. In this baseclass, this method merely returns. In a derived class, this method should expand all the library rows in the configuration.


getEffigy

public Effigy getEffigy()
Override the base class to check to see whether the effigy is still the valid one for the associated model. If it is not, create a new effigy for the model and associate the tableau with that effigy.

Overrides:
getEffigy in class TableauFrame
Returns:
The effigy for the model, or null if none exists.

getModel

public NamedObj getModel()
Get the associated model or Ptolemy II object. This can be a CompositeEntity or an EditorIcon, and possibly other Ptolemy II objects.

Returns:
The associated model or object.
See Also:
setModel(NamedObj)

setModel

public void setModel(NamedObj model)
Set the associated model. This also sets an error handler for the model that results in model errors throwing an exception and associates an undo stack with the model.

Parameters:
model - The associated model.
See Also:
getModel()

_clear

protected boolean _clear()
Clear the current contents. First, check to see whether the contents have been modified, and if so, then prompt the user to save them. A return value of false indicates that the user has canceled the action.

Overrides:
_clear in class Top
Returns:
False if the user cancels the clear.

_close

protected boolean _close()
Close the window. Look for any Dialogs that are open and close those first. If a DialogTableau returns false then it means that the user has cancelled the close operation.

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

_help

protected void _help()
Display more detailed information than given by _about(). If the model contains an instance of FileParameter named "_help", that the file or URL given by that attribute is opened. Otherwise, a built-in generic help file is opened.

Overrides:
_help in class TableauFrame
See Also:
FileParameter

_print

protected void _print()
Print the contents. If this frame implements either the Printable or Pageable then those interfaces are used to print it. This overrides the base class to queue a change request to do the printing, because otherwise, printing will cause a deadlock.

Overrides:
_print in class Top

_saveAs

protected boolean _saveAs()
Query the user for a filename, save the model to that file, and open a new window to view the model. If setModel() has been called, then the initial filename is set to the name of the model. If setModel() has not yet been called, then the initial filename to model.xml. If the model is not idle or paused, we first pause it before calling the parent _saveAs() method and then resume when we return from the parent _saveAs() method.

Overrides:
_saveAs in class TableauFrame
Returns:
True if the save succeeds.

_saveAsFileDialog

protected javax.swing.JFileChooser _saveAsFileDialog()
Create and return a file dialog for the "Save As" command. This overrides the base class to add options to the dialog.

Overrides:
_saveAsFileDialog in class Top
Returns:
A file dialog for save as.

_writeFile

protected void _writeFile(java.io.File file)
                   throws java.io.IOException
Write the model to the specified file. This method delegates to the top effigy containing the associated Tableau, if there is one, and otherwise throws an exception. This ensures that the data written is the description of the entire model, not just the portion within some composite actor. It also adjusts the URIAttribute in the model to match the specified file, if necessary, and creates one otherwise. It also overrides the base class to update the attributes if they need to update their content.

Overrides:
_writeFile in class TableauFrame
Parameters:
file - The file to write to.
Throws:
java.io.IOException - If the write fails.