net.sourceforge.webcompmath.functions
Class TableFunctionInput

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 net.sourceforge.webcompmath.functions.TableFunctionInput
All Implemented Interfaces:
java.awt.event.ActionListener, java.awt.event.ItemListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.event.ListSelectionListener

public class TableFunctionInput
extends javax.swing.JPanel
implements java.awt.event.ItemListener, java.awt.event.ActionListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener, javax.swing.event.ListSelectionListener

A TableInputFunction is a Panel that can be used to define a TableFunction or to edit an existing TableFunction. To fetch the function currently displayed in the panel, call copyOfCurrentFunction(). To edit a function, call startEdit() to install the function. Then call cancelEdit() or finishEdit() to finish the editing. The panel displays both the graph of the function and a list of points that define the function. The user can drag the points on the graph up and down to change the y-values. Points can be added or modified by typing in their x- and y-coordinates. A point can be deleted by clicking it in the list of points and then clicking on the button labeled "Delete Point".

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
 
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
TableFunctionInput()
          Create a TableFunctionInput panel.
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent evt)
          React when user clicks one of the buttons or presses return in one of the input boxes.
 void cancelEdit()
          Discards the internal pointer to the edit function (specified by startEdit()), if any.
 TableFunction copyOfCurrentFunction()
          Create a new TableFunction containing the data that is currently in the TableFunctionInput panel, and return a pointer to that new function.
 TableFunction finishEdit()
          If an edit function has been specified (by startEdit()), this function copies the data from the TableFunctionInput into that function, and returns a pointer to that function.
 java.awt.Insets getInsets()
          Leave a 3-pixel gap around the edges of the panel.
 Controller getOnChange()
          Get the Controller that is notified when the user edits the data in this panel.
 void itemStateChanged(java.awt.event.ItemEvent evt)
          React when user clicks on a point in the list of points or clicks one of the radio buttons for specifying the style of the function.
 void mouseClicked(java.awt.event.MouseEvent evt)
          Empty method, required by the MouseListener interface.
 void mouseDragged(java.awt.event.MouseEvent evt)
          Method required by the MouseListener interface.
 void mouseEntered(java.awt.event.MouseEvent evt)
          Empty method, required by the MouseMotionListener interface.
 void mouseExited(java.awt.event.MouseEvent evt)
          Empty method, required by the MouseMotionListener interface.
 void mouseMoved(java.awt.event.MouseEvent evt)
          Empty method, required by the MouseMotionListener interface.
 void mousePressed(java.awt.event.MouseEvent evt)
          Method required by the MouseListener interface.
 void mouseReleased(java.awt.event.MouseEvent evt)
          Method required by the MouseListener interface.
 void revertEditFunction()
          If a function has been specified using startEdit(), and neither finishEdit() nor cancelEdit have been called, then this method will discard the current data in and replace it with data from the edit function.
 void setOnChange(Controller c)
          Specify a controller whose compute() method will be called whenever the user edits the data in this TableFunctionInput panel.
 void startEdit(TableFunction f)
          Install a function to be edited.
 void valueChanged(javax.swing.event.ListSelectionEvent evt)
          React when user clicks on a point in the list.
 
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, 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, 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, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

TableFunctionInput

public TableFunctionInput()
Create a TableFunctionInput panel. Initially, the function in the panel has no points and so is undefined everywhere. The panel needs to be fairly large!

Method Detail

startEdit

public void startEdit(TableFunction f)
Install a function to be edited. The data from the function is copied into the panel, and a pointer to the function is retained. Note that the function itself is not changed by any editing that the user does. To commit the changes made by the user to the actual function, you must call finishEdit(). If f is null, the effect is to start with a new, empty function.

Parameters:
f - table function to be edited

revertEditFunction

public void revertEditFunction()
If a function has been specified using startEdit(), and neither finishEdit() nor cancelEdit have been called, then this method will discard the current data in and replace it with data from the edit function. If there is no edit function, then the data is simply discarded. (That is, the data reverts to an empty point list.)


finishEdit

public TableFunction finishEdit()
If an edit function has been specified (by startEdit()), this function copies the data from the TableFunctionInput into that function, and returns a pointer to that function. This ends the edit session, and the internally stored pointer to the edit function is discarded. If no edit function has been specified then a new TableFunction is created with the data from the panel, and a pointer to the new function is returned. This does not clear the data in the TableFunctionInput panel.

Returns:
the edit function

cancelEdit

public void cancelEdit()
Discards the internal pointer to the edit function (specified by startEdit()), if any. This does not clear the data in the TableFunctionInput panel.


copyOfCurrentFunction

public TableFunction copyOfCurrentFunction()
Create a new TableFunction containing the data that is currently in the TableFunctionInput panel, and return a pointer to that new function.

Returns:
new table function

setOnChange

public void setOnChange(Controller c)
Specify a controller whose compute() method will be called whenever the user edits the data in this TableFunctionInput panel. (Note that when the user edits the function by dragging a point, the Controller is only called once at the end of the drag.) If the specified Controller is null, then no notification takes place.

Parameters:
c - controller to use

getOnChange

public Controller getOnChange()
Get the Controller that is notified when the user edits the data in this panel. The return value can be null (the default), indicating that no notification takes place.

Returns:
controller that is notified

getInsets

public java.awt.Insets getInsets()
Leave a 3-pixel gap around the edges of the panel. Not meant to be called directly.

Overrides:
getInsets in class javax.swing.JComponent
Returns:
inset

actionPerformed

public void actionPerformed(java.awt.event.ActionEvent evt)
React when user clicks one of the buttons or presses return in one of the input boxes. Not meant to be called directly.

Specified by:
actionPerformed in interface java.awt.event.ActionListener
Parameters:
evt - event created when user clicks a button

itemStateChanged

public void itemStateChanged(java.awt.event.ItemEvent evt)
React when user clicks on a point in the list of points or clicks one of the radio buttons for specifying the style of the function. Not meant to be called directly.

Specified by:
itemStateChanged in interface java.awt.event.ItemListener
Parameters:
evt - event created when user makes a selection

valueChanged

public void valueChanged(javax.swing.event.ListSelectionEvent evt)
React when user clicks on a point in the list. Not meant to be called directly

Specified by:
valueChanged in interface javax.swing.event.ListSelectionListener
Parameters:
evt - event created when list value changes

mousePressed

public void mousePressed(java.awt.event.MouseEvent evt)
Method required by the MouseListener interface. Defined here to support dragging of points on the function's graph. Not meant to be called directly.

Specified by:
mousePressed in interface java.awt.event.MouseListener
Parameters:
evt - event created when user presses mouse button

mouseReleased

public void mouseReleased(java.awt.event.MouseEvent evt)
Method required by the MouseListener interface. Defined here to support dragging of points on the function's graph. Not meant to be called directly.

Specified by:
mouseReleased in interface java.awt.event.MouseListener
Parameters:
evt - event created when user releases mouse button

mouseDragged

public void mouseDragged(java.awt.event.MouseEvent evt)
Method required by the MouseListener interface. Defined here to support dragging of points on the function's graph. Not meant to be called directly.

Specified by:
mouseDragged in interface java.awt.event.MouseMotionListener
Parameters:
evt - event created when user drags mouse

mouseClicked

public void mouseClicked(java.awt.event.MouseEvent evt)
Empty method, required by the MouseListener interface.

Specified by:
mouseClicked in interface java.awt.event.MouseListener
Parameters:
evt - the event

mouseEntered

public void mouseEntered(java.awt.event.MouseEvent evt)
Empty method, required by the MouseMotionListener interface.

Specified by:
mouseEntered in interface java.awt.event.MouseListener
Parameters:
evt - the event

mouseExited

public void mouseExited(java.awt.event.MouseEvent evt)
Empty method, required by the MouseMotionListener interface.

Specified by:
mouseExited in interface java.awt.event.MouseListener
Parameters:
evt - the event

mouseMoved

public void mouseMoved(java.awt.event.MouseEvent evt)
Empty method, required by the MouseMotionListener interface.

Specified by:
mouseMoved in interface java.awt.event.MouseMotionListener
Parameters:
evt - the event