schmitzm.swing
Class OperationTreePanel

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by schmitzm.swing.JPanel
                      extended by schmitzm.swing.CaptionsChangeablePanel
                          extended by schmitzm.swing.OperationTreePanel
All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible, CaptionsChangeable
Direct Known Subclasses:
FeatureFilterPanel

public class OperationTreePanel
extends CaptionsChangeablePanel

Diese Klasse stellt eine Panel zur Vefuegung, mit der eine einfache arithmetische (und boolsche) Berechnungsformel eingegeben werden kann.

Version:
1.0
Author:
Martin Schmitz (University of Bonn/Germany)
See Also:
OperationTree, OperationTreeParser, Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
 
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
protected  HashMap<String,GridBagConstraints> layoutConstraints
          Werte fuer die grafische Anordnung der Layout-Komponenten.
static String OPERATOR_COMBOBOX
          Konstante fuer das Operatoren-Auswahlfeld.
static String OPERATOR_LABEL
          Konstante fuer das Operatoren-Label.
protected  SelectionInputOption.Combo<String> operators
          Auswahl-Liste der zur Verfuegung stehenden Operatoren und Konstanzen.
protected  ParserOperatorsHints opHints
          Liefert Informationen ueber die Operatoren, die dem Nutzer in der ComboBox zur Verfuegung gestellt werden.
protected  ManualInputOption.Text rule
          Eingabefeld fuer die Formel.
static String RULE_LABEL
          Konstante fuer das Regel-Label.
static String RULE_TEXTFIELD
          Konstante fuer das Formel-Eingabefeld.
static String RULE_TOOLTIP
          Konstante fuer den Tooltip des Regel-Felds.
static String START_BUTTON
          Konstante fuer den Start-Button.
protected  JButton startButton
          Butten zum Starten der Berechnung.
protected  OperationTreePanel THIS
          Speichert eine Referenz auf das Fenster-Objekt, um aus verschachtelten Klassen einfach darauf zugreifen zu koennen.
 
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
  OperationTreePanel(ParserOperatorsHints opHints)
          Erzeugt eine neue Eingabe-GUI fuer den OperationTree.
protected OperationTreePanel(ParserOperatorsHints opHints, boolean initGUI)
          Erzeugt eine neue Eingabe-GUI fuer den OperationTree.
 
Method Summary
protected  boolean acceptOperator(String operator)
          Kann von Sub-Klassen ueberschrieben werden, um bestimmte Operatoren in der Auswahl-Liste auszublenden.
protected  void checkInputsAndError()
          Prueft die eingegebene Formel auf syntaktische Korrektheit.
protected  void initGUI()
          Initalisiert die GUI des Fensters.
protected  Object performCalculation()
          Erzeugt einen OperationTree aus der Formel und wertet diese aus.
protected  void performOperatorInsert(String op, JTextField textField)
          Fuegt einen Operator in die aktuelle Formel ein.
 void resetCaptions(Map<String,Object> captionMap)
          Setzt die Labels des Panels neu.
 
Methods inherited from class schmitzm.swing.CaptionsChangeablePanel
resetCaptions, resetCaptions
 
Methods inherited from class schmitzm.swing.JPanel
print, setBackground, setEnabled
 
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, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, 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, 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

THIS

protected final OperationTreePanel THIS
Speichert eine Referenz auf das Fenster-Objekt, um aus verschachtelten Klassen einfach darauf zugreifen zu koennen.


START_BUTTON

public static final String START_BUTTON
Konstante fuer den Start-Button.

See Also:
layoutConstraints, resetCaptions(Map)

RULE_LABEL

public static final String RULE_LABEL
Konstante fuer das Regel-Label.

See Also:
resetCaptions(Map)

RULE_TEXTFIELD

public static final String RULE_TEXTFIELD
Konstante fuer das Formel-Eingabefeld.

See Also:
layoutConstraints

RULE_TOOLTIP

public static final String RULE_TOOLTIP
Konstante fuer den Tooltip des Regel-Felds.

See Also:
resetCaptions(Map)

OPERATOR_LABEL

public static final String OPERATOR_LABEL
Konstante fuer das Operatoren-Label.

See Also:
resetCaptions(Map)

OPERATOR_COMBOBOX

public static final String OPERATOR_COMBOBOX
Konstante fuer das Operatoren-Auswahlfeld.

See Also:
layoutConstraints

layoutConstraints

protected HashMap<String,GridBagConstraints> layoutConstraints
Werte fuer die grafische Anordnung der Layout-Komponenten. Ueber die Konstanten START_BUTTON, RULE_TEXTFIELD und OPERATOR_COMBOBOX koennen die Constraints (am Anfang von initGUI()) veraendert oder erweitert werden.


rule

protected ManualInputOption.Text rule
Eingabefeld fuer die Formel.


startButton

protected JButton startButton
Butten zum Starten der Berechnung.


operators

protected SelectionInputOption.Combo<String> operators
Auswahl-Liste der zur Verfuegung stehenden Operatoren und Konstanzen.


opHints

protected ParserOperatorsHints opHints
Liefert Informationen ueber die Operatoren, die dem Nutzer in der ComboBox zur Verfuegung gestellt werden.

Constructor Detail

OperationTreePanel

public OperationTreePanel(ParserOperatorsHints opHints)
Erzeugt eine neue Eingabe-GUI fuer den OperationTree.

Parameters:
opHints - Liefert Informationen ueber die Operatoren, die dem Nutzer in der ComboBox zur Verfuegung gestellt werden.

OperationTreePanel

protected OperationTreePanel(ParserOperatorsHints opHints,
                             boolean initGUI)
Erzeugt eine neue Eingabe-GUI fuer den OperationTree.

Parameters:
opHints - Liefert Informationen ueber die Operatoren, die dem Nutzer in der ComboBox zur Verfuegung gestellt werden.
initGUI - Flag, ob initGUI() am Ende des Konstruktor aufgerufen werden soll (wenn false muss die explizit durch die Unterklasse erfolgen!)
Method Detail

initGUI

protected void initGUI()
Initalisiert die GUI des Fensters.


acceptOperator

protected boolean acceptOperator(String operator)
Kann von Sub-Klassen ueberschrieben werden, um bestimmte Operatoren in der Auswahl-Liste auszublenden.

Parameters:
operator - ein Operator
Returns:
immer true

resetCaptions

public void resetCaptions(Map<String,Object> captionMap)
Setzt die Labels des Panels neu. Die Beschriftungen werden in einer Map hinterlegt und ueber die Konstanten RULE_LABEL, RULE_TOOLTIP, OPERATOR_LABEL und START_BUTTON angesprochen.

Specified by:
resetCaptions in interface CaptionsChangeable
Overrides:
resetCaptions in class CaptionsChangeablePanel
Parameters:
captionMap - Map

checkInputsAndError

protected void checkInputsAndError()
                            throws Exception
Prueft die eingegebene Formel auf syntaktische Korrektheit. Unterklassen koennen diese Methode ueberschreiben, wenn die Mask

Throws:
Exception - falls ein Fehler gefunden wird

performCalculation

protected Object performCalculation()
                             throws Exception
Erzeugt einen OperationTree aus der Formel und wertet diese aus.

Returns:
das Ergebnis der Formel, als double-Wert
Throws:
Exception
See Also:
OperationTreeParser

performOperatorInsert

protected void performOperatorInsert(String op,
                                     JTextField textField)
Fuegt einen Operator in die aktuelle Formel ein. Ueber JTextComponent.getSelectionStart() und JTextComponent.getSelectionEnd() kann ermittelt werden, an welcher Stelle der aktuelle Cursor steht.

Parameters:
op - einzufuegender Operator
textField - Text-Feld in das der Operator eingefuegt werden soll
See Also:
JTextComponent.getSelectedText()