Package weka.gui

# Class SimpleCLIPanel

java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
weka.gui.scripting.ScriptingPanel
weka.gui.SimpleCLIPanel

All Implemented Interfaces:
  `ActionListener`, `ImageObserver`, `MenuContainer`, `Serializable`, `EventListener`, `Accessible`, `Perspective`, `TitleUpdatedListener`

@PerspectiveInfo(ID="simplecli", title="Simple CLI", toolTipText="Simple CLI for Weka", iconPath="weka/gui/weka_icon_new_small.png") public class SimpleCLIPanel extends ScriptingPanel implements ActionListener, Perspective
Creates a very simple command line for invoking the main method of classes. System.out and System.err are redirected to an output area. Features a simple command history -- use up and down arrows to move through previous commmands. This gui uses only AWT (i.e. no Swing).

Author:
  Len Trigg (trigg@cs.waikato.ac.nz), FracPete (fracpete at waikato dot ac dot nz)
See Also:
  - Serialized Form

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static class`
  `SimpleCLIPanel.ClassRunner`
  A class that handles running the main method of the class in a separate thread.
  `static class`
  `SimpleCLIPanel.CommandlineCompletion`
  A class for commandline completion of classnames.

  ## Nested classes/interfaces inherited from class javax.swing.JComponent

  `JComponent.AccessibleJComponent`

  ## Nested classes/interfaces inherited from class java.awt.Component

  `Component.BaselineResizeBehavior`

- ## Field Summary

  ### Fields inherited from class javax.swing.JComponent

  `TOOL_TIP_TEXT_KEY, 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, SOMEBITS, WIDTH`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `SimpleCLIPanel()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `acceptsInstances()`
  Returns true if this perspective can do something meaningful with a set of instances
  `void`
  `actionPerformed(ActionEvent e)`
  Only gets called when return is pressed in the input area, which starts the command running.
  `void`
  `doCommandlineCompletion(KeyEvent e)`
  performs commandline completion on packages and classnames.
  `void`
  `doHistory(KeyEvent e)`
  Changes the currently displayed command line when certain keys are pressed.
  `List<String>`
  `getCommandHistory()`
  Returns the command history.
  `Defaults`
  `getDefaultSettings()`
  Get the default settings for this perspective (or null if there are none)
  `ImageIcon`
  `getIcon()`
  Returns an icon to be used in a frame.
  `GUIApplication`
  `getMainApplication()`
  Get the main application that this perspective belongs to
  `JMenuBar`
  `getMenuBar()`
  Not supported.
  `List<JMenu>`
  `getMenus()`
  Get an ordered list of menus to appear in the main menu bar.
  `JTextPane`
  `getOutput()`
  Returns the text area that is used for displaying output on stdout and stderr.
  `JTextPane`
  `getOutputArea()`
  The output area.
  `Icon`
  `getPerspectiveIcon()`
  Get the icon for this perspective
  `String`
  `getPerspectiveID()`
  Get the ID of this perspective
  `String`
  `getPerspectiveTipText()`
  Get the tool tip text for this perspective
  `String`
  `getPerspectiveTitle()`
  Get the title of this perspective
  `String`
  `getTitle()`
  Returns the current title for the frame/dialog.
  `Map<String,Object>`
  `getVariables()`
  Returns the variables.
  `void`
  `instantiationComplete()`
  Gets called when startup of the application has completed.
  `boolean`
  `isBusy()`
  Checks whether a thread is currently running.
  `static void`
  `main(String[] args)`
  Displays the panel in a frame.
  `boolean`
  `okToBeActive()`
  Returns true if this perspective is OK with being an active perspective - i.e.
  `boolean`
  `requiresLog()`
  Whether this perspective requires a graphical log to write to
  `void`
  `runCommand(String command)`
  Executes a simple cli command.
  `void`
  `setActive(boolean active)`
  Set active status of this perspective.
  `void`
  `setInstances(Instances instances)`
  Set instances (if this perspective can use them)
  `void`
  `setLoaded(boolean loaded)`
  Set whether this perspective is "loaded" - i.e.
  `void`
  `setLog(Logger log)`
  Set a log to use (if required by the perspective)
  `void`
  `setMainApplication(GUIApplication main)`
  Set the main application.
  `void`
  `settingsChanged()`
  Called when the user alters settings.
  `void`
  `startThread(SimpleCLIPanel.ClassRunner runner)`
  Starts the thread.
  `void`
  `stopThread()`
  Stops the currently running thread, if any.

  ### Methods inherited from class weka.gui.scripting.ScriptingPanel

  `addTitleUpdatedListener, getDebug, removeTitleUpdatedListener, setDebug, showPanel, showPanel, terminate, titleUpdated`

  ### Methods inherited from class javax.swing.JPanel

  `getAccessibleContext, getUI, getUIClassID, setUI, updateUI`

  ### Methods inherited from class javax.swing.JComponent

  `addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, 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, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintImmediately, paintImmediately, print, printAll, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, 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, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update`

  ### Methods inherited from class java.awt.Container

  `add, add, add, add, add, addContainerListener, 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, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate`

  ### Methods inherited from class java.awt.Component

  `action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, contains, createImage, createImage, createVolatileImage, createVolatileImage, dispatchEvent, enable, enableInputMethods, 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, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, 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`

  ### Methods inherited from class java.lang.Object

  `equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### SimpleCLIPanel

    public SimpleCLIPanel()

- ## Method Details

  - ### instantiationComplete

    public void instantiationComplete()
    Description copied from interface: `Perspective`
    Gets called when startup of the application has completed. At this point, and only at this point, is it guaranteed that a perspective has access to its hosting application and the PerspectiveManager. Implementations can use this method to complete their initialization in this method if this requires access to information from the main application and/or the PerspectiveManager (i.e. knowledge about what other perspectives are available).
    Specified by:
      `instantiationComplete` in interface `Perspective`

  - ### okToBeActive

    public boolean okToBeActive()
    Description copied from interface: `Perspective`
    Returns true if this perspective is OK with being an active perspective - i.e. the user can click on this perspective at this time in the perspective toolbar. For example, a Perspective might return false from this method if it needs a set of instances to operate but none have been supplied yet.
    Specified by:
      `okToBeActive` in interface `Perspective`
    Returns:
      true if this perspective can be active at the current time

  - ### setActive

    public void setActive(boolean active)
    Description copied from interface: `Perspective`
    Set active status of this perspective. True indicates that this perspective is the visible active perspective in the application
    Specified by:
      `setActive` in interface `Perspective`
    Parameters:
      `active` - true if this perspective is the active one

  - ### setLoaded

    public void setLoaded(boolean loaded)
    Description copied from interface: `Perspective`
    Set whether this perspective is "loaded" - i.e. whether or not the user has opted to have it available in the perspective toolbar. The perspective can make the decision as to allocating or freeing resources on the basis of this. Note that the main application and perspective manager instances are not available to the perspective until the instantiationComplete() method has been called.
    Specified by:
      `setLoaded` in interface `Perspective`
    Parameters:
      `loaded` - true if the perspective is available in the perspective toolbar of the KnowledgeFlow

  - ### setMainApplication

    public void setMainApplication(GUIApplication main)
    Description copied from interface: `Perspective`
    Set the main application. Gives other perspectives access to information provided by the main application
    Specified by:
      `setMainApplication` in interface `Perspective`
    Parameters:
      `main` - the main application

  - ### getMainApplication

    public GUIApplication getMainApplication()
    Description copied from interface: `Perspective`
    Get the main application that this perspective belongs to
    Specified by:
      `getMainApplication` in interface `Perspective`
    Returns:
      the main application that this perspective belongs to

  - ### getPerspectiveID

    public String getPerspectiveID()
    Description copied from interface: `Perspective`
    Get the ID of this perspective
    Specified by:
      `getPerspectiveID` in interface `Perspective`
    Returns:
      the ID of this perspective

  - ### getPerspectiveTitle

    public String getPerspectiveTitle()
    Description copied from interface: `Perspective`
    Get the title of this perspective
    Specified by:
      `getPerspectiveTitle` in interface `Perspective`
    Returns:
      the title of this perspective

  - ### getPerspectiveIcon

    public Icon getPerspectiveIcon()
    Description copied from interface: `Perspective`
    Get the icon for this perspective
    Specified by:
      `getPerspectiveIcon` in interface `Perspective`
    Returns:
      the icon for this perspective

  - ### getPerspectiveTipText

    public String getPerspectiveTipText()
    Description copied from interface: `Perspective`
    Get the tool tip text for this perspective
    Specified by:
      `getPerspectiveTipText` in interface `Perspective`
    Returns:
      the tool tip text for this perspective

  - ### getMenus

    public List<JMenu> getMenus()
    Description copied from interface: `Perspective`
    Get an ordered list of menus to appear in the main menu bar. Return null for no menus
    Specified by:
      `getMenus` in interface `Perspective`
    Returns:
      a list of menus to appear in the main menu bar or null for no menus

  - ### getDefaultSettings

    public Defaults getDefaultSettings()
    Description copied from interface: `Perspective`
    Get the default settings for this perspective (or null if there are none)
    Specified by:
      `getDefaultSettings` in interface `Perspective`
    Returns:
      the default settings for this perspective, or null if the perspective does not have any settings

  - ### settingsChanged

    public void settingsChanged()
    Description copied from interface: `Perspective`
    Called when the user alters settings. The settings altered by the user are not necessarily ones related to this perspective
    Specified by:
      `settingsChanged` in interface `Perspective`

  - ### acceptsInstances

    public boolean acceptsInstances()
    Description copied from interface: `Perspective`
    Returns true if this perspective can do something meaningful with a set of instances
    Specified by:
      `acceptsInstances` in interface `Perspective`
    Returns:
      true if this perspective accepts instances

  - ### setInstances

    public void setInstances(Instances instances)
    Description copied from interface: `Perspective`
    Set instances (if this perspective can use them)
    Specified by:
      `setInstances` in interface `Perspective`
    Parameters:
      `instances` - the instances

  - ### requiresLog

    public boolean requiresLog()
    Description copied from interface: `Perspective`
    Whether this perspective requires a graphical log to write to
    Specified by:
      `requiresLog` in interface `Perspective`
    Returns:
      true if a log is needed by this perspective

  - ### setLog

    public void setLog(Logger log)
    Description copied from interface: `Perspective`
    Set a log to use (if required by the perspective)
    Specified by:
      `setLog` in interface `Perspective`
    Parameters:
      `log` - the graphical log to use

  - ### getIcon

    public ImageIcon getIcon()
    Returns an icon to be used in a frame.
    Specified by:
      `getIcon` in class `ScriptingPanel`
    Returns:
      the icon

  - ### getTitle

    public String getTitle()
    Returns the current title for the frame/dialog.
    Specified by:
      `getTitle` in class `ScriptingPanel`
    Returns:
      the title

  - ### getOutput

    public JTextPane getOutput()
    Returns the text area that is used for displaying output on stdout and stderr.
    Specified by:
      `getOutput` in class `ScriptingPanel`
    Returns:
      the JTextArea

  - ### getMenuBar

    public JMenuBar getMenuBar()
    Not supported.
    Specified by:
      `getMenuBar` in class `ScriptingPanel`
    Returns:
      always null

  - ### isBusy

    public boolean isBusy()
    Checks whether a thread is currently running.
    Returns:
      true if thread active

  - ### startThread

    public void startThread(SimpleCLIPanel.ClassRunner runner)
    Starts the thread.
    Parameters:
      `runner` - the thread to start

  - ### stopThread

    public void stopThread()
    Stops the currently running thread, if any.

  - ### getVariables

    public Map<String,Object> getVariables()
    Returns the variables.
    Returns:
      the variables

  - ### getOutputArea

    public JTextPane getOutputArea()
    The output area.
    Returns:
      the output area

  - ### getCommandHistory

    public List<String> getCommandHistory()
    Returns the command history.
    Returns:
      the history

  - ### runCommand

    public void runCommand(String command) throws Exception
    Executes a simple cli command.
    Parameters:
      `command` - the command string
    Throws:
      `Exception` - if an error occurs

  - ### doHistory

    public void doHistory(KeyEvent e)
    Changes the currently displayed command line when certain keys are pressed. The up arrow moves back through history entries and the down arrow moves forward through history entries.
    Parameters:
      `e` - a value of type 'KeyEvent'

  - ### doCommandlineCompletion

    public void doCommandlineCompletion(KeyEvent e)
    performs commandline completion on packages and classnames.
    Parameters:
      `e` - a value of type 'KeyEvent'

  - ### actionPerformed

    public void actionPerformed(ActionEvent e)
    Only gets called when return is pressed in the input area, which starts the command running.
    Specified by:
      `actionPerformed` in interface `ActionListener`
    Parameters:
      `e` - a value of type 'ActionEvent'

  - ### main

    public static void main(String[] args)
    Displays the panel in a frame.
    Parameters:
      `args` - ignored