Я разрабатываю приложение RCPP, которое отображает консоль.В тот момент, когда я закрываю консоль, я не могу открыть ее снова, пока не перезапущу приложение.
Поэтому я добавил новый пункт меню, чтобы показать и скрыть консоль как точку расширения, и создал для нее обработчик.Я могу проверить, существует ли консоль, но проблема в том, что когда она закрывается, она на самом деле скрыта и не утилизируется.
<code><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();
}
}
Консоль добавляется, когда я вызываю этот метод:
@Override
public void postStartup() {
super.postStartup();
Console.getDefault().info("Hello");
}
из ApplicationWorkbenchAdvisor.
У меня вопрос, как я долженопределить, была ли консоль закрыта / скрыта, и показать ее при выборе пункта меню?