com.singularsys.jepexamples.consoles
Class Console

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by java.awt.Panel
              extended by java.applet.Applet
                  extended by com.singularsys.jepexamples.consoles.Console
All Implemented Interfaces:
java.awt.event.KeyListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible
Direct Known Subclasses:
BigDecimalConsole, CPConsole, PostfixEvaluationConsole, PrefixDumperConsole, PrintConsole, VectorConsole

public class Console
extends java.applet.Applet
implements java.awt.event.KeyListener

This class implements a simple command line utility for evaluating mathematical expressions.

   Usage: java com.singularsys.jepexamples.consoles.Console [expression]
 
If an argument is passed, it is interpreted as an expression and evaluated. Otherwise, a prompt is printed, and the user can enter expressions to be evaluated.

This class and its subclasses can also be run as a java applet which displays a textarea for interactive input.

This class has been designed to be sub classed to allow different consol applications. The methods

 public void initialise()
 public void processEquation(Node node) throws Exception
 public boolean testSpecialCommands(String command)
 public void printPrompt()
 public void printIntroText()
 public void printHelp()
 
can all be overwritten.

Furthermore main should be overwritten. For example

 
        public static void main(String args[]) {
                Console c = new DJepConsole();
                c.run(args);
        }

The main input loop is approximately

 initialise();
 printIntroText();
 print(getPrompt());
 String command;
 while((command = getCommand()) != null) 
 {
        if(command.equals("quit") || command.equals("exit"))
                break;
        if(!testSpecialCommands(command)) continue;
   try {
          Node n = j.parse(command);
          processEquation(n);
   } catch(Exception e) {}
        print(getPrompt());
 }

See Also:
Serialized Form

Nested Class Summary
static class Console.SPEC_ACTION
           
 
Nested classes/interfaces inherited from class java.applet.Applet
java.applet.Applet.AccessibleApplet
 
Nested classes/interfaces inherited from class java.awt.Panel
java.awt.Panel.AccessibleAWTPanel
 
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.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
protected  Jep jep
          Main Jep object
protected  java.awt.TextArea ta
          Text area for user input in applets.
 
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
Console()
          Constructor
 
Method Summary
 java.lang.String getAppletInfo()
           
protected  java.lang.String getCommand()
          Get a command from the input.
 java.lang.String getPrompt()
          Prints the prompt string.
 boolean handleError(java.lang.Exception e)
          Handle an error in the parse and evaluate routines.
 void init()
          Applet initialization
 void initialise()
          sets up all the needed objects.
 void inputLoop()
          The main input loop for interactive operation.
 void keyPressed(java.awt.event.KeyEvent arg0)
           
 void keyReleased(java.awt.event.KeyEvent event)
          Handles keyRelease events
 void keyTyped(java.awt.event.KeyEvent arg0)
           
static void main(java.lang.String[] args)
          Creates a new Console object and calls run()
 void print(java.lang.Object o)
          Prints a line of text no newline.
 void printFuns()
          Prints a list of defined functions.
 void printHelp()
          Print help message.
 void printIntroText()
          Prints introductory text.
 void println(java.lang.Object o)
          Prints a line of text no newline.
 void printOps()
          Prints a list of defined operators.
 void printStdHelp()
          Prints a standard help message.
 void printVars()
          Prints a list of variable.
 boolean processCommand(java.lang.String command)
          Process a single command.
 void processEquation(Node node)
          Performs the required operation on a node.
 void run(java.lang.String[] args)
          The main entry point with command line arguments
 java.lang.String[] split(java.lang.String s)
          Splits a string on spaces.
 Console.SPEC_ACTION testSpecialCommands(java.lang.String command)
          Checks for special commands.
 
Methods inherited from class java.applet.Applet
destroy, getAccessibleContext, getAppletContext, getAudioClip, getAudioClip, getCodeBase, getDocumentBase, getImage, getImage, getLocale, getParameter, getParameterInfo, isActive, newAudioClip, play, play, resize, resize, setStub, showStatus, start, stop
 
Methods inherited from class java.awt.Panel
addNotify
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getInsets, getLayout, getListeners, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paint, paintComponents, paramString, preferredSize, print, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, removeNotify, setComponentZOrder, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, setLayout, transferFocusBackward, transferFocusDownCycle, update, 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, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getToolkit, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, reshape, setBackground, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setMinimumSize, setName, setPreferredSize, setSize, setSize, setVisible, 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

jep

protected Jep jep
Main Jep object


ta

protected java.awt.TextArea ta
Text area for user input in applets.

Constructor Detail

Console

public Console()
Constructor

Method Detail

init

public void init()
Applet initialization

Overrides:
init in class java.applet.Applet

initialise

public void initialise()
sets up all the needed objects.


main

public static void main(java.lang.String[] args)
Creates a new Console object and calls run()


run

public void run(java.lang.String[] args)
The main entry point with command line arguments


inputLoop

public void inputLoop()
The main input loop for interactive operation. Repeatedly calls getCommand() and processCommand().


processCommand

public boolean processCommand(java.lang.String command)
Process a single command.
  1. Tests for exit, quit, and help.
  2. Tests for any special commands used by sub classes. testSpecialCommands(String)
  3. Parses the command.
  4. Processes the node. processEquation(Node)
  5. Checks for errors. handleError(Exception)

Parameters:
command - The line to be processed
Returns:
false if un-recoverable error or 'quit' or 'exit'

processEquation

public void processEquation(Node node)
                     throws JepException
Performs the required operation on a node. Typically evaluates the node and prints the value.

Parameters:
node - Node representing expression
Throws:
JepException - if a Parse or evaluation error

getCommand

protected java.lang.String getCommand()
Get a command from the input.

Returns:
null if an IO error or EOF occurs.

getPrompt

public java.lang.String getPrompt()
Prints the prompt string.


printStdHelp

public final void printStdHelp()
Prints a standard help message. Type 'quit' or 'exit' to quit, 'help' for help.


printHelp

public void printHelp()
Print help message.


printIntroText

public void printIntroText()
Prints introductory text.


printFuns

public void printFuns()
Prints a list of defined functions.


printOps

public void printOps()
Prints a list of defined operators.


printVars

public void printVars()
Prints a list of variable.


testSpecialCommands

public Console.SPEC_ACTION testSpecialCommands(java.lang.String command)
Checks for special commands. For example a subclass may have a verbose mode switched on of off using the command
verbose on
This method can be used detected this input, perform required actions and skip normal processing by returning true. In general sub classes should call the superclass methods to test for special commands that class implements

Parameters:
command -
Returns:
SPEC_ACTION.CONTINUE - continue processing this equation, SPEC_ACTION.BREAK - stop processing this equation and get the next line of input, SPEC_ACTION.EXIT stop the program
See Also:
split(String)

handleError

public boolean handleError(java.lang.Exception e)
Handle an error in the parse and evaluate routines. Default is to print the error message for JepExceptions and a stack trace for other exceptions

Parameters:
e -
Returns:
false if the error cannot be recovered and the program should exit

split

public java.lang.String[] split(java.lang.String s)
Splits a string on spaces.

Parameters:
s - the input string
Returns:
an array of the tokens in the string

print

public void print(java.lang.Object o)
Prints a line of text no newline. Subclasses should call this method rather than System.out.print to allow for output to different places.


println

public void println(java.lang.Object o)
Prints a line of text no newline. Subclasses should call this method rather than System.out.print to allow for output to different places.


keyReleased

public void keyReleased(java.awt.event.KeyEvent event)
Handles keyRelease events

Specified by:
keyReleased in interface java.awt.event.KeyListener

keyPressed

public void keyPressed(java.awt.event.KeyEvent arg0)
Specified by:
keyPressed in interface java.awt.event.KeyListener

keyTyped

public void keyTyped(java.awt.event.KeyEvent arg0)
Specified by:
keyTyped in interface java.awt.event.KeyListener

getAppletInfo

public java.lang.String getAppletInfo()
Overrides:
getAppletInfo in class java.applet.Applet


Copyright © 2010 Singular Systems http://www.singularsys.com/jep