Class TLcyCompositeCustomizerTabbedPane
- All Implemented Interfaces:
ILcdUndoableSource,ILcyCompositeCustomizerPanel,ILcyCustomizerPanel,ILcdPropertyChangeSource,ImageObserver,MenuContainer,Serializable,Accessible,SwingConstants
Composite implementation of ILcyCustomizerPanel that uses a JTabbedPane. This class is
very similar to TLcyCompositeCustomizerPanel, the only difference is that it uses a tabbed
pane to represent every child ILcyCustomizerPanel in a tab.
Children must be added using addCustomizerPanel. The title, icon and tooltip of the tab
are the name, small icon and short description of the ILcyCustomizerPanel.
The tabs need to be added before any object is set. A typical usage could be:
ILcyCustomizerPanel cust1 = ...;
ILcyCustomizerPanel cust2 = ...;
TLcyCompositeCustomizerTabbedPane composite = new TLcyCompositeCustomizerTabbedPane();
composite.addCustomizerPanel( cust1 );
composite.addCustomizerPanel( cust2 );
When an object is set, it is simply set to all child customizer panels. If needed,
setObject can be overridden to retrieve some sub-object from the set object and pass that on to
the children. E.g., if a TLcdGXYLayer is set to the composite customizer, it might be needed
to set the TLcdGXYLayer.getGXYPainterProvider object to one of the child customizer panels.
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class javax.swing.JTabbedPane
JTabbedPane.AccessibleJTabbedPane, JTabbedPane.ModelListenerNested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponentNested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainerNested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy -
Field Summary
Fields inherited from class javax.swing.JTabbedPane
changeEvent, changeListener, model, SCROLL_TAB_LAYOUT, tabPlacement, WRAP_TAB_LAYOUTFields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOWFields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields inherited from interface com.luciad.lucy.gui.customizer.ILcyCustomizerPanel
HINT_PINNED, HORIZONTAL_ALIGNMENT_HINT, LONG_DESCRIPTION, NAME, SHORT_DESCRIPTION, SMALL_ICONFields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTHFields inherited from interface javax.swing.SwingConstants
BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST -
Constructor Summary
ConstructorsConstructorDescriptionCreates a newTLcyCompositeCustomizerTabbedPane.Creates a newTLcyCompositeCustomizerTabbedPane. -
Method Summary
Modifier and TypeMethodDescriptionvoidaddCustomizerPanel(ILcyCustomizerPanel aCustomizerPanel) Adds the givenILcyCustomizerPanelto this composite implementation.voidaddCustomizerPanel(ILcyCustomizerPanel aCustomizerPanel, int aIndex) Inserts the givenILcyCustomizerPanelinto this composite implementation, at the given index.voidaddUndoableListener(ILcdUndoableListener aUndoableListener) Adds a listener to this source, so this listener is notified when something undoable has happened.booleanUpdates the setObjectaccording to the current state of the user interface.voidUpdates the user interface state according to the current state of the setObject.booleancanSetObject(Object aObject) Returnstrueif and only ifsetObjectwould not throw anIllegalArgumentException.protected voidfireUndoableHappened(ILcdUndoable aUndoable) Fires the givenILcdUndoableto all associatedILcdUndoableListeners.Returns the associatedILcyCustomizerPanels as an (unmodifiable) java.util.List.Returns the object that was set usingsetObject.Gets the property value for the given key.booleanReturnstrueif changes are pending.booleanReturnstrueif the pending changes are valid, or if there are no pending changes.voidSets the property value foraKeytoaValue.voidremoveCustomizerPanel(ILcyCustomizerPanel aCustomizerPanel) Removes the givenILcyCustomizerPanel.voidremoveUndoableListener(ILcdUndoableListener aUndoableListener) Removes the specified listener so it is no longer notified.voidSet the object to be edited.Methods inherited from class javax.swing.JTabbedPane
add, add, add, add, add, addChangeListener, addTab, addTab, addTab, createChangeListener, fireStateChanged, getAccessibleContext, getBackgroundAt, getBoundsAt, getChangeListeners, getComponentAt, getDisabledIconAt, getDisplayedMnemonicIndexAt, getForegroundAt, getIconAt, getMnemonicAt, getModel, getSelectedComponent, getSelectedIndex, getTabComponentAt, getTabCount, getTabLayoutPolicy, getTabPlacement, getTabRunCount, getTitleAt, getToolTipText, getToolTipTextAt, getUI, getUIClassID, indexAtLocation, indexOfComponent, indexOfTab, indexOfTab, indexOfTabComponent, insertTab, isEnabledAt, paramString, remove, remove, removeAll, removeChangeListener, removeTabAt, setBackgroundAt, setComponentAt, setDisabledIconAt, setDisplayedMnemonicIndexAt, setEnabledAt, setForegroundAt, setIconAt, setMnemonicAt, setModel, setSelectedComponent, setSelectedIndex, setTabComponentAt, setTabLayoutPolicy, setTabPlacement, setTitleAt, setToolTipTextAt, setUI, updateUIMethods 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, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, 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, updateMethods inherited from class java.awt.Container
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, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTreeMethods 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, 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, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycleMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface com.luciad.util.ILcdPropertyChangeSource
addPropertyChangeListener, removePropertyChangeListenerMethods inherited from interface com.luciad.lucy.gui.customizer.ILcyCustomizerPanel
addPropertyChangeListener, getPropertyChangeListeners, getPropertyChangeListeners, removePropertyChangeListener
-
Constructor Details
-
TLcyCompositeCustomizerTabbedPane
public TLcyCompositeCustomizerTabbedPane()Creates a newTLcyCompositeCustomizerTabbedPane. ChildILcyCustomizerPanels need to be added before it can be used. -
TLcyCompositeCustomizerTabbedPane
Creates a newTLcyCompositeCustomizerTabbedPane. ChildILcyCustomizerPanels need to be added before it can be used.- Parameters:
aName- The name for the customizer, seeILcyCustomizerPanel.NAME.
-
-
Method Details
-
addUndoableListener
Description copied from interface:ILcdUndoableSourceAdds a listener to this source, so this listener is notified when something undoable has happened.- Specified by:
addUndoableListenerin interfaceILcdUndoableSource- Parameters:
aUndoableListener- The listener to be notified when something undoable has happened.
-
removeUndoableListener
Description copied from interface:ILcdUndoableSourceRemoves the specified listener so it is no longer notified.- Specified by:
removeUndoableListenerin interfaceILcdUndoableSource- Parameters:
aUndoableListener- The listener to remove.
-
fireUndoableHappened
Fires the givenILcdUndoableto all associatedILcdUndoableListeners.- Parameters:
aUndoable- TheILcdUndoableto fire.
-
getValue
Description copied from interface:ILcyCustomizerPanelGets the property value for the given key.- Specified by:
getValuein interfaceILcyCustomizerPanel- Parameters:
aKey- The key to retrieve the value for.- Returns:
- the property value for the given key.
- See Also:
-
putValue
Description copied from interface:ILcyCustomizerPanelSets the property value foraKeytoaValue. If the value has changed, aPropertyChangeEventis sent to the listeners. The property name of the event equals the value ofaKey.- Specified by:
putValuein interfaceILcyCustomizerPanel- Parameters:
aKey- The key. Should preferably start with an uppercase letter to avoid confusion with regular properties.aValue- The value.- See Also:
-
addCustomizerPanel
Adds the given
ILcyCustomizerPanelto this composite implementation.Note that all children must be added before this
ILcyCompositeCustomizerPanelis used.The given panel is automatically added as a tab to this tabbed pane. The title, icon and tooltip of the tab are the name, small icon and short description of the
ILcyCustomizerPanel.- Specified by:
addCustomizerPanelin interfaceILcyCompositeCustomizerPanel- Parameters:
aCustomizerPanel- TheILcyCustomizerPanelto add.- See Also:
-
addCustomizerPanel
Description copied from interface:ILcyCompositeCustomizerPanelInserts the given
ILcyCustomizerPanelinto this composite implementation, at the given index. The panels with an index greater than the given index are shifted to a higher index, to make room for the new panel.Note that all children must be added before this
ILcyCompositeCustomizerPanelis used.- Specified by:
addCustomizerPanelin interfaceILcyCompositeCustomizerPanel- Parameters:
aCustomizerPanel- TheILcyCustomizerPanelto add.aIndex- The index to insert theILcyCustomizerPanelat.0 <= aIndex <= getCustomizerPanels().size(). IfaIndex == getCustomizerPanels().size(), the panel is added at the end.- See Also:
-
removeCustomizerPanel
Removes the given
ILcyCustomizerPanel.Note that all children must not be changed after this
ILcyCompositeCustomizerPanelis used.The tab is also removed.
- Specified by:
removeCustomizerPanelin interfaceILcyCompositeCustomizerPanel- Parameters:
aCustomizerPanel- TheILcyCustomizerPanelto remove.- See Also:
-
getCustomizerPanels
Description copied from interface:ILcyCompositeCustomizerPanelReturns the associatedILcyCustomizerPanels as an (unmodifiable) java.util.List.- Specified by:
getCustomizerPanelsin interfaceILcyCompositeCustomizerPanel- Returns:
- the associated
ILcyCustomizerPanels as an (unmodifiable) java.util.List.
-
isChangesPending
public boolean isChangesPending()Description copied from interface:ILcyCustomizerPanelReturnstrueif changes are pending. A change is a modification made by the user, e.g., the modified content of a text field. Pending means the methodapplyChangeswas not invoked after the change occurred. A property change event"changesPending"must be fired if the return value of this method is changed. This can for example be used to enable/disable an apply button.- Specified by:
isChangesPendingin interfaceILcyCustomizerPanel- Returns:
trueif there are pending changes,falseotherwise.
-
canSetObject
Description copied from interface:ILcyCustomizerPanelReturnstrueif and only ifsetObjectwould not throw anIllegalArgumentException.- Specified by:
canSetObjectin interfaceILcyCustomizerPanel- Parameters:
aObject- The object to check.- Returns:
trueifsetObjectwould accept the object,falseif it would throw an exception.
-
setObject
Description copied from interface:ILcyCustomizerPanelSet the object to be edited. This method should be called before theILcyCustomizerPanelhas been added to any parent AWT container. It can be called afterwards as well however. In this case the user interface should update itself to represent the newly set object. A value ofnullis set to inform thisILcyCustomizerPanelto (temporarily) deinitialize itself, it allows to perform cleanup tasks, such as removing listeners.- Specified by:
setObjectin interfaceILcyCustomizerPanel- Parameters:
aObject- The object to be customized, ornullto inform that editing is temporarily disabled.
-
getObject
Description copied from interface:ILcyCustomizerPanelReturns the object that was set usingsetObject. This can benull.- Specified by:
getObjectin interfaceILcyCustomizerPanel- Returns:
- the object that was set using
setObject. - See Also:
-
isChangesValid
public boolean isChangesValid()Description copied from interface:ILcyCustomizerPanelReturnstrueif the pending changes are valid, or if there are no pending changes. Returnsfalseif there are invalid pending changes. A change is a modification made by the user, e.g., the modified content of a text field. Pending means the methodapplyChangeswas not invoked after the change occurred.Falsecould for example be returned if the user has entered invalid input that cannot be applied, such as text where a number is expected. A property change event"changesValid"must be fired if the return value of this method is changed. This can for example be used to enable/disable an apply button, or to inform the user that he must first correct the invalid content. Implementations can ignore this feature by always returningtrue.- Specified by:
isChangesValidin interfaceILcyCustomizerPanel- Returns:
trueif the changes can be applied,falseotherwise.
-
applyChanges
public boolean applyChanges()Description copied from interface:ILcyCustomizerPanelUpdates the setObjectaccording to the current state of the user interface. This means all pending changes are committed. If there were any pending changes, soisChangesPendingreturnedtrue, it should returnfalseafter this method has finished, and therefore also a"changesPending"property change event must be fired. E.g. consider that aILcdGXYLayerobject is set and a new label text is entered in a text field. When this method is called, the new label text should be set to theILcdGXYLayer(usingILcdGXYLayer.setLabel).- Specified by:
applyChangesin interfaceILcyCustomizerPanel- Returns:
Trueif the changes were applied or if there were no changes,falseif the changes could not be applied because they are invalid. In that event,isChangesValidreturnsfalse.
-
cancelChanges
public void cancelChanges()Description copied from interface:ILcyCustomizerPanelUpdates the user interface state according to the current state of the setObject. Any changes that were made in the user interface but were not yet applied, should be discarded. E.g. consider that anILcdGXYLayeris being edited and a new label text was entered in a text field. When this method is called, the new label text should be cleared and the current label of theILcdGXYLayershould be put in the text field (ILcdGXYLayer.getLabel()).- Specified by:
cancelChangesin interfaceILcyCustomizerPanel
-