blob: a6715493dcd645c928889304acb4c63617a09edf [file] [log] [blame]
//
// 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.