| // |
| // Licensed to the Apache Software Foundation (ASF) under one |
| // or more contributor license agreements. See the NOTICE file |
| // distributed with this work for additional information |
| // regarding copyright ownership. The ASF licenses this file |
| // to you under the Apache License, Version 2.0 (the |
| // "License"); you may not use this file except in compliance |
| // with the License. You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, |
| // software distributed under the License is distributed on an |
| // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| // KIND, either express or implied. See the License for the |
| // specific language governing permissions and limitations |
| // under the License. |
| // |
| |
| = DevFaqAddActionToMembersOrHierarchyView |
| :jbake-type: wiki |
| :jbake-tags: wiki, devfaq, needsreview |
| :jbake-status: published |
| :keywords: Apache NetBeans wiki DevFaqAddActionToMembersOrHierarchyView |
| :description: Apache NetBeans wiki DevFaqAddActionToMembersOrHierarchyView |
| :toc: left |
| :toc-title: |
| :syntax: true |
| |
| === How do I add an action to the context menu of the members or hierarchy view? |
| |
| Since 7.3 ([1], [2]) it is possible to extend the context menu of the newly redesigned members and hierarchy view. |
| |
| Plugin your action at the following extension points |
| |
| [source,java] |
| ---- |
| |
| Navigator/Actions/Members/text/x-java |
| Navigator/Actions/Hierarchy/text/x-java |
| ---- |
| |
| Then you get the "TreePathHandle" from the Node's lookup. |
| |
| ==== A more or less complete example: |
| |
| [source,java] |
| ---- |
| |
| package de.markiewb.netbeans.sample.extendMembersAndHierarchyView; |
| |
| import java.util.ArrayList; |
| import java.util.List; |
| import static javax.swing.Action.NAME; |
| import javax.swing.JMenuItem; |
| import javax.swing.JOptionPane; |
| import org.netbeans.api.java.source.TreePathHandle; |
| import org.openide.awt.*; |
| import org.openide.nodes.Node; |
| import org.openide.util.HelpCtx; |
| import org.openide.util.NbBundle; |
| import org.openide.util.actions.CookieAction; |
| import org.openide.util.actions.Presenter; |
| |
| @ActionID(category = "Edit", |
| id = "de.markiewb.netbeans.sample.extendMembersAndHierarchyView.SampleAction") |
| @ActionRegistration( |
| displayName = "SampleAction") |
| @ActionReferences({ |
| @ActionReference(path = "Navigator/Actions/Members/text/x-java", position = 1150), |
| @ActionReference(path = "Navigator/Actions/Hierarchy/text/x-java", position = 1150), |
| @ActionReference(path = "Menu/File", position = 0) |
| }) |
| /** |
| * Shows the usage of the extensionpoints of the context menu in the members and |
| * hierarchy views. This is new to NetBeans 7.3. See |
| * http://netbeans.org/bugzilla/show_bug.cgi?id=220057 and |
| * http://netbeans.org/bugzilla/show_bug.cgi?id=224499. |
| * |
| * @author markiewb@netbeans.org |
| */ |
| public final class SampleAction extends CookieAction implements Presenter.Popup { |
| public SampleAction() { |
| putValue(NAME, "Hello TreePathHandle(s)"); |
| } |
| |
| @Override |
| public String getName() { |
| return "Hello TreePathHandle(s)"; |
| } |
| |
| @Override |
| public JMenuItem getPopupPresenter() { |
| return new JMenuItem(this); |
| } |
| |
| @Override |
| public HelpCtx getHelpCtx() { |
| return null; |
| } |
| |
| @Override |
| protected boolean enable(Node[] activatedNodes) { |
| //.. use tph from lookup in node |
| for (Node node : activatedNodes) { |
| if (null != node.getLookup().lookup(TreePathHandle.class)) { |
| return true; |
| }; |
| } |
| return false; |
| } |
| |
| @Override |
| protected int mode() { |
| return CookieAction.MODE_ALL; |
| } |
| |
| @Override |
| protected Class[] cookieClasses() { |
| return new Class[]{Node.class}; |
| } |
| |
| @Override |
| protected void performAction(Node[] nodes) { |
| |
| List<TreePathHandle> treePathHandles = new ArrayList<TreePathHandle>(); |
| for (Node node : nodes) { |
| treePathHandles.add(node.getLookup().lookup(TreePathHandle.class)); |
| } |
| |
| //show all treePathHandles |
| JOptionPane.showMessageDialog(null, "Hello\n" + treePathHandles); |
| } |
| } |
| ---- |
| |
| See |
| |
| [1] link:http://netbeans.org/bugzilla/show_bug.cgi?id=220057[http://netbeans.org/bugzilla/show_bug.cgi?id=220057] |
| |
| [2] link:http://netbeans.org/bugzilla/show_bug.cgi?id=224499[http://netbeans.org/bugzilla/show_bug.cgi?id=224499] |
| |
| [3] link:https://github.com/markiewb/nb-api-samples/tree/master/ExtendMembersAndHierarchyView[https://github.com/markiewb/nb-api-samples/tree/master/ExtendMembersAndHierarchyView] |
| |
| [4] link:http://benkiew.wordpress.com/2013/01/06/netbeans-ide-7-3-how-to-extend-the-context-menu-of-the-members-and-hierarchy-view/[http://benkiew.wordpress.com/2013/01/06/netbeans-ide-7-3-how-to-extend-the-context-menu-of-the-members-and-hierarchy-view/] |
| |
| === Apache Migration Information |
| |
| The content in this page was kindly donated by Oracle Corp. to the |
| Apache Software Foundation. |
| |
| This page was exported from link:http://wiki.netbeans.org/DevFaqAddActionToMembersOrHierarchyView[http://wiki.netbeans.org/DevFaqAddActionToMembersOrHierarchyView] , |
| that was last modified by NetBeans user Markiewb |
| on 2013-01-06T22:53:28Z. |
| |
| |
| *NOTE:* This document was automatically converted to the AsciiDoc format on 2018-02-07, and needs to be reviewed. |