public class ActionManager
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
protected static class |
ActionManager.ActionInvocationHandler |
protected static class |
ActionManager.BooleanInvocationHandler |
protected static interface |
ActionManager.ComponentHandler |
protected class |
ActionManager.MenuBarHandler |
protected class |
ActionManager.MenuHandler |
protected class |
ActionManager.PopupMenuHandler |
protected static class |
ActionManager.ToggleActionPropertyChangeListener |
protected class |
ActionManager.ToolBarHandler |
protected static class |
ActionManager.WeakActionHandler |
protected class |
ActionManager.XmlActionHandler |
Modifier and Type | Field and Description |
---|---|
protected java.util.Map<java.lang.String,ActionList> |
actionListMap |
protected java.util.Map<java.lang.String,javax.swing.Action> |
actionMap |
protected java.util.Map<java.lang.String,ActionSet> |
actionSetMap |
protected java.util.Map<java.lang.String,de.ims.icarus.ui.actions.ActionManager.ActionAttributes> |
attributeMap |
static java.lang.String |
DIRECTION_PARAMETER |
protected static java.util.Map<java.lang.String,java.lang.Object> |
EMPTY_PROPERTIES |
static java.lang.String |
FILL_TOOLBAR |
protected gnu.trove.map.TIntObjectMap<javax.swing.ButtonGroup> |
groupMap |
static java.lang.String |
LARGE_SELECTED_ICON_KEY |
static java.lang.String |
LEFT_TO_RIGHT |
protected java.util.Set<java.lang.String> |
loadedResources |
protected java.lang.Object |
lock |
protected ActionManager.ComponentHandler |
menuBarHandler |
protected ActionManager.ComponentHandler |
menuHandler |
protected ActionManager.ComponentHandler |
popupMenuHandler |
static java.lang.String |
RIGHT_TO_LEFT |
static java.lang.String |
SEPARATOR_MEDIUM |
static java.lang.String |
SEPARATOR_SMALL |
static java.lang.String |
SEPARATOR_WIDE |
static java.lang.String |
SMALL_SELECTED_ICON_KEY |
protected ActionManager.ComponentHandler |
toolBarHandler |
Constructor and Description |
---|
ActionManager(ActionManager parent,
ResourceDomain resourceDomain,
IconRegistry iconRegistry) |
Modifier and Type | Method and Description |
---|---|
void |
addAction(java.lang.String id,
javax.swing.Action action) |
void |
addActionList(java.lang.String id,
ActionList actionList) |
void |
addActionSet(java.lang.String id,
ActionSet actionSet) |
protected void |
addAttributes(org.xml.sax.Attributes attrs) |
void |
addHandler(java.lang.String id,
java.lang.Object handler,
java.lang.String method)
Registers a
handler object to receive notifications
about events on the specified action. |
protected void |
configureButton(javax.swing.AbstractButton button,
javax.swing.Action action) |
protected void |
configureMenu(javax.swing.JMenu menu,
javax.swing.Action action,
java.util.Map<java.lang.String,java.lang.Object> properties) |
protected void |
configureMenuBar(javax.swing.JMenuBar menuBar,
java.util.Map<java.lang.String,java.lang.Object> properties) |
protected void |
configureMenuItem(javax.swing.JMenuItem menuItem,
javax.swing.Action action) |
protected void |
configurePopupMenu(javax.swing.JPopupMenu popupMenu,
java.util.Map<java.lang.String,java.lang.Object> properties) |
protected void |
configureToggleButton(javax.swing.JToggleButton button,
javax.swing.Action action) |
protected void |
configureToggleMenuItem(javax.swing.JMenuItem menuItem,
javax.swing.Action action) |
protected void |
configureToolBar(javax.swing.JToolBar toolBar,
java.util.Map<java.lang.String,java.lang.Object> properties) |
protected javax.swing.Action |
createAction(de.ims.icarus.ui.actions.ActionManager.ActionAttributes attr,
java.lang.String id) |
protected javax.swing.AbstractButton |
createButton(javax.swing.Action action,
java.lang.String groupId,
java.awt.Component container)
Creates a
JButton or JToggleButton depending
on the type of the given Action (a StateChangeAction
will result in a JToggleButton ). |
javax.swing.JToolBar |
createEmptyToolBar() |
javax.swing.JToolBar |
createEmptyToolBar(java.util.Map<java.lang.String,java.lang.Object> properties) |
protected java.awt.Component |
createLabel(java.lang.String value) |
javax.swing.JMenu |
createMenu(ActionList actionList,
java.util.Map<java.lang.String,java.lang.Object> properties) |
javax.swing.JMenu |
createMenu(java.lang.String id,
java.util.Map<java.lang.String,java.lang.Object> properties) |
javax.swing.JMenuBar |
createMenuBar(ActionList actionList,
java.util.Map<java.lang.String,java.lang.Object> properties) |
javax.swing.JMenuBar |
createMenuBar(java.lang.String id,
java.util.Map<java.lang.String,java.lang.Object> properties) |
protected javax.swing.JMenuItem |
createMenuItem(javax.swing.Action action,
java.lang.String groupId,
java.awt.Component container) |
javax.swing.JPopupMenu |
createPopupMenu(ActionList actionList,
java.util.Map<java.lang.String,java.lang.Object> properties) |
javax.swing.JPopupMenu |
createPopupMenu(java.lang.String id,
java.util.Map<java.lang.String,java.lang.Object> properties) |
javax.swing.JToolBar |
createToolBar(ActionList actionList,
java.util.Map<java.lang.String,java.lang.Object> properties) |
javax.swing.JToolBar |
createToolBar(java.lang.String id,
java.util.Map<java.lang.String,java.lang.Object> properties) |
ActionManager |
derive() |
javax.swing.Action |
deriveAction(java.lang.String id,
java.lang.String templateId) |
protected void |
feedActionList(java.awt.Component container,
ActionManager.ComponentHandler handler,
ActionList list,
java.util.Map<java.lang.String,java.lang.Object> properties) |
protected void |
feedActionSet(java.awt.Component container,
ActionManager.ComponentHandler handler,
ActionSet actionSet,
java.util.Map<java.lang.String,java.lang.Object> properties) |
void |
feedToolBar(ActionList actionList,
javax.swing.JToolBar toolBar,
java.util.Map<java.lang.String,java.lang.Object> properties) |
void |
feedToolBar(java.lang.String id,
javax.swing.JToolBar toolBar,
java.util.Map<java.lang.String,java.lang.Object> properties) |
protected javax.swing.Action |
findAction(java.lang.String id) |
javax.swing.Action |
getAction(java.lang.String id) |
ActionList |
getActionList(java.lang.String id) |
ActionSet |
getActionSet(java.lang.String id) |
protected de.ims.icarus.ui.actions.ActionManager.ActionAttributes |
getAttributes(java.lang.String key) |
protected DelegateAction |
getDelegateAction(java.lang.String id) |
javax.swing.ButtonGroup |
getGroup(java.lang.String groupId,
java.awt.Component comp) |
protected ActionManager.ComponentHandler |
getHandler(java.lang.Class<?> containerClass) |
IconRegistry |
getIconRegistry() |
ActionManager |
getParent() |
ResourceDomain |
getResourceDomain() |
protected StateChangeAction |
getStateChangeAction(java.lang.String id) |
static ActionManager |
globalManager() |
boolean |
isEnabled(java.lang.String id) |
protected boolean |
isPreventRedundantLoading()
Hook for subclasses to bypass the optimization regarding
redundant loading of action resources.
|
boolean |
isSelected(java.lang.String id) |
protected boolean |
isSilent() |
boolean |
isStateChangeAction(java.lang.String id) |
void |
loadActions(java.net.URL location) |
void |
removeHandler(java.lang.String id,
java.lang.Object handler,
java.lang.String method) |
void |
setEnabled(boolean enabled,
java.lang.String... ids) |
void |
setSelected(boolean selected,
java.lang.String... ids) |
protected void |
setSilent(boolean silent) |
public static final java.lang.String DIRECTION_PARAMETER
public static final java.lang.String FILL_TOOLBAR
public static final java.lang.String RIGHT_TO_LEFT
public static final java.lang.String LEFT_TO_RIGHT
public static final java.lang.String SEPARATOR_SMALL
public static final java.lang.String SEPARATOR_MEDIUM
public static final java.lang.String SEPARATOR_WIDE
public static final java.lang.String SMALL_SELECTED_ICON_KEY
public static final java.lang.String LARGE_SELECTED_ICON_KEY
protected java.util.Map<java.lang.String,javax.swing.Action> actionMap
protected java.util.Map<java.lang.String,ActionSet> actionSetMap
protected java.util.Map<java.lang.String,ActionList> actionListMap
protected gnu.trove.map.TIntObjectMap<javax.swing.ButtonGroup> groupMap
protected java.util.Map<java.lang.String,de.ims.icarus.ui.actions.ActionManager.ActionAttributes> attributeMap
protected final java.lang.Object lock
protected ActionManager.ComponentHandler toolBarHandler
protected ActionManager.ComponentHandler menuHandler
protected ActionManager.ComponentHandler popupMenuHandler
protected ActionManager.ComponentHandler menuBarHandler
protected java.util.Set<java.lang.String> loadedResources
protected static final java.util.Map<java.lang.String,java.lang.Object> EMPTY_PROPERTIES
public ActionManager(ActionManager parent, ResourceDomain resourceDomain, IconRegistry iconRegistry)
public static ActionManager globalManager()
public ResourceDomain getResourceDomain()
public IconRegistry getIconRegistry()
public ActionManager derive()
protected boolean isSilent()
protected void setSilent(boolean silent)
public ActionManager getParent()
protected DelegateAction getDelegateAction(java.lang.String id)
protected StateChangeAction getStateChangeAction(java.lang.String id)
protected void addAttributes(org.xml.sax.Attributes attrs)
protected de.ims.icarus.ui.actions.ActionManager.ActionAttributes getAttributes(java.lang.String key)
public javax.swing.Action deriveAction(java.lang.String id, java.lang.String templateId)
protected javax.swing.Action findAction(java.lang.String id)
public javax.swing.Action getAction(java.lang.String id)
public void addAction(java.lang.String id, javax.swing.Action action)
protected javax.swing.Action createAction(de.ims.icarus.ui.actions.ActionManager.ActionAttributes attr, java.lang.String id)
public ActionSet getActionSet(java.lang.String id)
public void addActionSet(java.lang.String id, ActionSet actionSet)
public ActionList getActionList(java.lang.String id)
public void addActionList(java.lang.String id, ActionList actionList)
public javax.swing.ButtonGroup getGroup(java.lang.String groupId, java.awt.Component comp)
public void setEnabled(boolean enabled, java.lang.String... ids)
public boolean isEnabled(java.lang.String id)
public void setSelected(boolean selected, java.lang.String... ids)
public boolean isSelected(java.lang.String id)
public boolean isStateChangeAction(java.lang.String id)
public void addHandler(java.lang.String id, java.lang.Object handler, java.lang.String method)
handler
object to receive notifications
about events on the specified action. All invocations are
targeted at the method named method
with the matching
signature for the invocation at hand:
Calls made through ActionListener
interfaces will forward
the provided ActionEvent
.
Calls coming from ItemListener
s on the other hand provide
the received ItemEvent
.
It is up to the handler
object to distinguish between those
two cases by providing methods with different signatures or merge
the handling by providing only one method with a sole parameter of
type Object
.
Note that all internal handlers store weak references to the handler
objects registered as callbacks. When the target of such a reference
gets garbage collected the next invocation attempt will cause the
listener to be unregistered from the action. So it is strongly recommended
to store a strong reference to all handler objects!
id
- the unique identifier of the Action
the handler should
be attached tohandler
- the object defining the callback methodmethod
- method name used to find an appropriate Method
when
forwarding eventsjava.lang.IllegalArgumentException
- if any of the arguments is null
or
if the referenced Action
is not able to forward events (i.e. it is
not derived of type DelegateAction
)UnknownIdentifierException
- if the given id
is not mapped to
an Action
and this manager is not configured to be silentpublic void removeHandler(java.lang.String id, java.lang.Object handler, java.lang.String method)
protected void feedActionSet(java.awt.Component container, ActionManager.ComponentHandler handler, ActionSet actionSet, java.util.Map<java.lang.String,java.lang.Object> properties)
protected void feedActionList(java.awt.Component container, ActionManager.ComponentHandler handler, ActionList list, java.util.Map<java.lang.String,java.lang.Object> properties)
protected java.awt.Component createLabel(java.lang.String value)
protected ActionManager.ComponentHandler getHandler(java.lang.Class<?> containerClass)
public javax.swing.JMenu createMenu(java.lang.String id, java.util.Map<java.lang.String,java.lang.Object> properties)
public javax.swing.JMenu createMenu(ActionList actionList, java.util.Map<java.lang.String,java.lang.Object> properties)
public javax.swing.JMenuBar createMenuBar(java.lang.String id, java.util.Map<java.lang.String,java.lang.Object> properties)
public javax.swing.JMenuBar createMenuBar(ActionList actionList, java.util.Map<java.lang.String,java.lang.Object> properties)
public javax.swing.JToolBar createEmptyToolBar()
public javax.swing.JToolBar createEmptyToolBar(java.util.Map<java.lang.String,java.lang.Object> properties)
public javax.swing.JToolBar createToolBar(java.lang.String id, java.util.Map<java.lang.String,java.lang.Object> properties)
public javax.swing.JToolBar createToolBar(ActionList actionList, java.util.Map<java.lang.String,java.lang.Object> properties)
public void feedToolBar(java.lang.String id, javax.swing.JToolBar toolBar, java.util.Map<java.lang.String,java.lang.Object> properties)
public void feedToolBar(ActionList actionList, javax.swing.JToolBar toolBar, java.util.Map<java.lang.String,java.lang.Object> properties)
public javax.swing.JPopupMenu createPopupMenu(java.lang.String id, java.util.Map<java.lang.String,java.lang.Object> properties)
public javax.swing.JPopupMenu createPopupMenu(ActionList actionList, java.util.Map<java.lang.String,java.lang.Object> properties)
protected final javax.swing.JMenuItem createMenuItem(javax.swing.Action action, java.lang.String groupId, java.awt.Component container)
protected final javax.swing.AbstractButton createButton(javax.swing.Action action, java.lang.String groupId, java.awt.Component container)
JButton
or JToggleButton
depending
on the type of the given Action
(a StateChangeAction
will result in a JToggleButton
). If the supplied Action
is null
then this will silently fail by returning null
.protected void configureMenu(javax.swing.JMenu menu, javax.swing.Action action, java.util.Map<java.lang.String,java.lang.Object> properties)
protected void configurePopupMenu(javax.swing.JPopupMenu popupMenu, java.util.Map<java.lang.String,java.lang.Object> properties)
protected void configureToolBar(javax.swing.JToolBar toolBar, java.util.Map<java.lang.String,java.lang.Object> properties)
protected void configureMenuBar(javax.swing.JMenuBar menuBar, java.util.Map<java.lang.String,java.lang.Object> properties)
protected void configureToggleButton(javax.swing.JToggleButton button, javax.swing.Action action)
protected void configureButton(javax.swing.AbstractButton button, javax.swing.Action action)
protected void configureToggleMenuItem(javax.swing.JMenuItem menuItem, javax.swing.Action action)
protected void configureMenuItem(javax.swing.JMenuItem menuItem, javax.swing.Action action)
protected boolean isPreventRedundantLoading()
The default implementation returns true
.
public void loadActions(java.net.URL location) throws java.io.IOException
java.io.IOException