2

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

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 个与上面相同的新控制台。

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

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

4

1 回答 1

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);
于 2012-04-11T13:09:38.057 回答