Open the element on popup click/select.
1.1 --- a/java.breadcrumbs/nbproject/project.xml Fri Aug 10 15:16:28 2012 +0200
1.2 +++ b/java.breadcrumbs/nbproject/project.xml Fri Aug 10 15:45:13 2012 +0200
1.3 @@ -83,6 +83,14 @@
1.4 </run-dependency>
1.5 </dependency>
1.6 <dependency>
1.7 + <code-name-base>org.openide.actions</code-name-base>
1.8 + <build-prerequisite/>
1.9 + <compile-dependency/>
1.10 + <run-dependency>
1.11 + <specification-version>6.27</specification-version>
1.12 + </run-dependency>
1.13 + </dependency>
1.14 + <dependency>
1.15 <code-name-base>org.openide.awt</code-name-base>
1.16 <build-prerequisite/>
1.17 <compile-dependency/>
2.1 --- a/java.breadcrumbs/src/org/netbeans/modules/java/breadcrumbs/BreadCrumbComponent.java Fri Aug 10 15:16:28 2012 +0200
2.2 +++ b/java.breadcrumbs/src/org/netbeans/modules/java/breadcrumbs/BreadCrumbComponent.java Fri Aug 10 15:45:13 2012 +0200
2.3 @@ -53,6 +53,7 @@
2.4 import java.awt.RenderingHints;
2.5 import java.awt.Toolkit;
2.6 import java.awt.event.AWTEventListener;
2.7 +import java.awt.event.ActionEvent;
2.8 import java.awt.event.MouseAdapter;
2.9 import java.awt.event.MouseEvent;
2.10 import java.beans.PropertyChangeEvent;
2.11 @@ -60,6 +61,7 @@
2.12 import java.util.ArrayList;
2.13 import java.util.Collections;
2.14 import java.util.List;
2.15 +import javax.swing.Action;
2.16 import javax.swing.JComponent;
2.17 import javax.swing.JList;
2.18 import javax.swing.JPanel;
2.19 @@ -340,6 +342,23 @@
2.20 }
2.21 }, AWTEvent.MOUSE_EVENT_MASK);
2.22
2.23 + expandManager.addPropertyChangeListener(new PropertyChangeListener() {
2.24 + @Override public void propertyChange(PropertyChangeEvent evt) {
2.25 + if (ExplorerManager.PROP_SELECTED_NODES.equals(evt.getPropertyName())) {
2.26 + Node[] selected = expandManager.getSelectedNodes();
2.27 + if (selected.length == 1) {
2.28 + Action action = selected[0].getPreferredAction();
2.29 +
2.30 + if (action != null) {
2.31 + action.actionPerformed(new ActionEvent(selected[0], 0, ""));
2.32 + }
2.33 +
2.34 + popup.hide();
2.35 + }
2.36 + }
2.37 + }
2.38 + });
2.39 +
2.40 popup.show();
2.41 }
2.42 }
3.1 --- a/java.breadcrumbs/src/org/netbeans/modules/java/breadcrumbs/NodeImpl.java Fri Aug 10 15:16:28 2012 +0200
3.2 +++ b/java.breadcrumbs/src/org/netbeans/modules/java/breadcrumbs/NodeImpl.java Fri Aug 10 15:45:13 2012 +0200
3.3 @@ -67,13 +67,17 @@
3.4 import javax.lang.model.element.Element;
3.5 import javax.swing.Action;
3.6 import javax.swing.Icon;
3.7 +import org.netbeans.api.actions.Openable;
3.8 import org.netbeans.api.java.source.CompilationController;
3.9 import org.netbeans.api.java.source.CompilationInfo;
3.10 import org.netbeans.api.java.source.JavaSource;
3.11 import org.netbeans.api.java.source.JavaSource.Phase;
3.12 import org.netbeans.api.java.source.Task;
3.13 import org.netbeans.api.java.source.TreePathHandle;
3.14 +import org.netbeans.api.java.source.UiUtils;
3.15 import org.netbeans.api.java.source.ui.ElementIcons;
3.16 +import org.openide.actions.OpenAction;
3.17 +import org.openide.cookies.OpenCookie;
3.18 import org.openide.filesystems.FileObject;
3.19 import org.openide.filesystems.FileUtil;
3.20 import org.openide.nodes.AbstractNode;
3.21 @@ -98,7 +102,7 @@
3.22 // private OpenAction openAction;
3.23
3.24 public NodeImpl(TreePathHandle tph, Image icon, String htmlDisplayName, FileObject fileObject, int pos) {
3.25 - super(Children.create(new ChildrenFactoryImpl(tph), false), Lookups.fixed(tph, Integer.valueOf(pos)));
3.26 + super(Children.create(new ChildrenFactoryImpl(tph), false), Lookups.fixed(tph, Integer.valueOf(pos), new OpenableImpl(fileObject, pos)));
3.27 this.icon = icon;
3.28 this.htmlDisplayName = htmlDisplayName;
3.29 // this.openAction = new OpenAction(fileObject, pos);
3.30 @@ -111,7 +115,7 @@
3.31
3.32 @Override
3.33 public Action getPreferredAction() {
3.34 - return null;//openAction;
3.35 + return OpenAction.get(OpenAction.class);
3.36 }
3.37
3.38 @Override
3.39 @@ -338,4 +342,21 @@
3.40 }
3.41
3.42 }
3.43 +
3.44 + private static final class OpenableImpl implements Openable, OpenCookie {
3.45 +
3.46 + private final FileObject file;
3.47 + private final int pos;
3.48 +
3.49 + public OpenableImpl(FileObject file, int pos) {
3.50 + this.file = file;
3.51 + this.pos = pos;
3.52 + }
3.53 +
3.54 + @Override
3.55 + public void open() {
3.56 + UiUtils.open(file, pos);
3.57 + }
3.58 +
3.59 + }
3.60 }