diff -r 766e8327016d debugger.jpda.projects/src/org/netbeans/modules/debugger/jpda/projects/EditorContextImpl.java
--- a/debugger.jpda.projects/src/org/netbeans/modules/debugger/jpda/projects/EditorContextImpl.java Fri Jun 06 19:28:24 2008 +0200
+++ b/debugger.jpda.projects/src/org/netbeans/modules/debugger/jpda/projects/EditorContextImpl.java Wed Jun 11 17:03:09 2008 +0200
@@ -41,14 +41,6 @@
package org.netbeans.modules.debugger.jpda.projects;
-import com.sun.source.tree.AssignmentTree;
-import com.sun.source.tree.BlockTree;
-import com.sun.source.tree.ExpressionStatementTree;
-import com.sun.source.tree.ExpressionTree;
-import com.sun.source.tree.Scope;
-import com.sun.source.tree.VariableTree;
-import com.sun.source.util.TreeScanner;
-
import java.awt.Color;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
@@ -60,15 +52,12 @@ import java.util.ArrayList;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.Future;
import javax.swing.SwingUtilities;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
import javax.swing.text.BadLocationException;
import javax.swing.text.Caret;
import javax.swing.text.StyledDocument;
@@ -79,14 +68,13 @@ import com.sun.source.tree.Tree;
import com.sun.source.tree.Tree;
import com.sun.source.tree.ImportTree;
import com.sun.source.tree.MemberSelectTree;
-import com.sun.source.tree.StatementTree;
-import com.sun.source.tree.TreeVisitor;
+import com.sun.source.tree.Scope;
+import com.sun.source.tree.VariableTree;
import com.sun.source.util.SourcePositions;
import com.sun.source.util.TreePath;
import com.sun.source.util.TreePathScanner;
import com.sun.source.util.Trees;
-import javax.lang.model.util.Elements;
import javax.lang.model.element.Element;
import javax.lang.model.element.ElementKind;
import javax.lang.model.element.ExecutableElement;
@@ -95,6 +83,8 @@ import javax.lang.model.type.DeclaredTyp
import javax.lang.model.type.DeclaredType;
import javax.lang.model.type.TypeKind;
import javax.lang.model.type.TypeMirror;
+import javax.lang.model.util.Elements;
+
import org.netbeans.api.debugger.jpda.JPDABreakpoint;
import org.netbeans.api.debugger.jpda.JPDAThread;
import org.netbeans.api.debugger.jpda.LineBreakpoint;
@@ -104,43 +94,31 @@ import org.netbeans.api.java.source.Clas
import org.netbeans.api.java.source.ClasspathInfo;
import org.netbeans.api.java.source.CompilationController;
import org.netbeans.api.java.source.ElementUtilities;
-import org.netbeans.api.java.source.SourceUtils;
-import org.netbeans.editor.Coloring;
-import org.netbeans.modules.editor.highlights.spi.Highlight;
-
-import org.openide.ErrorManager;
-import org.openide.cookies.EditorCookie;
-import org.openide.cookies.LineCookie;
-import org.openide.filesystems.FileObject;
-import org.openide.filesystems.FileStateInvalidException;
-import org.openide.filesystems.URLMapper;
-import org.openide.loaders.DataObject;
-import org.openide.loaders.DataShadow;
-import org.openide.loaders.DataObjectNotFoundException;
-import org.openide.nodes.Node;
-import org.openide.text.Line;
-import org.openide.text.NbDocument;
-import org.openide.util.Lookup;
-import org.openide.util.LookupEvent;
-import org.openide.util.LookupListener;
-import org.openide.util.Utilities;
-import org.openide.windows.TopComponent;
-
import org.netbeans.api.java.source.JavaSource;
import org.netbeans.api.java.source.JavaSource.Phase;
import org.netbeans.api.java.source.Task;
-import org.netbeans.api.java.source.TreeMaker;
-import org.netbeans.api.java.source.TreeUtilities;
-import org.netbeans.api.java.source.WorkingCopy;
-
+import org.netbeans.spi.java.classpath.support.ClassPathSupport;
+import org.netbeans.editor.Coloring;
import org.netbeans.editor.JumpList;
+import org.netbeans.modules.editor.highlights.spi.Highlight;
+
+import org.openide.ErrorManager;
+import org.openide.cookies.EditorCookie;
+import org.openide.filesystems.FileObject;
+import org.openide.filesystems.FileStateInvalidException;
+import org.openide.filesystems.FileUtil;
+import org.openide.filesystems.URLMapper;
+import org.openide.loaders.DataObject;
+import org.openide.loaders.DataObjectNotFoundException;
+import org.openide.text.Annotation;
+import org.openide.text.Line;
+import org.openide.text.NbDocument;
+import org.openide.util.Utilities;
+import org.openide.util.WeakListeners;
+
import org.netbeans.spi.debugger.jpda.EditorContext;
import org.netbeans.spi.debugger.jpda.SourcePathProvider;
-import org.netbeans.spi.java.classpath.support.ClassPathSupport;
-import org.openide.filesystems.FileUtil;
-import org.openide.text.Annotation;
-import org.openide.util.RequestProcessor;
-import org.openide.util.WeakListeners;
+import org.netbeans.spi.debugger.ui.EditorContextDispatcher;
/**
*
@@ -153,37 +131,16 @@ public class EditorContextImpl extends E
private PropertyChangeSupport pcs;
private Map annotationToURL = new HashMap ();
- private PropertyChangeListener editorObservableListener;
- private PropertyChangeListener tcListener;
-
- private RequestProcessor refreshProcessor;
- private Lookup.Result resDataObject;
- private Lookup.Result resEditorCookie;
- private Lookup.Result resNode;
-
- private Object currentLock = new Object();
- private String currentURL = null;
- //private Element currentElement = null;
- private EditorCookie currentEditorCookie = null;
+ private PropertyChangeListener dispatchListener;
+ private EditorContextDispatcher contextDispatcher;
{
pcs = new PropertyChangeSupport (this);
-
- refreshProcessor = new RequestProcessor("Refresh Editor Context", 1);
-
- resDataObject = Utilities.actionsGlobalContext().lookup(new Lookup.Template(DataObject.class));
- resDataObject.addLookupListener(new EditorLookupListener(DataObject.class));
-
- resEditorCookie = Utilities.actionsGlobalContext().lookup(new Lookup.Template(EditorCookie.class));
- resEditorCookie.addLookupListener(new EditorLookupListener(EditorCookie.class));
-
- resNode = Utilities.actionsGlobalContext().lookup(new Lookup.Template(Node.class));
- resNode.addLookupListener(new EditorLookupListener(Node.class));
-
- tcListener = new EditorLookupListener(TopComponent.class);
- TopComponent.getRegistry ().addPropertyChangeListener (WeakListeners.propertyChange(
- tcListener, TopComponent.getRegistry()));
+ dispatchListener = new EditorContextDispatchListener();
+ contextDispatcher = EditorContextDispatcher.getDefault();
+ contextDispatcher.addPropertyChangeListener("text/x-java",
+ WeakListeners.propertyChange(dispatchListener, contextDispatcher));
}
@@ -432,71 +389,18 @@ public class EditorContextImpl extends E
* @return number of line currently selected in editor or -1
*/
public int getCurrentLineNumber () {
- if (SwingUtilities.isEventDispatchThread()) {
- return getCurrentLineNumber_();
- } else {
- final int[] ln = new int[1];
- try {
- SwingUtilities.invokeAndWait(new Runnable() {
- public void run() {
- ln[0] = getCurrentLineNumber_();
- }
- });
- } catch (InvocationTargetException ex) {
- ErrorManager.getDefault().notify(ex.getTargetException());
- } catch (InterruptedException ex) {
- // interrupted, ignored.
- }
- return ln[0];
- }
- }
-
- private int getCurrentLineNumber_() {
- EditorCookie e = getCurrentEditorCookie ();
- if (e == null) return -1;
- JEditorPane ep = getCurrentEditor ();
+ return contextDispatcher.getCurrentLineNumber();
+ }
+
+ /**
+ * Returns number of line currently selected in editor or -1
.
+ *
+ * @return number of line currently selected in editor or -1
+ */
+ public int getCurrentOffset () {
+ JEditorPane ep = contextDispatcher.getCurrentEditor();
if (ep == null) return -1;
- StyledDocument d = e.getDocument ();
- if (d == null) return -1;
- Caret caret = ep.getCaret ();
- if (caret == null) return -1;
- int ln = NbDocument.findLineNumber (
- d,
- caret.getDot ()
- );
- return ln + 1;
- }
-
- /**
- * Returns number of line currently selected in editor or -1
.
- *
- * @return number of line currently selected in editor or -1
- */
- public int getCurrentOffset () {
- if (SwingUtilities.isEventDispatchThread()) {
- return getCurrentOffset_();
- } else {
- final int[] ln = new int[1];
- try {
- SwingUtilities.invokeAndWait(new Runnable() {
- public void run() {
- ln[0] = getCurrentOffset_();
- }
- });
- } catch (InvocationTargetException ex) {
- ErrorManager.getDefault().notify(ex.getTargetException());
- } catch (InterruptedException ex) {
- // interrupted, ignored.
- }
- return ln[0];
- }
- }
-
- private int getCurrentOffset_() {
- EditorCookie e = getCurrentEditorCookie ();
- if (e == null) return -1;
- JEditorPane ep = getCurrentEditor ();
- if (ep == null) return -1;
+ EditorCookie e = contextDispatcher.getCurrentEditorCookie();
StyledDocument d = e.getDocument ();
if (d == null) return -1;
Caret caret = ep.getCaret ();
@@ -521,34 +425,9 @@ public class EditorContextImpl extends E
* @return URL of source currently selected in editor or empty string
*/
public String getCurrentURL () {
- synchronized (currentLock) {
- if (currentURL != null) {
- return currentURL;
- }
- }
- DataObject[] nodes = (DataObject[])resDataObject.allInstances().toArray(new DataObject[0]);
- // Lookup, as a side-effect, can call lookup listeners and do whatever it wants. Do not call under a lock.
- synchronized (currentLock) {
- if (currentURL == null) {
- currentURL = "";
- if (nodes.length != 1)
- return currentURL;
-
- DataObject dO = nodes[0];
- if (dO instanceof DataShadow)
- dO = ((DataShadow) dO).getOriginal ();
-
- try {
- currentURL = dO.getPrimaryFile ().getURL ().toString ();
- } catch (FileStateInvalidException ex) {
- //noop
- }
- }
-
- return currentURL;
- }
- }
-
+ return contextDispatcher.getCurrentURLAsString();
+ }
+
/**
* Returns name of method currently selected in editor or empty string.
*
@@ -603,27 +482,7 @@ public class EditorContextImpl extends E
* @return identifier currently selected in editor or null
*/
public String getSelectedIdentifier () {
- if (SwingUtilities.isEventDispatchThread()) {
- return getSelectedIdentifier_();
- } else {
- final String[] si = new String[1];
- try {
- SwingUtilities.invokeAndWait(new Runnable() {
- public void run() {
- si[0] = getSelectedIdentifier_();
- }
- });
- } catch (InvocationTargetException ex) {
- ErrorManager.getDefault().notify(ex.getTargetException());
- } catch (InterruptedException ex) {
- // interrupted, ignored.
- }
- return si[0];
- }
- }
-
- private String getSelectedIdentifier_() {
- JEditorPane ep = getCurrentEditor ();
+ JEditorPane ep = contextDispatcher.getCurrentEditor ();
if (ep == null) return null;
String s = ep.getSelectedText ();
if (s == null) return null;
@@ -657,9 +516,9 @@ public class EditorContextImpl extends E
}
private String getSelectedMethodName_() {
- EditorCookie e = getCurrentEditorCookie ();
+ EditorCookie e = contextDispatcher.getCurrentEditorCookie ();
if (e == null) return "";
- JEditorPane ep = getCurrentEditor ();
+ JEditorPane ep = contextDispatcher.getCurrentEditor ();
if (ep == null) return "";
StyledDocument doc = e.getDocument ();
if (doc == null) return "";
@@ -945,17 +804,11 @@ public class EditorContextImpl extends E
/** @return { "method name", "method signature", "enclosing class name" }
*/
public String[] getCurrentMethodDeclaration() {
- Node[] nodes = TopComponent.getRegistry ().getCurrentNodes ();
- if (nodes == null) return null;
- if (nodes.length != 1) return null;
- DataObject dataObject = nodes[0].getCookie(DataObject.class);
- if (dataObject == null) return null;
- JavaSource js = JavaSource.forFileObject(dataObject.getPrimaryFile());
+ FileObject fo = contextDispatcher.getCurrentFile();
+ if (fo == null) return null;
+ JEditorPane ep = contextDispatcher.getCurrentEditor();
+ JavaSource js = JavaSource.forFileObject(fo);
if (js == null) return null;
- // TODO: Can be called outside of AWT? Probably need invokeAndWait()
- EditorCookie ec = nodes[0].getCookie(EditorCookie.class);
- JEditorPane[] op = ec.getOpenedPanes ();
- JEditorPane ep = (op != null && op.length >= 1) ? op[0] : null;
final int currentOffset = (ep == null) ? 0 : ep.getCaretPosition();
//final int currentOffset = org.netbeans.editor.Registry.getMostActiveComponent().getCaretPosition();
final String[] currentMethodPtr = new String[] { null, null, null };
@@ -1689,19 +1542,13 @@ public class EditorContextImpl extends E
/** throws IllegalComponentStateException when can not return the data in AWT. */
private String getCurrentElement(final ElementKind kind, final Element[] elementPtr)
throws java.awt.IllegalComponentStateException {
- Node[] nodes = TopComponent.getRegistry ().getCurrentNodes ();
- if (nodes == null) return null;
- if (nodes.length != 1) return null;
- DataObject dataObject = nodes[0].getCookie(DataObject.class);
- if (dataObject == null) return null;
- JavaSource js = JavaSource.forFileObject(dataObject.getPrimaryFile());
+ FileObject fo = contextDispatcher.getCurrentFile();
+ if (fo == null) return null;
+ JEditorPane ep = contextDispatcher.getCurrentEditor();
+
+ JavaSource js = JavaSource.forFileObject(fo);
if (js == null) return null;
- // TODO: Can be called outside of AWT? Probably need invokeAndWait()
- EditorCookie ec = nodes[0].getCookie(EditorCookie.class);
final int currentOffset;
-
- JEditorPane[] op = ec.getOpenedPanes ();
- JEditorPane ep = (op != null && op.length >= 1) ? op[0] : null;
final String selectedIdentifier;
if (ep != null) {
String s = ep.getSelectedText ();
@@ -1877,37 +1724,6 @@ public class EditorContextImpl extends E
return currentElementPtr[0];
}
- private JEditorPane getCurrentEditor () {
- EditorCookie e = getCurrentEditorCookie ();
- if (e == null) return null;
- JEditorPane[] op = e.getOpenedPanes ();
- // We listen on open panes if e implements EditorCookie.Observable
- if ((op == null) || (op.length < 1)) return null;
- return op [0];
- }
-
- private EditorCookie getCurrentEditorCookie () {
- synchronized (currentLock) {
- if (currentEditorCookie == null) {
- TopComponent tc = TopComponent.getRegistry().getActivated();
- if (tc != null) {
- currentEditorCookie = (EditorCookie) tc.getLookup().lookup(EditorCookie.class);
- if (currentEditorCookie != null && currentEditorCookie.getOpenedPanes() == null) {
- currentEditorCookie = null;
- }
- }
- // Listen on open panes if currentEditorCookie implements EditorCookie.Observable
- if (currentEditorCookie instanceof EditorCookie.Observable) {
- if (editorObservableListener == null) {
- editorObservableListener = new EditorLookupListener(EditorCookie.Observable.class);
- }
- ((EditorCookie.Observable) currentEditorCookie).addPropertyChangeListener(editorObservableListener);
- }
- }
- return currentEditorCookie;
- }
- }
-
private static DataObject getDataObject (String url) {
FileObject file;
try {
@@ -1924,61 +1740,10 @@ public class EditorContextImpl extends E
}
}
- private class EditorLookupListener extends Object implements LookupListener, PropertyChangeListener, Runnable {
-
- private Class type;
-
- public EditorLookupListener(Class type) {
- this.type = type;
- }
-
- public void resultChanged(LookupEvent ev) {
- if (type == DataObject.class) {
- synchronized (currentLock) {
- currentURL = null;
- //currentElement = null;
- if (currentEditorCookie instanceof EditorCookie.Observable) {
- ((EditorCookie.Observable) currentEditorCookie).
- removePropertyChangeListener(editorObservableListener);
- }
- currentEditorCookie = null;
- }
- refreshProcessor.post(this);
- } else if (type == EditorCookie.class) {
- synchronized (currentLock) {
- currentURL = null;
- //currentElement = null;
- if (currentEditorCookie instanceof EditorCookie.Observable) {
- ((EditorCookie.Observable) currentEditorCookie).
- removePropertyChangeListener(editorObservableListener);
- }
- currentEditorCookie = null;
- }
- refreshProcessor.post(this);
- } else if (type == Node.class) {
- synchronized (currentLock) {
- //currentElement = null;
- }
- refreshProcessor.post(this);
- }
- }
-
- public void run() {
- pcs.firePropertyChange (TopComponent.Registry.PROP_CURRENT_NODES, null, null);
- }
-
+ private class EditorContextDispatchListener extends Object implements PropertyChangeListener {
+
public void propertyChange(PropertyChangeEvent evt) {
- if (type == TopComponent.class) {
- refreshProcessor.post(this);
- } else
- if (evt.getPropertyName().equals(EditorCookie.Observable.PROP_OPENED_PANES)) {
- synchronized (currentLock) {
- if (currentEditorCookie != null && currentEditorCookie.getOpenedPanes() == null) {
- currentEditorCookie = null;
- }
- }
- pcs.firePropertyChange (EditorCookie.Observable.PROP_OPENED_PANES, null, null);
- }
+ pcs.firePropertyChange (org.openide.windows.TopComponent.Registry.PROP_CURRENT_NODES, null, null);
}
}
diff -r 766e8327016d debugger.jpda.projects/src/org/netbeans/modules/debugger/jpda/projects/FixActionProvider.java
--- a/debugger.jpda.projects/src/org/netbeans/modules/debugger/jpda/projects/FixActionProvider.java Fri Jun 06 19:28:24 2008 +0200
+++ b/debugger.jpda.projects/src/org/netbeans/modules/debugger/jpda/projects/FixActionProvider.java Wed Jun 11 17:03:09 2008 +0200
@@ -61,6 +61,7 @@ import org.netbeans.spi.debugger.Actions
import org.netbeans.spi.debugger.ActionsProviderSupport;
import org.netbeans.spi.project.ActionProvider;
import org.netbeans.api.java.project.JavaProjectConstants;
+import org.netbeans.spi.debugger.ui.EditorContextDispatcher;
import org.openide.ErrorManager;
import org.openide.loaders.DataObject;
import org.openide.nodes.Node;
@@ -84,7 +85,7 @@ public class FixActionProvider extends A
listener = new Listener ();
MainProjectManager.getDefault ().addPropertyChangeListener (listener);
debugger.addPropertyChangeListener (JPDADebugger.PROP_STATE, listener);
- TopComponent.getRegistry ().addPropertyChangeListener (listener);
+ EditorContextDispatcher.getDefault().addPropertyChangeListener("text/x-java", listener);
setEnabled (
ActionsManager.ACTION_FIX,
@@ -95,7 +96,7 @@ public class FixActionProvider extends A
private void destroy () {
debugger.removePropertyChangeListener (JPDADebugger.PROP_STATE, listener);
MainProjectManager.getDefault ().removePropertyChangeListener (listener);
- TopComponent.getRegistry ().removePropertyChangeListener (listener);
+ EditorContextDispatcher.getDefault().removePropertyChangeListener (listener);
}
public Set getActions () {
diff -r 766e8327016d debugger.jpda.projects/src/org/netbeans/modules/debugger/jpda/projects/RunToCursorActionProvider.java
--- a/debugger.jpda.projects/src/org/netbeans/modules/debugger/jpda/projects/RunToCursorActionProvider.java Fri Jun 06 19:28:24 2008 +0200
+++ b/debugger.jpda.projects/src/org/netbeans/modules/debugger/jpda/projects/RunToCursorActionProvider.java Wed Jun 11 17:03:09 2008 +0200
@@ -41,42 +41,29 @@
package org.netbeans.modules.debugger.jpda.projects;
-import java.awt.event.ActionEvent;
import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.beans.PropertyChangeSupport;
import java.util.Collections;
import java.util.Set;
-import javax.swing.AbstractAction;
-import javax.swing.Action;
import javax.swing.SwingUtilities;
import org.netbeans.api.debugger.ActionsManager;
-import org.netbeans.api.debugger.Breakpoint;
import org.netbeans.api.debugger.DebuggerEngine;
-
import org.netbeans.api.debugger.DebuggerManager;
import org.netbeans.api.debugger.DebuggerManagerAdapter;
-import org.netbeans.api.debugger.DebuggerManagerListener;
-import org.netbeans.spi.debugger.ContextProvider;
-import org.netbeans.api.debugger.Session;
-import org.netbeans.api.debugger.Watch;
import org.netbeans.api.debugger.jpda.JPDADebugger;
-
import org.netbeans.api.debugger.jpda.LineBreakpoint;
-import org.netbeans.api.java.project.JavaProjectConstants;
import org.netbeans.api.project.Project;
-import org.netbeans.spi.debugger.ActionsProvider;
-import org.netbeans.spi.debugger.ActionsProviderListener;
import org.netbeans.spi.debugger.ActionsProviderSupport;
import org.netbeans.spi.debugger.jpda.EditorContext;
+import org.netbeans.spi.debugger.ui.EditorContextDispatcher;
import org.netbeans.spi.project.ActionProvider;
import org.openide.ErrorManager;
+import org.openide.filesystems.FileObject;
+import org.openide.filesystems.FileStateInvalidException;
import org.openide.util.RequestProcessor;
-
-import org.openide.windows.TopComponent;
+import org.openide.util.WeakListeners;
/**
@@ -85,15 +72,16 @@ import org.openide.windows.TopComponent;
*/
public class RunToCursorActionProvider extends ActionsProviderSupport {
- private EditorContext editor;
- private LineBreakpoint breakpoint;
+ private EditorContextDispatcher editorContext;
+ private LineBreakpoint breakpoint;
{
- editor = DebuggerManager.getDebuggerManager().lookupFirst(null, EditorContext.class);
+ editorContext = EditorContextDispatcher.getDefault();
Listener listener = new Listener ();
MainProjectManager.getDefault ().addPropertyChangeListener (listener);
- TopComponent.getRegistry ().addPropertyChangeListener (listener);
+ editorContext.addPropertyChangeListener("text/x-java",
+ WeakListeners.propertyChange(listener, editorContext));
DebuggerManager.getDebuggerManager ().addDebuggerListener (
DebuggerManager.PROP_DEBUGGER_ENGINES,
listener
@@ -121,8 +109,8 @@ public class RunToCursorActionProvider e
// 1) set breakpoint
removeBreakpoint ();
createBreakpoint (LineBreakpoint.create (
- editor.getCurrentURL (),
- editor.getCurrentLineNumber ()
+ editorContext.getCurrentURLAsString(),
+ editorContext.getCurrentLineNumber ()
));
// 2) start debugging of project
@@ -131,8 +119,8 @@ public class RunToCursorActionProvider e
public void postAction(Object action, final Runnable actionPerformedNotifier) {
final LineBreakpoint newBreakpoint = LineBreakpoint.create (
- editor.getCurrentURL (),
- editor.getCurrentLineNumber ()
+ editorContext.getCurrentURLAsString(),
+ editorContext.getCurrentLineNumber ()
);
RequestProcessor.getDefault().post(new Runnable() {
public void run() {
@@ -167,8 +155,9 @@ public class RunToCursorActionProvider e
}
private boolean shouldBeEnabled () {
- if (editor.getCurrentLineNumber () < 0) return false;
- if (!editor.getCurrentURL ().endsWith (".java")) return false;
+ if (editorContext.getCurrentLineNumber () < 0) return false;
+ FileObject fo = editorContext.getCurrentFile();
+ if (fo == null || !fo.hasExt("java")) return false;
// check if current project supports this action
Project p = MainProjectManager.getDefault ().getMainProject ();
diff -r 766e8327016d debugger.jpda.projects/src/org/netbeans/modules/debugger/jpda/projects/ToolTipAnnotation.java
--- a/debugger.jpda.projects/src/org/netbeans/modules/debugger/jpda/projects/ToolTipAnnotation.java Fri Jun 06 19:28:24 2008 +0200
+++ b/debugger.jpda.projects/src/org/netbeans/modules/debugger/jpda/projects/ToolTipAnnotation.java Wed Jun 11 17:03:09 2008 +0200
@@ -70,6 +70,7 @@ import org.netbeans.api.debugger.jpda.Va
import org.netbeans.api.debugger.jpda.Variable;
import org.netbeans.spi.debugger.jpda.EditorContext.Operation;
+import org.netbeans.spi.debugger.ui.EditorContextDispatcher;
import org.openide.nodes.Node;
import org.openide.windows.TopComponent;
@@ -112,7 +113,7 @@ public class ToolTipAnnotation extends A
} catch (IOException ex) {
return ;
}
- JEditorPane ep = getCurrentEditor ();
+ JEditorPane ep = EditorContextDispatcher.getDefault().getCurrentEditor ();
if (ep == null) return ;
int offset;
String expression = getIdentifier (
@@ -243,52 +244,5 @@ public class ToolTipAnnotation extends A
}
}
- /**
- * Returns current editor component instance.
- *
- * Used in: ToolTipAnnotation
- */
- private static JEditorPane getCurrentEditor_() {
- EditorCookie e = getCurrentEditorCookie ();
- if (e == null) return null;
- JEditorPane[] op = e.getOpenedPanes ();
- if ((op == null) || (op.length < 1)) return null;
- return op [0];
- }
-
- private static JEditorPane getCurrentEditor () {
- if (SwingUtilities.isEventDispatchThread()) {
- return getCurrentEditor_();
- } else {
- final JEditorPane[] ce = new JEditorPane[1];
- try {
- SwingUtilities.invokeAndWait(new Runnable() {
- public void run() {
- ce[0] = getCurrentEditor_();
- }
- });
- } catch (InvocationTargetException ex) {
- ErrorManager.getDefault().notify(ex.getTargetException());
- } catch (InterruptedException ex) {
- ErrorManager.getDefault().notify(ex);
- }
- return ce[0];
- }
- }
-
- /**
- * Returns current editor component instance.
- *
- * @return current editor component instance
- */
- private static EditorCookie getCurrentEditorCookie () {
- Node[] nodes = TopComponent.getRegistry ().getActivatedNodes ();
- if ( (nodes == null) ||
- (nodes.length != 1) ) return null;
- Node n = nodes [0];
- return (EditorCookie) n.getCookie (
- EditorCookie.class
- );
- }
}