用于读取编辑器内容的Eclipse插件



我想写一个eclipse插件,它从编辑器窗口读取内容并显示给我。这应该是一个非常简单的任务后,我发现如何做到这一点在这篇文章中添加项目到Eclipse文本查看器上下文菜单

在我陈述我的问题之前,让我先说明我到目前为止都做了些什么:

我正在开发eclipse 3.7,我创建了一个简单的hello world插件,其代码是由eclipse为我自动生成的。

下面是run函数:
public void run(IAction action) {
        MessageDialog.openInformation(
            window.getShell(),
            "AnirudhPlugin",
            "Hello, Eclipse world");

        try {               
            IEditorPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
            if(part instanceof IReusableEditor){
                    System.out.println("is of type reusable editor");
                final IReusableEditor editor = (IReusableEditor)part;
                if(editor instanceof AbstractTextEditor){
                    System.out.println("abstract");
                }
                if(editor instanceof StatusTextEditor){
                    System.out.println("status");
                }
                if(editor instanceof TextEditor){
                    System.out.println("text");
                }
                if(editor instanceof AbstractDecoratedTextEditor){
                    System.out.println("abs dec");
                }               
                if(editor instanceof CommonSourceNotFoundEditor){
                    System.out.println("comm");
                }
            }

            if ( part instanceof ITextEditor ) {
                final ITextEditor editor = (ITextEditor)part;
                IDocumentProvider prov = editor.getDocumentProvider();
                IDocument doc = prov.getDocument( editor.getEditorInput() );
                ISelection sel = editor.getSelectionProvider().getSelection();
                if ( sel instanceof TextSelection ) {
                    final TextSelection textSel = (TextSelection)sel;
                    String newText = "/*" + textSel.getText() + "*/";
                    MessageDialog.openInformation(
                            window.getShell(),
                            "AnirudhPlugin",
                            newText);
                    doc.replace( textSel.getOffset(), textSel.getLength(), newText );
                }
            }else{
                MessageDialog.openInformation(
                        window.getShell(),
                        "AnirudhPlugin",
                        "Not ITextEditor");
            }
        } catch ( Exception ex ) {
            ex.printStackTrace();
        }
    }

现在当我运行这段代码时,我得到的输出类型是"可重用编辑器",不像它应该是"ITextEditor"(请纠正我,我正在做一些愚蠢的声明,因为我是eclipse Plugin开发的新手)。我试图检查IReusableEditor实例类型(正如你在上面的代码中看到的,我试图通过使用"instance of"来检查),但令我惊讶的是,它没有指向任何实现IReusableEditor接口的类。

我试图读取的编辑器是一个简单的编辑器窗口,我在其中编写了一些java代码。

我也得到doc2变量值为空以下

final IDocument doc2 = (IDocument) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor().getAdapter(IDocument.class);

请让我知道我在哪里做错了,提前感谢。

好了,我知道如何从编辑器窗口读取

if (editor instanceof CompilationUnitEditor) {
            CompilationUnitEditor compEditor = (CompilationUnitEditor)editor;
            IEditorInput input = compEditor.getEditorInput();
            IDocumentProvider provider = compEditor.getDocumentProvider();
            IDocument document = provider.getDocument(input);
            if (document != null) {
                   System.out.println("document contents:" + document.get());
            }
     }

最新更新