ptolemy.actor.gui
Class HTMLViewer

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.HTMLViewer
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.awt.print.Printable, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.event.HyperlinkListener, javax.swing.RootPaneContainer, javax.swing.WindowConstants
Direct Known Subclasses:
DocViewer, SingleWindowHTMLViewer, WelcomeWindow

public class HTMLViewer
extends TableauFrame
implements java.awt.print.Printable, javax.swing.event.HyperlinkListener

This class is a toplevel frame that can view HTML documents. This class supports hyperlinks, and has a particular feature to force hyperlinks to be opened in a browser. To do that, specify a hyperlink by giving a fragment (also called a reference) as "in_browser". For example, the following URL will be opened in a browser:

 <a href="http://ptolemy.eecs.berkeley.edu#in_browser">
 
If the URL is about:copyright, then the copyrights will be generated by GenerateCopyrights.generateHTML(Configuration)

If the URL is about:configuration, then the Ptolemy II configuration will be expanded by and the MoML of the configuration will be returned. This is a good way to test the configuration.

If the URL starts with ptdoc:, then the Ptolemy documentation is opened. For example

 < a href="ptdoc:ptolemy.actor.gui.HTMLViewer">HTMLViewer</a>
 
will open the Ptolemy documentation for this class. For details see GetDocumentationAction.

This class supports printing and will save the text to a .html file. The url that is viewed can be changed by calling the setPage method.

Since:
Ptolemy II 1.0
Version:
$Id: HTMLViewer.java 57040 2010-01-27 20:52:32Z cxh $
Author:
Steve Neuendorffer and Edward A. Lee
See Also:
Serialized Form
Accepted Rating:
Red (johnr)
Proposed Rating:
Yellow (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  java.net.URL _base
          The base as specified by setBase().
private static javax.swing.text.html.HTMLEditorKit _HTMLEditorKit
          The HTMLEditorKit associated with this viewer.
protected  javax.swing.JScrollPane _scroller
          The main scroll pane.
private static java.net.URL _styleSheetURL
          The url that refers to $PTII/doc/default.css.
 javax.swing.JEditorPane pane
          The text pane.
 
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
HTMLViewer()
          Construct a blank viewer.
HTMLViewer(Tableau tableau)
          Construct an empty top-level frame managed by the specified tableau and the default status bar.
 
Method Summary
protected  void _addMainPane()
          Add the main content pane (for HTML).
private  void _init()
          Initialize the HTMLViewer.
protected  void _setScrollerSize(int width, int height)
          Set the scroller size.
protected  void _writeFile(java.io.File file)
          Write the model to the specified file.
 java.net.URL getPage()
          Get the page displayed by this viewer.
 void hyperlinkUpdate(javax.swing.event.HyperlinkEvent event)
          React to a hyperlink being clicked on in the rendered HTML.
 int print(java.awt.Graphics graphics, java.awt.print.PageFormat format, int index)
          Print the documentation to a printer.
 void setBase(java.net.URL base)
          Set the base URL for relative accesses.
 void setPage(java.net.URL page)
          Set the page displayed by this viewer to be that given by the specified URL.
 void setSize(int width, int height)
          Override the base class to set the size of the scroll pane.
 void setText(java.lang.String text)
          Set the text displayed by this viewer.
 
Methods inherited from class ptolemy.actor.gui.TableauFrame
_about, _addMenus, _close, _confirmFile, _exit, _getDefaultIconImage, _getName, _help, _read, _save, _saveAs, _saveAs, _saveAsHelper, getAlternateTopPack, getConfiguration, getDirectory, getEffigy, getEffigy, getTableau, isModified, pack, printPDF, setModified, setTableau
 
Methods inherited from class ptolemy.gui.Top
_clear, _createFileMenuItems, _getCurrentDirectory, _open, _openURL, _print, _printCrossPlatform, _printNative, _printPDF, _queryForSave, _saveAsFileDialog, 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, 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

pane

public javax.swing.JEditorPane pane
The text pane.


_scroller

protected javax.swing.JScrollPane _scroller
The main scroll pane.


_base

private java.net.URL _base
The base as specified by setBase().


_HTMLEditorKit

private static javax.swing.text.html.HTMLEditorKit _HTMLEditorKit
The HTMLEditorKit associated with this viewer.


_styleSheetURL

private static java.net.URL _styleSheetURL
The url that refers to $PTII/doc/default.css.

Constructor Detail

HTMLViewer

public HTMLViewer()
Construct a blank viewer.


HTMLViewer

public HTMLViewer(Tableau tableau)
Construct an empty top-level frame managed by the specified tableau and the default status bar. After constructing this, it is necessary to call setVisible(true) to make the frame appear. It may also be desirable to call centerOnScreen().

Parameters:
tableau - The managing tableau.
Method Detail

getPage

public java.net.URL getPage()
Get the page displayed by this viewer.

Returns:
The page displayed by this viewer.
See Also:
setPage(URL)

hyperlinkUpdate

public void hyperlinkUpdate(javax.swing.event.HyperlinkEvent event)
React to a hyperlink being clicked on in the rendered HTML. This method opens the hyperlink URL in a new window, using the configuration. This means that hyperlinks can reference any file that the configuration can open, including MoML files. It is assumed this is called in the AWT event thread.

Specified by:
hyperlinkUpdate in interface javax.swing.event.HyperlinkListener
Parameters:
event - The hyperlink event.

print

public int print(java.awt.Graphics graphics,
                 java.awt.print.PageFormat format,
                 int index)
          throws java.awt.print.PrinterException
Print the documentation to a printer. The documentation will be scaled to fit the width of the paper, growing to as many pages as is necessary.

Specified by:
print in interface java.awt.print.Printable
Parameters:
graphics - The context into which the page is drawn.
format - The size and orientation of the page being drawn.
index - The zero based index of the page to be drawn.
Returns:
PAGE_EXISTS if the page is rendered successfully, or NO_SUCH_PAGE if pageIndex specifies a non-existent page.
Throws:
java.awt.print.PrinterException - If the print job is terminated.

setBase

public void setBase(java.net.URL base)
Set the base URL for relative accesses.

Parameters:
base - The base for relative hyperlink references.

setPage

public void setPage(java.net.URL page)
             throws java.io.IOException
Set the page displayed by this viewer to be that given by the specified URL.

Parameters:
page - The location of the documentation.
Throws:
java.io.IOException - If the page cannot be read.
See Also:
getPage()

setSize

public void setSize(int width,
                    int height)
Override the base class to set the size of the scroll pane. Regrettably, this is necessary because swing packers ignore the specified size of a container. If this is not called in the AWT event thread, then execution is deferred and executed in that thread.

Overrides:
setSize in class java.awt.Component
Parameters:
width - The width of the scroll pane.
height - The height of the scroll pane.

setText

public void setText(java.lang.String text)
Set the text displayed by this viewer.

Parameters:
text - The text to display.

_addMainPane

protected void _addMainPane()
Add the main content pane (for HTML).


_setScrollerSize

protected void _setScrollerSize(int width,
                                int height)
Set the scroller size.

Parameters:
width - The width.
height - The width.

_writeFile

protected void _writeFile(java.io.File file)
                   throws java.io.IOException
Write the model to the specified file. Note that this does not defer to the effigy.

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

_init

private void _init()
Initialize the HTMLViewer.