ptolemy.actor.gui.exec
Class ExecShellTableau

java.lang.Object
  extended by ptolemy.kernel.util.NamedObj
      extended by ptolemy.kernel.InstantiableNamedObj
          extended by ptolemy.kernel.Entity
              extended by ptolemy.kernel.ComponentEntity
                  extended by ptolemy.kernel.CompositeEntity
                      extended by ptolemy.actor.gui.Tableau
                          extended by ptolemy.actor.gui.exec.ExecShellTableau
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, ShellInterpreter, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable

public class ExecShellTableau
extends Tableau
implements ShellInterpreter

A tableau that provides a Exec Shell for interacting with the Bash shell.

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

Nested Class Summary
private static class ExecShellTableau._StreamReaderThread
           
static class ExecShellTableau.ExecShellFrame
          The frame that is created by an instance of ExecShellTableau.
static class ExecShellTableau.Factory
          A factory that creates a control panel to display a Exec Shell.
 
Nested classes/interfaces inherited from class ptolemy.kernel.CompositeEntity
CompositeEntity.ContainedObjectsIterator
 
Field Summary
private  java.lang.Process _interpreter
           
 ExecShellTableau.ExecShellFrame frame
          The frame in which text is written.
 
Fields inherited from class ptolemy.actor.gui.Tableau
size
 
Fields inherited from class ptolemy.kernel.CompositeEntity
_levelCrossingLinks
 
Fields inherited from class ptolemy.kernel.util.NamedObj
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS
 
Constructor Summary
ExecShellTableau(ExecShellEffigy container, java.lang.String name)
          Create a new tableau.
 
Method Summary
private  java.lang.String _executeCommand(java.lang.String command)
           
 java.lang.String evaluateCommand(java.lang.String command)
          Evaluate the specified command.
 boolean isCommandComplete(java.lang.String command)
          Return true if the specified command is complete (ready to be interpreted).
 void stderr(java.lang.String text)
          Append the text message to text area.
 void stdout(java.lang.String text)
          Append the text message to the text area.
 
Methods inherited from class ptolemy.actor.gui.Tableau
attributeChanged, clone, close, getFrame, getTitle, isEditable, isMaster, setContainer, setEditable, setFrame, setMaster, setTitle, show
 
Methods inherited from class ptolemy.kernel.CompositeEntity
_addEntity, _addRelation, _adjustDeferrals, _deepOpaqueEntityList, _description, _exportMoMLContents, _finishedAddEntity, _recordDecoratedAttributes, _removeEntity, _removeRelation, _validateSettables, allAtomicEntityList, allCompositeEntityList, allowLevelCrossingConnect, classDefinitionList, connect, connect, containedObjectsIterator, deepEntityList, deepGetEntities, deepOpaqueEntityList, deepRelationSet, entityList, entityList, exportLinks, exportMoML, getAttribute, getEntities, getEntity, getPort, getRelation, getRelations, isAtomic, isOpaque, lazyAllAtomicEntityList, lazyAllCompositeEntityList, lazyClassDefinitionList, lazyDeepEntityList, lazyEntityList, lazyRelationList, newRelation, numberOfEntities, numberOfRelations, numEntities, numRelations, relationList, removeAllEntities, removeAllRelations, setClassDefinition, statistics, uniqueName
 
Methods inherited from class ptolemy.kernel.ComponentEntity
_addPort, _checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, newPort, propagateExistence, setName
 
Methods inherited from class ptolemy.kernel.Entity
_removePort, connectedPortList, connectedPorts, connectionsChanged, getPorts, linkedRelationList, linkedRelations, portList, removeAllPorts
 
Methods inherited from class ptolemy.kernel.InstantiableNamedObj
_setParent, getChildren, getElementName, getParent, getPrototypeList, isClassDefinition, isWithinClassDefinition
 
Methods inherited from class ptolemy.kernel.util.NamedObj
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _debug, _debug, _debug, _debug, _debug, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _propagateValue, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, attributeList, attributeList, attributeTypeChanged, clone, deepContains, depthInHierarchy, description, description, event, executeChangeRequests, exportMoML, exportMoML, exportMoML, exportMoML, exportMoMLPlain, getAttribute, getAttributes, getChangeListeners, getClassName, getDecoratorAttribute, getDecoratorAttributes, getDerivedLevel, getDerivedList, getDisplayName, getFullName, getModelErrorHandler, getName, getName, getSource, handleModelError, isDeferringChangeRequests, isOverridden, isPersistent, lazyContainedObjectsIterator, message, propagateValue, propagateValues, removeChangeListener, removeDebugListener, requestChange, setClassName, setDeferringChangeRequests, setDerivedLevel, setDisplayName, setModelErrorHandler, setPersistent, setSource, sortContainedObjects, toplevel, toString, validateSettables, workspace
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface ptolemy.kernel.util.Derivable
getDerivedLevel, getDerivedList, propagateValue
 
Methods inherited from interface ptolemy.kernel.util.Nameable
description, getDisplayName, getFullName, getName, getName
 

Field Detail

frame

public ExecShellTableau.ExecShellFrame frame
The frame in which text is written.


_interpreter

private java.lang.Process _interpreter
Constructor Detail

ExecShellTableau

public ExecShellTableau(ExecShellEffigy container,
                        java.lang.String name)
                 throws IllegalActionException,
                        NameDuplicationException
Create a new tableau. The tableau is itself an entity contained by the effigy and having the specified name. The frame is not made visible automatically. You must call show() to make it visible.

Parameters:
container - The containing effigy.
name - The name of this tableau within the specified effigy.
Throws:
IllegalActionException - If the tableau is not acceptable to the specified container.
NameDuplicationException - If the container already contains an entity with the specified name.
Method Detail

evaluateCommand

public java.lang.String evaluateCommand(java.lang.String command)
                                 throws java.lang.Exception
Evaluate the specified command.

Specified by:
evaluateCommand in interface ShellInterpreter
Parameters:
command - The command.
Returns:
The return value of the command, or null if there is none.
Throws:
java.lang.Exception - If something goes wrong processing the command.
See Also:
ShellTextArea.returnResult(String)

isCommandComplete

public boolean isCommandComplete(java.lang.String command)
Return true if the specified command is complete (ready to be interpreted).

Specified by:
isCommandComplete in interface ShellInterpreter
Parameters:
command - The command.
Returns:
True

stderr

public void stderr(java.lang.String text)
Append the text message to text area. The output automatically gets a trailing newline appended.

Parameters:
text - The test to be appended.

stdout

public void stdout(java.lang.String text)
Append the text message to the text area. The output automatically gets a trailing newline appended.

Parameters:
text - The test to be appended.

_executeCommand

private java.lang.String _executeCommand(java.lang.String command)