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 - ); - } }