01: /*
02: * The contents of this file are subject to the terms of the Common Development
03: * and Distribution License (the License). You may not use this file except in
04: * compliance with the License.
05: *
06: * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
07: * or http://www.netbeans.org/cddl.txt.
08: *
09: * When distributing Covered Code, include this CDDL Header Notice in each file
10: * and include the License file at http://www.netbeans.org/cddl.txt.
11: * If applicable, add the following below the CDDL Header, with the fields
12: * enclosed by brackets [] replaced by your own identifying information:
13: * "Portions Copyrighted [year] [name of copyright owner]"
14: *
15: * The Original Software is NetBeans. The Initial Developer of the Original
16: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
17: * Microsystems, Inc. All Rights Reserved.
18: */
19: package org.netbeans.modules.bpel.nodes.refactoring;
20:
21: import javax.swing.Action;
22: import org.netbeans.modules.bpel.nodes.actions.GoToSourceAction;
23: import org.openide.nodes.Node;
24: import org.openide.util.HelpCtx;
25: import org.openide.util.NbBundle;
26: import org.openide.util.actions.NodeAction;
27:
28: /**
29: *
30: * @author Vitaly Bychkov
31: * @version 1.0
32: *
33: */
34: public class GoToSourceFilterAction extends NodeAction {
35:
36: public GoToSourceFilterAction() {
37: }
38:
39: protected void performAction(Node[] activatedNodes) {
40: if (!enable(activatedNodes)) {
41: return;
42: }
43:
44: //search for GoToSource action and invoke it
45: UsageFilterNode usageNode = (UsageFilterNode) activatedNodes[0];
46: Action[] actions = usageNode.getActions(true);
47: for (Action elem : actions) {
48: if (elem instanceof GoToSourceAction) {
49: invokeAction((GoToSourceAction) elem, usageNode);
50: }
51: }
52: }
53:
54: protected boolean enable(Node[] activatedNodes) {
55: if (activatedNodes == null || activatedNodes.length < 1) {
56: return false;
57: }
58:
59: return activatedNodes[0] instanceof UsageFilterNode;
60: }
61:
62: public String getName() {
63: return NbBundle.getMessage(GoToSourceAction.class,
64: "ACT_GoToSourceAction");// NOI18N
65: }
66:
67: public HelpCtx getHelpCtx() {
68: return HelpCtx.DEFAULT_HELP;
69: }
70:
71: private void invokeAction(GoToSourceAction action,
72: UsageFilterNode usageNode) {
73: Node[] nodes = new Node[] { usageNode.getOriginal() };
74: if (action.enable(nodes)) {
75: action.performAction(nodes);
76: }
77: }
78: }
|