org.opensourcephysics.tools
Class UserFunctionEditor

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 org.opensourcephysics.tools.FunctionEditor
                      extended by org.opensourcephysics.tools.UserFunctionEditor
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.beans.PropertyChangeListener, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible

public class UserFunctionEditor
extends FunctionEditor

A FunctionEditor for UserFunctions.

Author:
Douglas Brown
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class org.opensourcephysics.tools.FunctionEditor
FunctionEditor.DefaultEdit, FunctionEditor.Table, FunctionEditor.TableModel
 
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
protected  boolean parametersValid
           
 
Fields inherited from class org.opensourcephysics.tools.FunctionEditor
ADD_EDIT, buttonPanel, circularErrors, copyButton, customButtons, cutButton, editTypes, errors, evaluate, EXPRESSION_EDIT, forbiddenNames, functionPanel, NAME_EDIT, names, newButton, objects, paramEditor, pasteButton, removablesAtTop, REMOVE_EDIT, sortedObjects, table, tableCellEditor, tableCellRenderer, tableModel, tableScroller
 
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
UserFunctionEditor()
          Constructor.
 
Method Summary
 java.lang.Object addObject(java.lang.Object obj, int row, boolean postEdit, boolean firePropertyChange)
          Adds an object.
protected  java.lang.Object createObject(java.lang.String name, java.lang.String expression, java.lang.Object obj)
          Creates an object with specified name and expression.
 void evaluateAll()
          Evaluates all current objects.
 java.lang.String getExpression(java.lang.Object obj)
          Returns the expression of the object.
static XML.ObjectLoader getLoader()
          Returns an ObjectLoader to save and load data for this class.
 UserFunction[] getMainFunctions()
          Returns the main user functions.
 java.lang.String getName(java.lang.Object obj)
          Returns the name of the object.
 UserFunction[] getSupportFunctions()
          Returns supporting functions
 java.lang.String getTooltip(java.lang.Object obj)
          Returns a tooltip for the object.
protected  java.lang.String getVariablesString()
          Returns a String with the names of variables available for expressions.
protected  boolean isDisallowedName(java.lang.Object obj, java.lang.String name)
          Returns true if a name is forbidden or in use.
 boolean isExpressionEditable(java.lang.Object obj)
          Determines if an object's expression is editable.
protected  boolean isImportant(java.lang.Object obj)
          Determines if an object is important.
protected  boolean isInvalidExpression(java.lang.Object obj)
          Returns true if the object's expression is invalid.
 boolean isNameEditable(java.lang.Object obj)
          Determines if an object's name is editable.
 java.lang.Object removeObject(java.lang.Object obj, boolean postEdit)
          Removes an object.
protected  void setDefaultVariables(java.lang.String[] varNames)
          Sets the default variable names.
 void setMainFunctions(UserFunction[] functions)
          Sets the main user functions.
protected  void setReferences(java.lang.Object obj, java.util.List<java.lang.Object> ref)
          Informs an object about other objects referenced in its expression.
 
Methods inherited from class org.opensourcephysics.tools.FunctionEditor
addObject, containsInvalidExpressions, createGUI, createUniqueObject, format, getClipboardContents, getDefaultName, getNames, getObject, getObjects, getParamEditor, getPartlyEditableRowCount, getPreferredSize, getReferences, getSelectedObject, getSelectedObjects, getTable, getUndoableEdit, isRemovable, paste, propertyChange, refreshButtons, refreshGUI, refreshStrings, setCustomButtons, setExpression, setObjects, setParamEditor
 
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, 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
 

Field Detail

parametersValid

protected boolean parametersValid
Constructor Detail

UserFunctionEditor

public UserFunctionEditor()
Constructor.

Method Detail

getMainFunctions

public UserFunction[] getMainFunctions()
Returns the main user functions.

Returns:
UserFunction[]

setMainFunctions

public void setMainFunctions(UserFunction[] functions)
Sets the main user functions.

Parameters:
functions - UserFunction[]

getSupportFunctions

public UserFunction[] getSupportFunctions()
Returns supporting functions

Returns:
an array of UserFunctions

getName

public java.lang.String getName(java.lang.Object obj)
Returns the name of the object.

Overrides:
getName in class FunctionEditor
Parameters:
obj - the object
Returns:
the name

getExpression

public java.lang.String getExpression(java.lang.Object obj)
Returns the expression of the object.

Overrides:
getExpression in class FunctionEditor
Parameters:
obj - the object
Returns:
the expression

isNameEditable

public boolean isNameEditable(java.lang.Object obj)
Determines if an object's name is editable.

Overrides:
isNameEditable in class FunctionEditor
Parameters:
obj - the object
Returns:
true if the name is editable

isExpressionEditable

public boolean isExpressionEditable(java.lang.Object obj)
Determines if an object's expression is editable.

Overrides:
isExpressionEditable in class FunctionEditor
Parameters:
obj - the object
Returns:
true if the expression is editable

evaluateAll

public void evaluateAll()
Evaluates all current objects.

Overrides:
evaluateAll in class FunctionEditor

addObject

public java.lang.Object addObject(java.lang.Object obj,
                                  int row,
                                  boolean postEdit,
                                  boolean firePropertyChange)
Adds an object.

Overrides:
addObject in class FunctionEditor
Parameters:
obj - the object
postEdit - true to post an undoable edit
row - the row
firePropertyChange - true to fire a property change event
Returns:
the added object

removeObject

public java.lang.Object removeObject(java.lang.Object obj,
                                     boolean postEdit)
Removes an object.

Overrides:
removeObject in class FunctionEditor
Parameters:
obj - the object to remove
postEdit - true to post an undoable edit
Returns:
the removed object

getTooltip

public java.lang.String getTooltip(java.lang.Object obj)
Returns a tooltip for the object.

Overrides:
getTooltip in class FunctionEditor
Parameters:
obj - the object
Returns:
the tooltip

isImportant

protected boolean isImportant(java.lang.Object obj)
Determines if an object is important. Important objects cannot be cut even if they are editable.

Overrides:
isImportant in class FunctionEditor
Parameters:
obj - the object
Returns:
true if important

setReferences

protected void setReferences(java.lang.Object obj,
                             java.util.List<java.lang.Object> ref)
Informs an object about other objects referenced in its expression.

Overrides:
setReferences in class FunctionEditor

setDefaultVariables

protected void setDefaultVariables(java.lang.String[] varNames)
Sets the default variable names.

Parameters:
varNames - the names

isDisallowedName

protected boolean isDisallowedName(java.lang.Object obj,
                                   java.lang.String name)
Returns true if a name is forbidden or in use.

Overrides:
isDisallowedName in class FunctionEditor
Parameters:
obj - the object (may be null)
name - the proposed name for the object
Returns:
true if disallowed

getVariablesString

protected java.lang.String getVariablesString()
Returns a String with the names of variables available for expressions.

Overrides:
getVariablesString in class FunctionEditor

isInvalidExpression

protected boolean isInvalidExpression(java.lang.Object obj)
Returns true if the object's expression is invalid.

Overrides:
isInvalidExpression in class FunctionEditor

createObject

protected java.lang.Object createObject(java.lang.String name,
                                        java.lang.String expression,
                                        java.lang.Object obj)
Creates an object with specified name and expression. This modifies and returns the input UserFunction unless null.

Overrides:
createObject in class FunctionEditor
Parameters:
name - the name
expression - the expression
obj - ignored
Returns:
the object

getLoader

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

Returns:
the object loader