01: /*******************************************************************************
02: * Copyright (c) 2000, 2006 IBM Corporation and others.
03: * All rights reserved. This program and the accompanying materials
04: * are made available under the terms of the Eclipse Public License v1.0
05: * which accompanies this distribution, and is available at
06: * http://www.eclipse.org/legal/epl-v10.html
07: *
08: * Contributors:
09: * IBM Corporation - initial API and implementation
10: *******************************************************************************/package org.eclipse.jdt.internal.ui.actions;
11:
12: import org.eclipse.core.runtime.Assert;
13:
14: import org.eclipse.jface.action.IMenuManager;
15:
16: import org.eclipse.ui.IActionBars;
17: import org.eclipse.ui.actions.ActionContext;
18: import org.eclipse.ui.actions.ActionGroup;
19:
20: public class CompositeActionGroup extends ActionGroup {
21:
22: private ActionGroup[] fGroups;
23:
24: public CompositeActionGroup() {
25: }
26:
27: public CompositeActionGroup(ActionGroup[] groups) {
28: setGroups(groups);
29: }
30:
31: protected void setGroups(ActionGroup[] groups) {
32: Assert.isTrue(fGroups == null);
33: Assert.isNotNull(groups);
34: fGroups = groups;
35: }
36:
37: public ActionGroup get(int index) {
38: if (fGroups == null)
39: return null;
40: return fGroups[index];
41: }
42:
43: public void addGroup(ActionGroup group) {
44: if (fGroups == null) {
45: fGroups = new ActionGroup[] { group };
46: } else {
47: ActionGroup[] newGroups = new ActionGroup[fGroups.length + 1];
48: System.arraycopy(fGroups, 0, newGroups, 0, fGroups.length);
49: newGroups[fGroups.length] = group;
50: fGroups = newGroups;
51: }
52: }
53:
54: public void dispose() {
55: super .dispose();
56: if (fGroups == null)
57: return;
58: for (int i = 0; i < fGroups.length; i++) {
59: fGroups[i].dispose();
60: }
61: }
62:
63: public void fillActionBars(IActionBars actionBars) {
64: super .fillActionBars(actionBars);
65: if (fGroups == null)
66: return;
67: for (int i = 0; i < fGroups.length; i++) {
68: fGroups[i].fillActionBars(actionBars);
69: }
70: }
71:
72: public void fillContextMenu(IMenuManager menu) {
73: super .fillContextMenu(menu);
74: if (fGroups == null)
75: return;
76: for (int i = 0; i < fGroups.length; i++) {
77: fGroups[i].fillContextMenu(menu);
78: }
79: }
80:
81: public void setContext(ActionContext context) {
82: super .setContext(context);
83: if (fGroups == null)
84: return;
85: for (int i = 0; i < fGroups.length; i++) {
86: fGroups[i].setContext(context);
87: }
88: }
89:
90: public void updateActionBars() {
91: super .updateActionBars();
92: if (fGroups == null)
93: return;
94: for (int i = 0; i < fGroups.length; i++) {
95: fGroups[i].updateActionBars();
96: }
97: }
98: }
|