|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjava.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
ptolemy.gui.JTextAreaExec
public class JTextAreaExec
Execute commands in a subprocess and display them in a JTextArea.
As an alternative to this class, see
StringBufferExec
, which writes to a StringBuffer,
and
StreamExec
, 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 and http://jw.itworld.com/javaworld/jw-12-2000/jw-1229-traps.html
StringBufferExec
,
StreamExec
,
Serialized Form
Red (cxh) |
Red (cxh) |
Nested Class Summary | |
---|---|
private static class |
JTextAreaExec._StreamReaderThread
|
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 javax.swing.JButton |
_cancelButton
The Cancel Button. |
private javax.swing.JButton |
_clearButton
The Clear Button. |
private java.awt.event.ActionListener |
_clearListener
|
private java.util.List |
_commands
The list of command to be executed. |
private boolean |
_debug
|
private java.lang.String[] |
_envp
The environment, which is an array of Strings of the form name=value . |
private java.awt.event.ActionListener |
_interruptListener
|
private javax.swing.JTextArea |
_jTextArea
JTextArea to write the command and the output of the command. |
private java.lang.Process |
_process
The Process that we are running. |
private javax.swing.JProgressBar |
_progressBar
Progress bar where the length of the bar is the total number of commands being run. |
private javax.swing.JButton |
_startButton
The Start Button. |
private java.awt.event.ActionListener |
_startListener
|
private javax.swing.JLabel |
_statusBar
Label at the bottom that provides feedback as to what is happening. |
private int |
_subprocessReturnCode
The return code of the last Runtime.exec() command. |
private SwingWorker |
_worker
SwingWorker that actually does the work. |
private java.io.File |
_workingDirectory
The working directory of the subprocess. |
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 | |
---|---|
JTextAreaExec(java.lang.String name,
boolean showButtons)
Create the JTextArea, progress bar, status text field and optionally Start, Cancel and Clear buttons. |
Method Summary | |
---|---|
private void |
_enableStartButton()
|
private java.lang.Object |
_executeCommands()
|
private void |
_updateProgressBar(int i)
|
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, 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 |
---|
private java.awt.event.ActionListener _clearListener
private java.awt.event.ActionListener _interruptListener
private java.awt.event.ActionListener _startListener
private javax.swing.JButton _cancelButton
private javax.swing.JButton _clearButton
private java.util.List _commands
private final boolean _debug
private java.lang.String[] _envp
name=value
. If this variable is null, then
the environment of the calling process is used.
private javax.swing.JTextArea _jTextArea
private java.lang.Process _process
private int _subprocessReturnCode
private javax.swing.JProgressBar _progressBar
private javax.swing.JLabel _statusBar
private javax.swing.JButton _startButton
private SwingWorker _worker
private java.io.File _workingDirectory
Constructor Detail |
---|
public JTextAreaExec(java.lang.String name, boolean showButtons)
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 |
---|
public void appendJTextArea(java.lang.String text)
text
- The text message to be appended.public void appendToPath(java.lang.String directoryName)
appendToPath
in interface ExecuteCommands
directoryName
- The name of the directory to append to the path.public void cancel()
cancel
in interface ExecuteCommands
public void clear()
clear
in interface ExecuteCommands
public java.lang.String getenv(java.lang.String key)
getenv
in interface ExecuteCommands
key
- The environment variable.
public int getLastSubprocessReturnCode()
getLastSubprocessReturnCode
in interface ExecuteCommands
public javax.swing.JButton getStartButton()
public static void main(java.lang.String[] args)
java -classpath $PTII ptolemy.gui.JTextAreaExec
args
- The command line arguments, currently ignored.public void setCommands(java.util.List commands)
setCommands
in interface ExecuteCommands
commands
- a List of Strings, where each element is a command.public void setWorkingDirectory(java.io.File workingDirectory)
setWorkingDirectory
in interface ExecuteCommands
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.public void start()
start
in interface ExecuteCommands
public void stderr(java.lang.String text)
stderr
in interface ExecuteCommands
text
- The text to append to standard error.public void stdout(java.lang.String text)
stdout
in interface ExecuteCommands
text
- The text to append to standard out.public void updateStatusBar(java.lang.String text)
updateStatusBar
in interface ExecuteCommands
text
- The text with which the status area is updated.private void _enableStartButton()
private java.lang.Object _executeCommands()
private void _updateProgressBar(int i)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |