Class TLcyComboBoxActionBar
- All Implemented Interfaces:
ILcyActionBar,ILcyToolBar
General
Implementation of ILcyActionBar that is represented as a combo
box. Its items are displayed in the drop-down. Sub-menus aren't supported.
It is meant to contain a series of ILcyActiveSettabless that behave similar to radio
buttons (only one button of a series is active at a time). It does not support check box style
active settables. This means aDeactivatePossible of the insertActiveSettable method must be false.
It can also contain regular ILcdActions. The active settable that is active is displayed
as the current value of the combo box, also when it is collapsed.
The difference with a regular sub-menu of a TLcyToolBar is that a combo box
provides feedback on the currently selected item without having to expand the menu.
Example
Consider a TLcyComboBoxActionBar having a series of active settables,
each enabling a certain projection on the map. The active settables themselves listen to the map,
and when the projection is changed, they update their 'active' state accordingly. Suppose there
also is a regular action that can be used to pop up a dialog, showing some additional projection
properties.
If you select such a projection active settable from the combo box, it gets activated by this action bar. The active settable that used to be active now becomes inactive, as it was notified by the map that another projection was activated (by a third party). At all times, the collapsed combo box shows the current map projection. If you select the regular action from the combo, the dialog is shown, but the active state of all active settables remains unchanged.
Limitations
- The combo box is not editable, so no values can be typed.
- It does not support sub-menus (throws exceptions).
aDeactivatePossibleof theinsertActiveSettablemethod must befalse, an exception is thrown otherwise.- Only the name of an action or active settable is displayed. Other things such as the icon are ignored.
- It does not support
ILcyCustomizableRepresentationActionorILcyCustomizableRepresentationActiveSettable - It does not have separators between groups.
- Actions that hide or disable themselves shouldn't be added to this combo box as it does not respect the enabled and visible state of the actions.
- Since:
- 2012.0
-
Constructor Summary
ConstructorsConstructorDescriptionCreates a newTLcyComboBoxActionBar, ready to be used.TLcyComboBoxActionBar(ALcyHelpManager aHelpManager) Creates a newTLcyComboBoxActionBar, ready to be used. -
Method Summary
Modifier and TypeMethodDescriptionprotected ComponentcreateItem(ILcdAction aAction, TLcyGroupDescriptor aGroupDescriptor, String[] aMenus, TLcyGroupDescriptor[] aMenuGroupDescriptors) Creates a gui widget to represent the given action.protected ComponentcreateItem(ILcyActiveSettable aActiveSettable, TLcyGroupDescriptor aGroupDescriptor, String[] aMenus, TLcyGroupDescriptor[] aMenuGroupDescriptors, boolean aDeactivatePossible) Creates a gui widget to represent the given active settable.protected ContainercreateItemContainer(String[] aMenus, TLcyGroupDescriptor[] aMenuGroupDescriptors) Creates a new container for the given (sub)menus.protected Component[]getChildren(Container aParent) Returns all children of a given parent, including separators etc.Returns the visual component representing this action bar, so that it can be added to the application UI.protected ContainergetItemContainer(String[] aMenus, TLcyGroupDescriptor[] aMenuGroupDescriptors) Retrieves the (sub)menu container that contains the actions or active settables at the given (sub)menus.protected ContainerReturns the parent of a given component.protected voidinsertSeparator(int aIndex, Container aContainerSFCT) Inserts a separator at the given index into the given component.booleanReturns the autoHide property of the action bar.protected voidremoveSeparator(int aIndex, Container aContainerSFCT) Removes the separator at the given index from the given component.voidsetAutoHide(boolean aAutoHide) Set the autoHide property of the action bar.Methods inherited from class com.luciad.lucy.gui.ALcyActionBar
addActionBarListener, getActionBarItem, getActionBarItemComparator, getActionBarItemCount, getGroupDescriptorComparator, getHelpManager, getProperties, insertAction, insertAction, insertActiveSettable, insertActiveSettable, insertActiveSettable, insertChildInParent, insertComponent, removeAction, removeActionBarListener, removeActiveSettable, removeChildFromParent, removeComponent, retrieveDeactivatePossible, retrieveGroupDescriptor, retrieveGroupDescriptor, retrieveHelpIDString, retrieveHelpIDString, retrieveMenuGroupDescriptors, retrieveMenuGroupDescriptors, retrieveMenus, retrieveMenus, setActionBarItemComparator, setGroupDescriptorComparator, setHelpIDString, setHelpIDString, setHelpManager, setPropertiesMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.luciad.lucy.gui.ILcyActionBar
addActionBarListener, getActionBarItem, getActionBarItemCount, insertAction, insertAction, insertActiveSettable, insertActiveSettable, insertActiveSettable, removeAction, removeActionBarListener, removeActiveSettable, retrieveDeactivatePossible, retrieveGroupDescriptor, retrieveGroupDescriptor, retrieveHelpIDString, retrieveHelpIDString, retrieveMenuGroupDescriptors, retrieveMenuGroupDescriptors, retrieveMenus, retrieveMenus, setHelpIDString, setHelpIDStringMethods inherited from interface com.luciad.lucy.gui.ILcyToolBar
insertComponent, removeComponent
-
Constructor Details
-
TLcyComboBoxActionBar
public TLcyComboBoxActionBar()Creates a newTLcyComboBoxActionBar, ready to be used. -
TLcyComboBoxActionBar
Creates a newTLcyComboBoxActionBar, ready to be used.- Parameters:
aHelpManager- The help manager.
-
-
Method Details
-
isAutoHide
public boolean isAutoHide()Returns the autoHide property of the action bar.
When the autoHide property is
true, the component of the action bar will become invisible when it is empty.This action bar is considered empty when the combo-box does not contain any items.
- Overrides:
isAutoHidein classALcyActionBar- Returns:
- the autoHide property of the action bar.
- See Also:
-
setAutoHide
public void setAutoHide(boolean aAutoHide) Set the autoHide property of the action bar.
When set to
true, the component of the action bar will become invisible when the action bar is empty.The default implementation of this method considers an action bar empty when the component representing the action bar is a
Containerwithout any visible child components.This action bar is considered empty when the combo-box does not contain any items.
- Overrides:
setAutoHidein classALcyActionBar- Parameters:
aAutoHide-truewhen the an empty action bar must be invisible,falseotherwise.- See Also:
-
getComponent
Description copied from interface:ILcyActionBarReturns the visual component representing this action bar, so that it can be added to the application UI.
Components should not be added to it or removed from it directly using Swing. Use the various insert methods instead.
- Specified by:
getComponentin interfaceILcyActionBar- Returns:
- the visual component representing this action bar.
-
createItem
protected Component createItem(ILcdAction aAction, TLcyGroupDescriptor aGroupDescriptor, String[] aMenus, TLcyGroupDescriptor[] aMenuGroupDescriptors) Description copied from class:ALcyActionBarCreates a gui widget to represent the given action. E.g. a menu bar could create aJMenuItemto represent the given action. A toolbar could create aJButtonto represent the given action.- Specified by:
createItemin classALcyActionBar- Parameters:
aAction- The action to create a gui widget for.aGroupDescriptor- The group descriptor, for information only.aMenus- The menus, for information only.aMenuGroupDescriptors- The menu group descriptors, for information only.- Returns:
- The created gui widget.
-
createItem
protected Component createItem(ILcyActiveSettable aActiveSettable, TLcyGroupDescriptor aGroupDescriptor, String[] aMenus, TLcyGroupDescriptor[] aMenuGroupDescriptors, boolean aDeactivatePossible) Description copied from class:ALcyActionBarCreates a gui widget to represent the given active settable. E.g. a menu bar could create aJCheckBoxMenuItemto represent the given action or aJRadioButtonMenuItemwhenaDeactivatePossibleis false. A toolbar could create aJToggleButtonto represent the given active settable.- Specified by:
createItemin classALcyActionBar- Parameters:
aActiveSettable- The active settable to create a gui widget for.aGroupDescriptor- The group descriptor, for information only.aMenus- The menus, for information only.aMenuGroupDescriptors- The menu group descriptors, for information only.aDeactivatePossible- True means the active settable can be deactivated using the created gui widget (e.g. a checkbox), false means it cannot be deactivated by the created gui widget, probably only by another widget (e.g. radio button).- Returns:
- The created gui widget.
-
getItemContainer
Description copied from class:ALcyActionBarRetrieves the (sub)menu container that contains the actions or active settables at the given (sub)menus. If no such container exists, null is returned. If the aMenus is null or an empty array, it shall not return null but it must return the top level container.- Specified by:
getItemContainerin classALcyActionBar- Parameters:
aMenus- The (sub)menus to retrieve the container for. If null or an empty array, the top level container should be returned.aMenuGroupDescriptors- The menu group descriptors, just for information. Could be null, or the length of the array can possibly mismatch the length of the menus.- Returns:
- the container that contains the actions or active settables at the given (sub)menus.
-
createItemContainer
protected Container createItemContainer(String[] aMenus, TLcyGroupDescriptor[] aMenuGroupDescriptors) Description copied from class:ALcyActionBarCreates a new container for the given (sub)menus. The actions and active settables that need to be added to the given (sub)menus will be added to the created container. The created menu must not be inserted into its parent.An example implemention could look like this:
return new JMenu( aMenus[ aMenus.length - 1 ] )
- Specified by:
createItemContainerin classALcyActionBar- Parameters:
aMenus- The (sub)menus to create the menu item container for. Is never null and length of array is at least 1.aMenuGroupDescriptors- The menu group descriptors for the menus. Could be null, or the length of the array can possibly mismatch the length of the menus.- Returns:
- a new container for the given (sub)menus.
-
insertSeparator
Description copied from class:ALcyActionBarInserts a separator at the given index into the given component.Implementation can be left empty, but if and only if implementation of
ALcyActionBar.removeSeparator(int, java.awt.Container)is left empty as well.- Specified by:
insertSeparatorin classALcyActionBar- Parameters:
aIndex- The index of where to insert the separator. -1 means insert it at the end.aContainerSFCT- The container to insert the separator into.
-
removeSeparator
Description copied from class:ALcyActionBarRemoves the separator at the given index from the given component.Implementation can be left empty, but if and only if implementation of
ALcyActionBar.insertSeparator(int, java.awt.Container)is left empty as well.- Specified by:
removeSeparatorin classALcyActionBar- Parameters:
aIndex- The index where to remove the separator from the given component.aContainerSFCT- The container to remove the separator from.
-
getChildren
Description copied from class:ALcyActionBarReturns all children of a given parent, including separators etc.This implementation returns
aParent.getComponents(), but subclasses using for instanceJMenus should be aware that they should return( ( JMenu ) aParent ).getMenuComponents()when the given parent is aJMenu.- Overrides:
getChildrenin classALcyActionBar- Parameters:
aParent- The parent to retrieve the children from.- Returns:
- An array containing all children of the given parent.
-
getParent
Description copied from class:ALcyActionBarReturns the parent of a given component.This implementation returns
aComponent.getParent(), but subclasses using for instanceJPopupMenus (these are used for example byJMenus) must return( ( JPopupMenu ) aComponent ).getInvoker()when the given component is aJPopupMenu.- Overrides:
getParentin classALcyActionBar- Parameters:
aComponent- The component to retrieve the parent for.- Returns:
- The parent of the given component, or null.
-