进行Eclipse插件开发时,有时需要为插件开发自己的控制台,以便在必要输出提示信息,本文介绍进行Eclipse插件开发时,如何实现自己的控制台。
1. 扩展控制台扩展点。
对org.eclipse.ui.console.consoleFactories扩展点进行扩展,并填写必要的信息,比如label,class等。如下图。
2. 实现ConsoleFactory类。需要加给工程加入org.eclipse.ui.console_3.4.0.v20090513.jar。版本可以不同。
- package project;
- import org.eclipse.ui.console.ConsolePlugin;
- import org.eclipse.ui.console.IConsole;
- import org.eclipse.ui.console.IConsoleFactory;
- import org.eclipse.ui.console.IConsoleManager;
- import org.eclipse.ui.console.MessageConsole;
- public class ConsoleFactory implements IConsoleFactory {
- private static MessageConsole console = new MessageConsole("", null);
- static boolean exists = false;
- /**
- * 描述:打开控制台
- * */
- public void openConsole() {
- showConsole();
- }
- /** */
- /**
- * 描述:显示控制台
- * */
- private static void showConsole() {
- if (console != null) {
- // 得到默认控制台管理器
- IConsoleManager manager = ConsolePlugin.getDefault()
- .getConsoleManager();
- // 得到所有的控制台实例
- IConsole[] existing = manager.getConsoles();
- exists = false;
- // 新创建的MessageConsole实例不存在就加入到控制台管理器,并显示出来
- for (int i = 0; i < existing.length; i++) {
- if (console == existing[i])
- exists = true;
- }
- if (!exists) {
- manager.addConsoles(new IConsole[] { console });
- }
- // console.activate();
- }
- }
- /** */
- /**
- * 描述:关闭控制台
- * */
- public static void closeConsole() {
- IConsoleManager manager = ConsolePlugin.getDefault()
- .getConsoleManager();
- if (console != null) {
- manager.removeConsoles(new IConsole[] { console });
- }
- }
- /**
- * 获取控制台
- *
- * @return
- */
- public static MessageConsole getConsole() {
- showConsole();
- return console;
- }
- }
3.实现向控制台输出信息。
- /**
- * 向控制台打印一条信息,并激活控制台。
- *
- * @param message
- * @param activate
- * 是否激活控制台
- */
- public static void printToConsole(String message, boolean activate) {
- MessageConsoleStream printer = ConsoleFactory.getConsole()
- .newMessageStream();
- printer.setActivateOnWrite(activate);
- printer.println("提示:" + message );
- }