ptolemy.gui
Class ShellTextArea

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by ptolemy.gui.ShellTextArea
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible

public class ShellTextArea
extends javax.swing.JPanel

A text area supporting shell-style interactions.

Since:
Ptolemy II 3.0
Version:
$Id: ShellTextArea.java 57040 2010-01-27 20:52:32Z cxh $
Author:
John Reekie, Christopher Hylands, Edward A. Lee
See Also:
Serialized Form
Accepted Rating:
Red (cxh)
Proposed Rating:
Red (cxh)

Nested Class Summary
private  class ShellTextArea.ShellKeyListener
           
 
Nested classes/interfaces inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
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.lang.StringBuffer _commandBuffer
           
private  java.util.Vector _historyCommands
           
private  int _historyCursor
           
private  java.lang.String _initialMessage
           
private  ShellInterpreter _interpreter
           
private  javax.swing.JTextArea _jTextArea
           
private  int _promptCursor
           
 java.lang.String contPrompt
          Prompt to use on continuation lines.
 int historyLength
          Size of the history to keep.
 java.lang.String mainPrompt
          Main prompt.
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
ShellTextArea()
          Create a new instance with no initial message.
ShellTextArea(java.lang.String initialMessage)
          Create a new instance with the specified initial message.
 
Method Summary
private  void _evalCommand()
           
private  void _nextCommand()
           
private  void _previousCommand()
           
private  void _updateHistory(java.lang.String command)
           
 void addNotify()
          Override the base class to output the first prompt.
 void appendJTextArea(java.lang.String text)
          Append the specified text to the JTextArea and update the prompt cursor.
 void clearJTextArea()
          Clear the JTextArea and reset the prompt cursor.
 ShellInterpreter getInterpreter()
          Get the interpreter that has been registered with setInterpreter().
 void initialize(java.lang.String initialMessage)
          Initialize the text area with the given starting message, followed by a prompt.
static void main(java.lang.String[] args)
          Main method used for testing.
 void replaceRangeJTextArea(java.lang.String text, int start, int end)
          Replace a range in the JTextArea.
 void returnResult(java.lang.String result)
          Return the result of a command evaluation.
 void setEditable(boolean editable)
          Set the associated text area editable (with a true argument) or not editable (with a false argument).
 void setInterpreter(ShellInterpreter interpreter)
          Set the interpreter.
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, 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, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

mainPrompt

public java.lang.String mainPrompt
Main prompt.


contPrompt

public java.lang.String contPrompt
Prompt to use on continuation lines.


historyLength

public int historyLength
Size of the history to keep.


_commandBuffer

private java.lang.StringBuffer _commandBuffer

_jTextArea

private javax.swing.JTextArea _jTextArea

_promptCursor

private int _promptCursor

_historyCursor

private int _historyCursor

_historyCommands

private java.util.Vector _historyCommands

_initialMessage

private java.lang.String _initialMessage

_interpreter

private ShellInterpreter _interpreter
Constructor Detail

ShellTextArea

public ShellTextArea()
Create a new instance with no initial message.


ShellTextArea

public ShellTextArea(java.lang.String initialMessage)
Create a new instance with the specified initial message.

Parameters:
initialMessage - The initial message.
Method Detail

addNotify

public void addNotify()
Override the base class to output the first prompt. We need to do this here because we can't write to the TextArea until the peer has been created.

Overrides:
addNotify in class javax.swing.JComponent

appendJTextArea

public void appendJTextArea(java.lang.String text)
Append the specified text to the JTextArea and update the prompt cursor. The text will actually be appended in the swing thread, not immediately. This method immediately returns.

Parameters:
text - The text to append to the text area.

clearJTextArea

public void clearJTextArea()
Clear the JTextArea and reset the prompt cursor. The clearing is done in the swing thread, not immediately. This method immediately returns.


getInterpreter

public ShellInterpreter getInterpreter()
Get the interpreter that has been registered with setInterpreter().

Returns:
The interpreter, or null if none has been set.
See Also:
setInterpreter(ShellInterpreter)

initialize

public void initialize(java.lang.String initialMessage)
Initialize the text area with the given starting message, followed by a prompt. If the argument is null or the empty string, then only a prompt is shown.

Parameters:
initialMessage - The initial message.

main

public static void main(java.lang.String[] args)
Main method used for testing. To run a simple test, use:
        java -classpath $PTII ptolemy.gui.ShellTextArea
  

Parameters:
args - Currently ignored.

replaceRangeJTextArea

public void replaceRangeJTextArea(java.lang.String text,
                                  int start,
                                  int end)
Replace a range in the JTextArea.

Parameters:
text - The text with which the JTextArea is updated.
start - The start index.
end - The end index.

returnResult

public void returnResult(java.lang.String result)
Return the result of a command evaluation. This method is used when it is impractical to insist on the result being returned by evaluateCommand() of a ShellInterpreter. For example, computing the result may take a while.

Parameters:
result - The result to return.

setEditable

public void setEditable(boolean editable)
Set the associated text area editable (with a true argument) or not editable (with a false argument). This should be called in the swing event thread.

Parameters:
editable - True to make the text area editable, false to make it uneditable.

setInterpreter

public void setInterpreter(ShellInterpreter interpreter)
Set the interpreter.

Parameters:
interpreter - The interpreter.
See Also:
getInterpreter()

_evalCommand

private void _evalCommand()

_nextCommand

private void _nextCommand()

_previousCommand

private void _previousCommand()

_updateHistory

private void _updateHistory(java.lang.String command)