2012-02-08 50 views
0

我正在開發顯示控制檯的RCPP應用程序。當我關閉控制檯時,除非重新啓動應用程序,否則無法再打開它。在RCP應用程序中切換控制檯的視圖

因此,我添加了一個新菜單項來顯示和隱藏控制檯作爲擴展點,併爲它創建一個處理程序。我可以檢查控制檯是否存在,但是問題在於它關閉時它實際上是隱藏的而不是處理掉。

<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。

我的問題是我應該如何檢測控制檯是否已關閉/隱藏,並在選擇菜單項時顯示它?

回答

相關問題