Package ptolemy.gui
Class JTextAreaExec
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JPanel
-
- ptolemy.gui.JTextAreaExec
-
- All Implemented Interfaces:
java.awt.image.ImageObserver
,java.awt.MenuContainer
,java.io.Serializable
,javax.accessibility.Accessible
,ExecuteCommands
public class JTextAreaExec extends javax.swing.JPanel implements ExecuteCommands
Execute commands in a subprocess and display them in a JTextArea.As an alternative to this class, see
StringBufferExec
, which writes to a StringBuffer, andStreamExec
, which writes to stderr and stdout.Loosely based on Example1.java from http://java.sun.com/products/jfc/tsc/articles/threads/threads2.html
See also http://developer.java.sun.com/developer/qow/archive/135/index.jsp (1/11: Broken) and http://jw.itworld.com/javaworld/jw-12-2000/jw-1229-traps.html.
- Since:
- Ptolemy II 2.0
- Version:
- $Id$
- Author:
- Christopher Hylands
- See Also:
StringBufferExec
,StreamExec
, Serialized Form- Pt.AcceptedRating:
- Red (cxh)
- Pt.ProposedRating:
- Red (cxh)
-
-
Nested Class Summary
-
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
-
-
Field Summary
-
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
-
-
Constructor Summary
Constructors Constructor Description JTextAreaExec(java.lang.String name, boolean showButtons)
Create the JTextArea, progress bar, status text field and optionally Start, Cancel and Clear buttons.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
appendJTextArea(java.lang.String text)
Append the text message to the JTextArea and include a trailing newline.void
appendToPath(java.lang.String directoryName)
Append to the path of the subprocess.void
cancel()
Cancel any running commands.void
clear()
Clear the text area, status bar and progress bar.java.lang.String
getenv(java.lang.String key)
Get the value of the environment of the subprocess.int
getLastSubprocessReturnCode()
Return the return code of the last subprocess that was executed.javax.swing.JButton
getStartButton()
Return the Start button.static void
main(java.lang.String[] args)
Main method used for testing.void
setCommands(java.util.List commands)
Set the list of commands.void
setWorkingDirectory(java.io.File workingDirectory)
Set the working directory of the subprocess.void
start()
Start running the commands.void
stderr(java.lang.String text)
Append the text message to stderr.void
stdout(java.lang.String text)
Append the text message to the output.void
updateStatusBar(java.lang.String text)
Update the status area with the text message.-
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
-
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, 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, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, 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, 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, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, 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, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
-
-
-
Constructor Detail
-
JTextAreaExec
public JTextAreaExec(java.lang.String name, boolean showButtons)
Create the JTextArea, progress bar, status text field and optionally Start, Cancel and Clear buttons.- Parameters:
name
- A String containing the name to label the JTextArea with.showButtons
- True if the Start, Cancel and Clear buttons should be made visible.
-
-
Method Detail
-
appendJTextArea
public void appendJTextArea(java.lang.String text)
Append the text message to the JTextArea and include a trailing newline.- Parameters:
text
- The text message to be appended.
-
appendToPath
public void appendToPath(java.lang.String directoryName)
Append to the path of the subprocess. If directoryName is already in the path, then it is not appended.- Specified by:
appendToPath
in interfaceExecuteCommands
- Parameters:
directoryName
- The name of the directory to append to the path.
-
cancel
public void cancel()
Cancel any running commands.- Specified by:
cancel
in interfaceExecuteCommands
-
clear
public void clear()
Clear the text area, status bar and progress bar.- Specified by:
clear
in interfaceExecuteCommands
-
getenv
public java.lang.String getenv(java.lang.String key)
Get the value of the environment of the subprocess.- Specified by:
getenv
in interfaceExecuteCommands
- Parameters:
key
- The environment variable.- Returns:
- The value of the key. If the key is not set, then null is returned. If appendToPath() has been called, and the then the environment for the subprocess is checked, which might be different than the environment for the current process because appendToPath() was called. Note that that key is searched for in a case-insensitive mode.
-
getLastSubprocessReturnCode
public int getLastSubprocessReturnCode()
Return the return code of the last subprocess that was executed.- Specified by:
getLastSubprocessReturnCode
in interfaceExecuteCommands
- Returns:
- the return code of the last subprocess that was executed.
-
getStartButton
public javax.swing.JButton getStartButton()
Return the Start button. This method is used to get the Start button so we can set the focus to it.- Returns:
- the Start button.
-
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.JTextAreaExec
- Parameters:
args
- The command line arguments, currently ignored.
-
setCommands
public void setCommands(java.util.List commands)
Set the list of commands.- Specified by:
setCommands
in interfaceExecuteCommands
- Parameters:
commands
- a List of Strings, where each element is a command.
-
setWorkingDirectory
public void setWorkingDirectory(java.io.File workingDirectory)
Set the working directory of the subprocess.- Specified by:
setWorkingDirectory
in interfaceExecuteCommands
- Parameters:
workingDirectory
- The working directory of the subprocess. If this argument is null, then the subprocess is executed in the working directory of the current process.
-
start
public void start()
Start running the commands.- Specified by:
start
in interfaceExecuteCommands
-
stderr
public void stderr(java.lang.String text)
Append the text message to stderr. The output automatically gets a trailing newline appended.- Specified by:
stderr
in interfaceExecuteCommands
- Parameters:
text
- The text to append to standard error.
-
stdout
public void stdout(java.lang.String text)
Append the text message to the output. The output automatically gets a trailing newline appended.- Specified by:
stdout
in interfaceExecuteCommands
- Parameters:
text
- The text to append to standard out.
-
updateStatusBar
public void updateStatusBar(java.lang.String text)
Update the status area with the text message.- Specified by:
updateStatusBar
in interfaceExecuteCommands
- Parameters:
text
- The text with which the status area is updated.
-
-