01: /*
02: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
03: *
04: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
05: *
06: * The contents of this file are subject to the terms of either the GNU
07: * General Public License Version 2 only ("GPL") or the Common
08: * Development and Distribution License("CDDL") (collectively, the
09: * "License"). You may not use this file except in compliance with the
10: * License. You can obtain a copy of the License at
11: * http://www.netbeans.org/cddl-gplv2.html
12: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
13: * specific language governing permissions and limitations under the
14: * License. When distributing the software, include this License Header
15: * Notice in each file and include the License file at
16: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
17: * particular file as subject to the "Classpath" exception as provided
18: * by Sun in the GPL Version 2 section of the License file that
19: * accompanied this code. If applicable, add the following below the
20: * License Header, with the fields enclosed by brackets [] replaced by
21: * your own identifying information:
22: * "Portions Copyrighted [year] [name of copyright owner]"
23: *
24: * Contributor(s):
25: *
26: * Portions Copyrighted 2007 Sun Microsystems, Inc.
27: */
28: package org.netbeans.modules.visualweb.designer.jsf.palette;
29:
30: import javax.swing.Action;
31: import org.netbeans.spi.palette.PaletteActions;
32: import org.openide.util.Lookup;
33:
34: public class MergedPaletteActions extends PaletteActions {
35:
36: private PaletteActions palActions1;
37:
38: private PaletteActions palActions2;
39:
40: public MergedPaletteActions(PaletteActions palActions1,
41: PaletteActions palActions2) {
42: this .palActions1 = palActions1;
43: this .palActions2 = palActions2;
44: }
45:
46: @Override
47: public Action[] getCustomCategoryActions(Lookup category) {
48: Action[] actions1 = palActions1
49: .getCustomCategoryActions(category);
50: Action[] actions2 = palActions2
51: .getCustomCategoryActions(category);
52: return mergeActions(actions1, actions2);
53: }
54:
55: @Override
56: public Action[] getCustomItemActions(Lookup item) {
57: Action[] actions1 = palActions1.getCustomItemActions(item);
58: Action[] actions2 = palActions2.getCustomItemActions(item);
59: return mergeActions(actions1, actions2);
60: }
61:
62: @Override
63: public Action[] getCustomPaletteActions() {
64: Action[] actions1 = palActions1.getCustomPaletteActions();
65: Action[] actions2 = palActions2.getCustomPaletteActions();
66: return mergeActions(actions1, actions2);
67: }
68:
69: @Override
70: public Action[] getImportActions() {
71: Action[] actions1 = palActions1.getImportActions();
72: Action[] actions2 = palActions2.getImportActions();
73: return mergeActions(actions1, actions2);
74: }
75:
76: @Override
77: public Action getPreferredAction(Lookup item) {
78: // Choose the preferred action from the first PaletteActions
79: return palActions1.getPreferredAction(item);
80: }
81:
82: private static Action[] mergeActions(Action[] actions1,
83: Action[] actions2) {
84: if (actions2 == null) {
85: return actions1;
86: }
87: if (actions1 == null) {
88: return actions2;
89: }
90:
91: Action[] allActions = new Action[actions1.length
92: + actions2.length];
93: System.arraycopy(actions1, 0, allActions, 0, actions1.length);
94: System.arraycopy(actions2, 0, allActions, actions1.length,
95: actions2.length);
96: return allActions;
97: }
98: }
|