Class NumSelector
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.text.JTextComponent
-
- javax.swing.JTextField
-
- com.jstatcom.component.IValTextField
-
- com.jstatcom.component.NumSelector
-
- All Implemented Interfaces:
- SymbolListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.Scrollable, javax.swing.SwingConstants
public final class NumSelector extends IValTextField implements SymbolListener
This component allows for number input that is automatically checked according to aNumberRangeobject. The range can be specified by constants or via symbol names for the upper and lower bounds. By default the number is stored in a symbol of typeNUMBER, but this can be changed toINT. If the underlying symbol is of the wrong type, then an exception is thrown. The type of the bounds must be the same as the type for the number.Usage Note:
If the number format type is set toNumberFormatTypes.DEFAULT, then the precision set for this selector defines, how displayed numbers are rounded. Any additional precision is lost, after a number was selected. If, for example, onlyintnumbers should be possible, the precision can be set to 0, which is also the default. The resulting number is then stored as adoublethat is equal to anint.
If the number format type is set toNumberFormatTypes.SCIENTIFIC, then the precision is used only for the display. No rounding is performed and a precision of 0 does not mean that values are equal to anint.This class fires a "number" property change, if a new number was set.
- See Also:
NumberRange, Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class javax.swing.text.JTextComponent
javax.swing.text.JTextComponent.AccessibleJTextComponent, javax.swing.text.JTextComponent.DropLocation, javax.swing.text.JTextComponent.KeyBinding
-
-
Field Summary
-
Fields inherited from class javax.swing.JComponent
TOOL_TIP_TEXT_KEY, 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
-
-
Constructor Summary
Constructors Constructor and Description NumSelector()Default constructor initializes range to (-Infinity,+Infinity) and sets the displayed value to 0.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method and Description voidaddNotify()OverridesaddNotifyto retrieve data objects as soon as the component hierarchy is established.intgetIntNumber()Gets the currently displayed number as anint.doublegetNumber()Gets the currently displayed number asdouble.NumberFormatTypesgetNumberFormatType()Gets the current number format type.NumberRangegetNumberRange()Gets the range that the input is checked against.intgetPrecision()Gets the precision for the displayed numbers.java.lang.StringgetRangeExpr()Gets the current number range displayed as a string, for example[1,100] or ["lowerBound_p", 20].java.lang.StringgetSymbolName()Gets the symbol identifier for the data object of the selected number.ScopegetSymbolScope()Gets the symbol scope.voidhandleError(java.lang.String msg)Error handling routine if validation failed.booleanisIntType()Gets whether the underlying symbol is stored asJSCTypes.INTor asJSCTypes.NUMBER.voidsetIntType(boolean b)Sets whether the underlying symbol is stored asJSCTypes.INTor asJSCTypes.NUMBER.voidsetNumber(double val)Sets the currently displayed number with checking whether it conforms to the specified range.voidsetNumberFormatType(NumberFormatTypes newNumberFormatType)Sets the current number format type.voidsetNumberRange(NumberRange newNumberRange)Sets the range that the number input is checked against.voidsetPrecision(int newPrecision)Sets number of digits right to decimal point.voidsetRangeExpr(java.lang.String expr)Sets the range to be checked against by specifying a string of the form["(", "["] lowerBound "," upperBound + ["]", ")"], wherelowerbound/upperBoundare either a number or a symbolname, for example[lowerBound_p, upperBound_p] or (0, upperBound_x] or [1,10].voidsetSymbolName(java.lang.String newSymbolName)Sets the symbol name to retrieve and store data from.voidsetSymbolScope(Scope scope)Sets the symbol scope.java.lang.StringvalidateInput()Validates input against the specified range whenever necessary.voidvalueChanged(SymbolEvent evt)Updates display when symbol changed.-
Methods inherited from class com.jstatcom.component.IValTextField
isEditing, setTextCarefully
-
Methods inherited from class javax.swing.JTextField
addActionListener, getAccessibleContext, getAction, getActionListeners, getActions, getColumns, getHorizontalAlignment, getHorizontalVisibility, getPreferredSize, getScrollOffset, getUIClassID, isValidateRoot, postActionEvent, removeActionListener, scrollRectToVisible, setAction, setActionCommand, setColumns, setDocument, setFont, setHorizontalAlignment, setScrollOffset
-
Methods inherited from class javax.swing.text.JTextComponent
addCaretListener, addInputMethodListener, addKeymap, copy, cut, getCaret, getCaretColor, getCaretListeners, getCaretPosition, getDisabledTextColor, getDocument, getDragEnabled, getDropLocation, getDropMode, getFocusAccelerator, getHighlighter, getInputMethodRequests, getKeymap, getKeymap, getMargin, getNavigationFilter, getPreferredScrollableViewportSize, getPrintable, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getSelectedText, getSelectedTextColor, getSelectionColor, getSelectionEnd, getSelectionStart, getText, getText, getToolTipText, getUI, isEditable, loadKeymap, modelToView, moveCaretPosition, paste, print, print, print, read, removeCaretListener, removeKeymap, removeNotify, replaceSelection, select, selectAll, setCaret, setCaretColor, setCaretPosition, setComponentOrientation, setDisabledTextColor, setDragEnabled, setDropMode, setEditable, setFocusAccelerator, setHighlighter, setKeymap, setMargin, setNavigationFilter, setSelectedTextColor, setSelectionColor, setSelectionEnd, setSelectionStart, setText, setUI, updateUI, viewToModel, write
-
Methods inherited from class javax.swing.JComponent
addAncestorListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, paint, paintImmediately, paintImmediately, print, printAll, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
-
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, 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, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate
-
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, contains, createImage, createImage, createVolatileImage, createVolatileImage, dispatchEvent, enable, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, 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, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
-
-
-
Constructor Detail
-
NumSelector
public NumSelector()
Default constructor initializes range to (-Infinity,+Infinity) and sets the displayed value to 0.
-
-
Method Detail
-
valueChanged
public void valueChanged(SymbolEvent evt)
Updates display when symbol changed. This method does nothing if the symbol is cleared.- Specified by:
valueChangedin interfaceSymbolListener- Parameters:
evt- the symbol event
-
addNotify
public void addNotify()
OverridesaddNotifyto retrieve data objects as soon as the component hierarchy is established.- Overrides:
addNotifyin classIValTextField
-
getIntNumber
public int getIntNumber()
Gets the currently displayed number as anint.- Returns:
- current number
-
getNumber
public double getNumber()
Gets the currently displayed number asdouble.- Returns:
- the selected number as
double
-
getNumberFormatType
public NumberFormatTypes getNumberFormatType()
Gets the current number format type.- Returns:
- the format type in use
-
getNumberRange
public NumberRange getNumberRange()
Gets the range that the input is checked against.- Returns:
- current number range
-
getPrecision
public int getPrecision()
Gets the precision for the displayed numbers.- Returns:
- number count right to the decimal point
-
getRangeExpr
public java.lang.String getRangeExpr()
Gets the current number range displayed as a string, for example[1,100] or ["lowerBound_p", 20].- Returns:
- string representation of number range
-
getSymbolName
public java.lang.String getSymbolName()
Gets the symbol identifier for the data object of the selected number.- Returns:
- the symbol name
-
handleError
public void handleError(java.lang.String msg)
Error handling routine if validation failed. Displays error message and sets back number value to the last valid one..- Overrides:
handleErrorin classIValTextField- Parameters:
msg- an error message
-
setNumber
public void setNumber(double val)
Sets the currently displayed number with checking whether it conforms to the specified range. This method fires a "number" property change with the old value and the changed value, if a new number was set.- Parameters:
val- the number to be displayed- Throws:
java.lang.IllegalArgumentException- ifvalis not contained in range
-
setNumberFormatType
public void setNumberFormatType(NumberFormatTypes newNumberFormatType)
Sets the current number format type.- Parameters:
newNumberFormatType- format type to use
-
setNumberRange
public void setNumberRange(NumberRange newNumberRange)
Sets the range that the number input is checked against. The currently displayed number is automatically validated against the new range. If the current number is not valid, it automatically set to a legal value withinnewNumberRange. This also updates the symbol.- Parameters:
newNumberRange- the number range for validation, ifnullthen a range of (-Infinity,+Infinity) is set.
-
setPrecision
public void setPrecision(int newPrecision)
Sets number of digits right to decimal point.- Parameters:
newPrecision- new number precision- Throws:
java.lang.IllegalArgumentException- ifnewPrecision < 0
-
setRangeExpr
public void setRangeExpr(java.lang.String expr)
Sets the range to be checked against by specifying a string of the form["(", "["] lowerBound "," upperBound + ["]", ")"], wherelowerbound/upperBoundare either a number or a symbolname, for example[lowerBound_p, upperBound_p] or (0, upperBound_x] or [1,10].If the range is specified without symbol names, it is set immediately. If the range depends on symbols to be loaded from a symbol table, this is postponed to the next
FOCUS_GAINEDevent. In the meantime, the default non-validating(-Infinity,Infinity)range is used.- Parameters:
expr- the expression to be parsed- Throws:
java.lang.IllegalArgumentException- ifexpr == nullor if it cannot be parsed to a valid range
-
setSymbolName
public void setSymbolName(java.lang.String newSymbolName)
Sets the symbol name to retrieve and store data from.- Parameters:
newSymbolName- the symbol name- Throws:
java.lang.IllegalArgumentException-if (JSCConstants.isValidName(newSymbolName) != null)
-
validateInput
public java.lang.String validateInput()
Validates input against the specified range whenever necessary. This method is invoked by the superclass and does not need to be called manually.- Specified by:
validateInputin classIValTextField- Returns:
nullif ok, an error message otherwise
-
getSymbolScope
public Scope getSymbolScope()
Gets the symbol scope.- Returns:
- scope
-
setSymbolScope
public void setSymbolScope(Scope scope)
Sets the symbol scope.- Parameters:
scope-- Throws:
java.lang.IllegalArgumentException-if (scope == null)
-
isIntType
public boolean isIntType()
Gets whether the underlying symbol is stored asJSCTypes.INTor asJSCTypes.NUMBER.- Returns:
trueifJSCTypes.INT
-
setIntType
public void setIntType(boolean b)
Sets whether the underlying symbol is stored asJSCTypes.INTor asJSCTypes.NUMBER. The default isJSCTypes.NUMBER. It will only take effect after a new symbol name or scope has been set.- Parameters:
b- iftruethenJSCTypes.INTiffalsethenJSCTypes.NUMBER
-
-
DMelt 3.0 © DataMelt by jWork.ORG