org.opensourcephysics.tools
Class FunctionTool

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by java.awt.Window
              extended by java.awt.Dialog
                  extended by javax.swing.JDialog
                      extended by org.opensourcephysics.tools.FunctionTool
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants
Direct Known Subclasses:
FitBuilder

public class FunctionTool
extends javax.swing.JDialog

This tool allows users to create and manage editable Functions.

Author:
Douglas Brown
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JDialog
javax.swing.JDialog.AccessibleJDialog
 
Nested classes/interfaces inherited from class java.awt.Dialog
java.awt.Dialog.AccessibleAWTDialog, java.awt.Dialog.ModalExclusionType, java.awt.Dialog.ModalityType
 
Nested classes/interfaces inherited from class java.awt.Window
java.awt.Window.AccessibleAWTWindow
 
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  javax.swing.JPanel buttonbar
           
protected  javax.swing.JButton closeButton
           
protected  javax.swing.JPanel contentPane
           
protected  java.util.Set<DatasetCurveFitter> curveFitters
           
protected  javax.swing.JMenuItem defaultFontSizeItem
           
protected  javax.swing.JComboBox dropdown
           
protected  javax.swing.JToolBar dropdownbar
           
protected  javax.swing.JLabel dropdownLabel
           
protected  javax.swing.JButton fontButton
           
protected  int fontLevel
           
protected  java.util.HashSet<java.lang.String> forbiddenNames
           
protected  java.awt.event.ActionListener helpAction
           
protected  java.lang.String helpBase
           
protected  javax.swing.JButton helpButton
           
protected  javax.swing.JDialog helpDialog
           
protected  TextFrame helpFrame
           
protected  java.lang.String helpPath
           
protected  javax.swing.JPanel noData
           
protected  javax.swing.JPanel north
           
protected  java.util.Map<java.lang.String,FunctionPanel> panels
           
protected static java.lang.String[] parserNames
           
protected static java.lang.String[] parserOperators
           
protected  javax.swing.JPopupMenu popup
           
protected  javax.swing.JButton redoButton
           
protected  boolean refreshing
           
protected  FunctionPanel selectedPanel
           
protected  javax.swing.JScrollPane selectedPanelScroller
           
protected  javax.swing.JToolBar toolbar
           
protected  java.awt.Component[] toolbarComponents
           
protected  javax.swing.JButton undoButton
           
 
Fields inherited from class javax.swing.JDialog
accessibleContext, rootPane, rootPaneCheckingEnabled
 
Fields inherited from class java.awt.Dialog
DEFAULT_MODALITY_TYPE
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface javax.swing.WindowConstants
DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, EXIT_ON_CLOSE, HIDE_ON_CLOSE
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
FunctionTool(java.awt.Component comp)
          Constructs a tool for the specified component (may be null)
FunctionTool(java.awt.Component comp, java.awt.Component[] toolbarItems)
          Constructs a tool with custom buttons or other components.
 
Method Summary
 void addForbiddenNames(java.lang.String[] names)
          Adds names to the forbidden set.
 FunctionPanel addPanel(java.lang.String name, FunctionPanel panel)
          Adds a FunctionPanel.
 void clearPanels()
          Clears all FunctionPanels.
protected  void firePropertyChange(java.lang.String name, java.lang.Object oldObj, java.lang.Object newObj)
          Fires a property change.
 int getFontLevel()
          Gets the font level.
static XML.ObjectLoader getLoader()
          Returns an ObjectLoader to save and load data for this class.
 FunctionPanel getPanel(java.lang.String name)
          Returns the named FunctionPanel.
 java.util.Set<java.lang.String> getPanelNames()
          Returns the set of all panel names.
 java.lang.String getSelectedName()
          Returns the name of the selected FunctionPanel.
 FunctionPanel getSelectedPanel()
          Returns the selected FunctionPanel.
 java.awt.Component[] getToolbarComponents()
          Gets the custom buttons or other components.
protected  java.lang.String getUniqueName(java.lang.String proposedName)
          Gets a unique name.
 boolean isEmpty()
          Reports if this is empty.
 boolean isVisible()
          Overrides JDialog isVisible method.
 void refreshDropdown(java.lang.String name)
          Refreshes the dropdown and selects a specified panel.
protected  void refreshGUI()
          Refreshes the GUI.
 FunctionPanel removePanel(java.lang.String name)
          Removes a named FunctionPanel.
 FunctionPanel renamePanel(java.lang.String prevName, java.lang.String newName)
          Renames a FunctionPanel.
 void setDefaultVariables(java.lang.String[] vars)
          Sets the independent variables of all function panels.
 void setFontLevel(int level)
          Sets the font level.
 void setHelpAction(java.awt.event.ActionListener action)
          Sets the help action.
 void setHelpPath(java.lang.String path)
          Sets the path of the help file.
 void setSelectedPanel(java.lang.String name)
          Selects a FunctionPanel by name.
 void setToolbarComponents(java.awt.Component[] toolbarItems)
          Sets the custom buttons or other components.
 void setVisible(boolean vis)
          Overrides JDialog setVisible method.
 
Methods inherited from class javax.swing.JDialog
addImpl, createRootPane, dialogInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update
 
Methods inherited from class java.awt.Dialog
addNotify, getModalityType, getTitle, hide, isModal, isResizable, isUndecorated, setModal, setModalityType, setResizable, setTitle, setUndecorated, show, toBack
 
Methods inherited from class java.awt.Window
addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getGraphicsConfiguration, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOwnedWindows, getOwner, getOwnerlessWindows, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isShowing, pack, paint, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeNotify, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImage, setIconImages, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, toFront
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, 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, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isValid, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, 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, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resize, resize, setBackground, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

parserNames

protected static java.lang.String[] parserNames

parserOperators

protected static java.lang.String[] parserOperators

curveFitters

protected java.util.Set<DatasetCurveFitter> curveFitters

panels

protected java.util.Map<java.lang.String,FunctionPanel> panels

forbiddenNames

protected java.util.HashSet<java.lang.String> forbiddenNames

contentPane

protected javax.swing.JPanel contentPane

noData

protected javax.swing.JPanel noData

toolbar

protected javax.swing.JToolBar toolbar

dropdownbar

protected javax.swing.JToolBar dropdownbar

dropdownLabel

protected javax.swing.JLabel dropdownLabel

dropdown

protected javax.swing.JComboBox dropdown

north

protected javax.swing.JPanel north

selectedPanel

protected FunctionPanel selectedPanel

selectedPanelScroller

protected javax.swing.JScrollPane selectedPanelScroller

helpButton

protected javax.swing.JButton helpButton

closeButton

protected javax.swing.JButton closeButton

fontButton

protected javax.swing.JButton fontButton

undoButton

protected javax.swing.JButton undoButton

redoButton

protected javax.swing.JButton redoButton

popup

protected javax.swing.JPopupMenu popup

defaultFontSizeItem

protected javax.swing.JMenuItem defaultFontSizeItem

buttonbar

protected javax.swing.JPanel buttonbar

toolbarComponents

protected java.awt.Component[] toolbarComponents

helpPath

protected java.lang.String helpPath

helpBase

protected java.lang.String helpBase

helpFrame

protected TextFrame helpFrame

helpDialog

protected javax.swing.JDialog helpDialog

helpAction

protected java.awt.event.ActionListener helpAction

fontLevel

protected int fontLevel

refreshing

protected boolean refreshing
Constructor Detail

FunctionTool

public FunctionTool(java.awt.Component comp)
Constructs a tool for the specified component (may be null)

Parameters:
comp - Component used to get Frame owner of this Dialog

FunctionTool

public FunctionTool(java.awt.Component comp,
                    java.awt.Component[] toolbarItems)
Constructs a tool with custom buttons or other components.

Parameters:
comp - Component used to get Frame owner of this Dialog
toolbarItems - an array of custom buttons or other components
Method Detail

setToolbarComponents

public void setToolbarComponents(java.awt.Component[] toolbarItems)
Sets the custom buttons or other components.

Parameters:
toolbarItems - an array of components (may be null)

getToolbarComponents

public java.awt.Component[] getToolbarComponents()
Gets the custom buttons or other components.

Returns:
an array of components (may be null)

addPanel

public FunctionPanel addPanel(java.lang.String name,
                              FunctionPanel panel)
Adds a FunctionPanel.

Parameters:
name - a descriptive name
panel - the FunctionPanel
Returns:
the added panel

removePanel

public FunctionPanel removePanel(java.lang.String name)
Removes a named FunctionPanel.

Parameters:
name - the name
Returns:
the removed panel, if any

renamePanel

public FunctionPanel renamePanel(java.lang.String prevName,
                                 java.lang.String newName)
Renames a FunctionPanel.

Parameters:
prevName - the previous name
newName - the new name
Returns:
the renamed panel

setSelectedPanel

public void setSelectedPanel(java.lang.String name)
Selects a FunctionPanel by name.

Parameters:
name - the name

getSelectedName

public java.lang.String getSelectedName()
Returns the name of the selected FunctionPanel.

Returns:
the name

getSelectedPanel

public FunctionPanel getSelectedPanel()
Returns the selected FunctionPanel.

Returns:
the FunctionPanel

getPanel

public FunctionPanel getPanel(java.lang.String name)
Returns the named FunctionPanel.

Parameters:
name - the name
Returns:
the FunctionPanel

getPanelNames

public java.util.Set<java.lang.String> getPanelNames()
Returns the set of all panel names.

Returns:
a set of names

clearPanels

public void clearPanels()
Clears all FunctionPanels.


addForbiddenNames

public void addForbiddenNames(java.lang.String[] names)
Adds names to the forbidden set.

Parameters:
names - the names to add

setVisible

public void setVisible(boolean vis)
Overrides JDialog setVisible method.

Overrides:
setVisible in class java.awt.Dialog
Parameters:
vis - true to show this tool

isVisible

public boolean isVisible()
Overrides JDialog isVisible method.

Overrides:
isVisible in class java.awt.Component
Returns:
true if visible

setHelpPath

public void setHelpPath(java.lang.String path)
Sets the path of the help file.

Parameters:
path - a filename or url

setHelpAction

public void setHelpAction(java.awt.event.ActionListener action)
Sets the help action. this will replace the current help action

Parameters:
action - a custom help action

isEmpty

public boolean isEmpty()
Reports if this is empty.

Returns:
true if empty

setFontLevel

public void setFontLevel(int level)
Sets the font level.

Parameters:
level - the level

getFontLevel

public int getFontLevel()
Gets the font level.

Returns:
the level

setDefaultVariables

public void setDefaultVariables(java.lang.String[] vars)
Sets the independent variables of all function panels.

Parameters:
vars - the independent variable names

firePropertyChange

protected void firePropertyChange(java.lang.String name,
                                  java.lang.Object oldObj,
                                  java.lang.Object newObj)
Fires a property change. This makes this method visible to the tools package.

Overrides:
firePropertyChange in class java.awt.Component

refreshGUI

protected void refreshGUI()
Refreshes the GUI.


refreshDropdown

public void refreshDropdown(java.lang.String name)
Refreshes the dropdown and selects a specified panel. If name is null, the current selection is retained if possible.

Parameters:
name - the name of the panel to select

getUniqueName

protected java.lang.String getUniqueName(java.lang.String proposedName)
Gets a unique name.

Parameters:
proposedName - the proposed name
Returns:
the unique name

getLoader

public static XML.ObjectLoader getLoader()
Returns an ObjectLoader to save and load data for this class.

Returns:
the object loader