在RCP应用程序中切换控制台的视图

时间:2012-02-08 13:50:02

标签: console eclipse-rcp

我正在开发一个显示控制台的RCPP应用程序。当我关闭控制台时,除非我重新启动应用程序,否则无法再打开它。

所以我添加了一个新的菜单项来显示和隐藏控制台作为扩展点并为它创建了一个处理程序。我可以检查控制台是否存在,但问题是当它关闭时它实际上是隐藏的而不是处理掉的。

<pre> 
private Console() {
            super("", null);
            setWaterMarks(-1, -1);

            infoStream = newOutputStream();
            errorStream = newOutputStream();
            warnStream = newOutputStream();

            infoColor = new Color(DioAction.getDisplay(), new RGB(0, 0, 0));
            infoStream.setColor(infoColor);
            warnColor = new Color(DioAction.getDisplay(), new RGB(255, 128, 0));
            warnStream.setColor(warnColor);
            errorColor = new Color(DioAction.getDisplay(), new RGB(255, 0, 0));
            errorStream.setColor(errorColor);
        }
        public static Console getDefault() {
            if (instance == null) {
                instance = new Console();
                IConsoleManager manager = ConsolePlugin.getDefault().getConsoleManager();
                IConsole[] existing = manager.getConsoles();
                boolean exists = false;
                for (int i = 0; i < existing.length; i++) {
                    if (instance == existing[i])
                        exists = true;
                }
                if (!exists)
                    manager.addConsoles(new IConsole[] { instance });
                manager.showConsoleView(instance);
            }
            return instance;
        }

        public void info(String message) {
            try {
                infoStream.write(message);
                infoStream.write("\n");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
</pre>

调用此方法时添加控制台:

@Override
    public void postStartup() {
        super.postStartup();
        Console.getDefault().info("Hello");
    }
来自ApplicationWorkbenchAdvisor的

我的问题是我应该如何检测控制台是否已关闭/隐藏并在我选择菜单项时显示它?

1 个答案:

答案 0 :(得分:0)

请参阅此前一个答案,该答案是如何显示视图的示例。

Toggle the view of the Console in a RCP application