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.form.menu;
29:
30: import javax.swing.JMenu;
31: import javax.swing.SwingUtilities;
32: import org.netbeans.modules.form.RADComponent;
33: import org.netbeans.modules.form.RADComponentCookie;
34: import org.netbeans.modules.form.palette.PaletteItem;
35: import org.netbeans.modules.form.palette.PaletteUtils;
36: import org.openide.nodes.Node;
37: import org.openide.util.HelpCtx;
38: import org.openide.util.actions.NodeAction;
39:
40: /**
41: * An action which adds a JMenu to a JMenuBar
42: * @author Joshua Marinacci
43: */
44: public class InsertMenuAction extends NodeAction {
45:
46: private static String name;
47:
48: public String getName() {
49: if (name == null)
50: name = org.openide.util.NbBundle.getBundle(
51: InsertMenuAction.class).getString("ACT_InsertMenu"); // NOI18N/
52: return name;
53: }
54:
55: protected void performAction(Node[] activatedNodes) {
56: if (activatedNodes != null && activatedNodes.length == 1) {
57: RADComponentCookie radCookie = activatedNodes[0]
58: .getCookie(RADComponentCookie.class);
59: final RADComponent metacomp = radCookie == null ? null
60: : radCookie.getRADComponent();
61:
62: //find the first JMenuBar item in the palette
63: PaletteItem[] items = PaletteUtils.getAllItems();
64: for (PaletteItem item : items) {
65: Class clazz = item.getComponentClass();
66: if (clazz != null
67: && JMenu.class.isAssignableFrom(clazz)) {
68: final PaletteItem it = item;
69: SwingUtilities.invokeLater(new Runnable() {
70: public void run() {
71: MenuEditLayer.addComponentToEndOfMenu(
72: metacomp, it);
73: }
74: });
75: return;
76: }
77: }
78: }
79: }
80:
81: protected boolean enable(Node[] activatedNodes) {
82: return true;
83: }
84:
85: public HelpCtx getHelpCtx() {
86: return new HelpCtx("gui.containers.designing"); // NOI18N
87: }
88: }
|