将自定义控制台添加到 Eclipse 控制台列表

问题描述 投票:0回答:1

基于这个教程,我正在创建一个Eclipse插件,它提供了一个新的控制台,该控制台被添加到视图中,我可以在那里打印消息,但由于某种原因,它没有添加到控制台列表中(下拉列表列表在视图的一角,请参见下图)。

这就是我创建控制台的方式:

public void createConsole(String name) {
    ConsolePlugin plugin = ConsolePlugin.getDefault();
    IConsoleManager consoleManager = plugin.getConsoleManager();

    console = new MessageConsole(name, null);
    consoleManager.addConsoles(new IConsole[]{console});
}

然后我可以使用这种方法打印消息:

public void print(String msg) {
    MessageConsoleStream out = console.newMessageStream();
    out.println(msg);
}

我也使用这种方法将控制台视图带到前面:

public void bringToFront() {
    try{
        IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
        String id = IConsoleConstants.ID_CONSOLE_VIEW;
        IConsoleView view = (IConsoleView) page.showView(id);
        view.display(console);
    } catch(PartInitException e) {
        e.printStackTrace();
    }
}

enter image description here

有什么建议吗?

eclipse-plugin console eclipse-rcp
1个回答
4
投票

要将新的控制台类型添加到控制台视图,您需要提供

consoleFactories
扩展:

<extension
      point="org.eclipse.ui.console.consoleFactories">
   <consoleFactory
         class="com.example.MyConsoleFactory"
         icon="icons/etool16/my-console.png"
         label="My Console">
   </consoleFactory>
</extension>

工厂类需要提供

openConsole
的实现,在其中创建并显示控制台,就像您在现有代码中所做的那样:

class ConsoleFactory implements IConsoleFactory {
   @Override
   public void openConsole() {
      IConsoleManager consoleManager =
         ConsolePlugin.getDefault().getConsoleManager();
      MyConsole console = new MyConsole();
      consoleManager.addConsoles( new IConsole[] { console } );
      consoleManager.showConsoleView( console );
   }
}
© www.soinside.com 2019 - 2024. All rights reserved.