如何在单独的视图中创建新控制台

时间:2012-04-10 07:40:32

标签: java eclipse-plugin

我使用以下代码创建了一个新的控制台。

this.console = new IOConsole(name, null);
IConsole[] consoles = new IConsole[1];
consoles[0] = this.console ;
ConsolePlugin.getDefault().getConsoleManager()
                .addConsoles(consoles);
IOConsoleOutputStream consoleStream = this.console.newOutputStream();
consoleStream.write("Printing in console..");

我创建了3个与上面相同的新游戏机。

但实际上我不想将我的新控制台页面添加到现有控制台。 我想创建新的控制台视图,它应该显示这些控制台消息。 如何获取单独的控制台视图而不是添加现有的控制台管理器。 因为我想分离我自己的一个控制台视图,而不是其他控制台。

是否可以创建新视图并将一个控制台附加到该视图。 任何人都可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

最近两天这个问题挣扎了。无论如何我自己找到了解决方案。 还有一些问题。
我想分享我得到的东西。

我刚刚创建了新视图。该视图类应该实现 IConsoleView (当然,扩展 IViewPart )。

createPatrControl()中,我添加了以下代码。

public void createPartControl(Composite parent) {
  IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
    .getActivePage();
  IViewReference ref = page.findViewReference(IConsoleConstants.ID_CONSOLE_VIEW);
  IOConsole  console = createConsole(); // here create new console

  // this will ad console page to corresponding view                
        IPageBookViewPage pageBook = targetConsole.createPage(this);
        try {
            pageBook.init(new PageSite((IViewSite) ref.getView(true).getSite()));
        } catch (PartInitException e) {
            e.printStackTrace();
        }
        pageBook.createControl(parent);

}

但我想,有些东西在这里错过了。

实际上,我希望在视图类之外完成。 在创建控制台之后,我以编程方式创建新视图并添加如下所示

// here that new view should be get and passed into createPage()
PageBookViewPage pageBook = targetConsole.createPage(IConsoleView);