kites.visual
Class NodeBox

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 kites.visual.NodeBox
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, NodeContainer

public class NodeBox
extends javax.swing.JPanel
implements NodeContainer

This is the graphical representation of a Function. It contains a head symbol and one or more children of arbitrary (i. e. of type NodeContainer) type.

See Also:
Serialized Form

Nested Class Summary
 
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.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
private  java.util.LinkedList<NodeContainer> children
           
private  java.awt.GridBagConstraints constraints
           
private  NodeLabel head
           
private  javax.swing.JLabel openPar
           
private  int params
           
private  javax.swing.JPanel realContainer
           
private static long serialVersionUID
          Eclipse still wants to have a serial everywhere...
 
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
NodeBox(int params)
          Create a new NodeBox with a specified number of children.
 
Method Summary
 void activate()
          Activate popup menus in this box and its children.
 void addChild(NodeContainer child)
          Add a child to this box.
 void addClosePar()
          Add a closing parenthesis to the last child of this box.
 void addComma()
          Add a comma to the last child of this box.
 void colorize()
          Try to colorize the head symbol in this box and its children.
 void deactivate()
          Deactivate all popup menus in this box and its children
 java.util.Iterator<NodeContainer> getChildIterator()
          Gives an iterator over all the children
 NodeLabel getHead()
          Gives the current head symbol.
 java.awt.Dimension getMaximumSize()
          Overridden to always be displayed as compact as possible.
 java.awt.Dimension getPreferredSize()
          Overridden to always be displayed as compact as possible
 void setHead(NodeLabel head)
          Set the head symbol of this box.
 void setInterpreterWindow(InterpreterWindow wnd)
          Set the interpreter window this box will be placed in.
 java.lang.String toString()
          Return a string representation of the tree beginning from this node.
 
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, getMinimumSize, getNextFocusableComponent, getPopupLocation, 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, 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, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

serialVersionUID

private static final long serialVersionUID
Eclipse still wants to have a serial everywhere...

See Also:
Constant Field Values

constraints

private java.awt.GridBagConstraints constraints

openPar

private javax.swing.JLabel openPar

children

private java.util.LinkedList<NodeContainer> children

head

private NodeLabel head

params

private int params

realContainer

private javax.swing.JPanel realContainer
Constructor Detail

NodeBox

public NodeBox(int params)
Create a new NodeBox with a specified number of children.

Parameters:
params - the number of children
Method Detail

setHead

public void setHead(NodeLabel head)
Set the head symbol of this box. It will be displayed in the upper-left corner.

Parameters:
head - the graphical representation of the head symbol

addChild

public void addChild(NodeContainer child)
Add a child to this box.

Parameters:
child - the child to add

getHead

public NodeLabel getHead()
Gives the current head symbol.

Returns:
the current head symbol

getPreferredSize

public java.awt.Dimension getPreferredSize()
Overridden to always be displayed as compact as possible

Overrides:
getPreferredSize in class javax.swing.JComponent

getMaximumSize

public java.awt.Dimension getMaximumSize()
Overridden to always be displayed as compact as possible.

Overrides:
getMaximumSize in class javax.swing.JComponent

setInterpreterWindow

public void setInterpreterWindow(InterpreterWindow wnd)
Set the interpreter window this box will be placed in. We need this because of the popup listener, which will start a new interpretation step. This is also passed down the line to all the children.

Specified by:
setInterpreterWindow in interface NodeContainer
Parameters:
wnd - the window

getChildIterator

public java.util.Iterator<NodeContainer> getChildIterator()
Gives an iterator over all the children

Returns:
the iterator

toString

public java.lang.String toString()
Return a string representation of the tree beginning from this node. As an ASTNode is saved in this object, there is no need to iterate over this node's children again, as they will be the same as the ASTNode's children.

Specified by:
toString in interface NodeContainer
Overrides:
toString in class java.awt.Component
Returns:
The string representation

deactivate

public void deactivate()
Deactivate all popup menus in this box and its children

Specified by:
deactivate in interface NodeContainer

addClosePar

public void addClosePar()
Add a closing parenthesis to the last child of this box. This needs to be called if this box is itself placed inside a box as its last child and therefore needs a closing parenthesis to textually close the box it lives in.

Specified by:
addClosePar in interface NodeContainer

addComma

public void addComma()
Add a comma to the last child of this box. This needs to be called if this box is itself placed inside a box and is not the last child. Then it has to have a comma at its end, to textually "lead in" a new child of the box it lives in.

Specified by:
addComma in interface NodeContainer

activate

public void activate()
Activate popup menus in this box and its children.

Specified by:
activate in interface NodeContainer

colorize

public void colorize()
Try to colorize the head symbol in this box and its children. Color will only be added, if a rule is applicable.

Specified by:
colorize in interface NodeContainer