01: /*
02: * ContainerProvider.java
03: *
04: * Created on January 24, 2004, 2:32 PM
05: */
06:
07: package org.netbeans.actions.spi;
08:
09: import java.util.Map;
10:
11: /** Provides the names of available action containers in the system, such
12: * as toolbars and menus. Uses a predefined context name for the context
13: * menu context, of which there is only ever one.
14: *
15: * @author Tim Boudreau
16: */
17: public abstract class ContainerProvider {
18: public static final String CONTEXTMENU_CONTEXT = "contextMenu"; //NOI18N
19: public static final Object TYPE_TOOLBAR = new Integer(1);
20: public static final Object TYPE_MENU = new Integer(2);
21:
22: protected ContainerProvider() {
23: }
24:
25: /** Return the names of all the menu container contexts in the system. */
26: public abstract String[] getMenuContainerContexts();
27:
28: /** Return the names of all the menu container contexts in the system. */
29: public abstract String[] getToolbarContainerContexts();
30:
31: /** returns the predefined name for the context menu container context */
32: public final String getContextMenuContainerContext() {
33: return CONTEXTMENU_CONTEXT;
34: }
35:
36: /** Determine if the contents of the context can change over the life of
37: * the application. Return true <strong>only</strong> if items which are
38: * truly unknown at startup will be added. If there's a known set of items,
39: * but some appear and disappear, simply return that the hidden items are
40: * invisible from your ActionProvider's getState method */
41: public boolean isDynamicContext(Object containerType,
42: String containerCtx) {
43: //XXX Support for dynamic contexts pending
44: return false;
45: }
46:
47: /** Get the enablement/visibility of the named container context.
48: * @param containerType The type of container - either TYPE_MENU or TYPE_TOOLBAR,
49: * or some other object that the implementation and caller agree is a valid
50: * context type.
51: * @param containerCtx The programmatic, unique name of the container.
52: * @param context The user context (selected object, active window, etc.,
53: * as agreed upon between the implementation and application).
54: */
55: public abstract int getContainerState(Object containerType,
56: String containerCtx, Map context);
57:
58: public abstract String getDisplayName(Object containerType,
59: String containerCtx);
60: }
|