Console 控制台扩充(一)
Console 控制台扩展(一)
一、在RCP 程序中加入Console View 的方法如下:
1.实现org.eclipse.ui.console.consoleFactories扩展点,并且添加相关依赖
在plugin.xml的Dependencies页中为Required Plug-ins增加org.eclipse.ui.console
2.写一个ConsoleFactory类实现IConsoleFactory
package com.fujitsu.eternussf.acm.ccm.ui.views; import java.io.PrintStream; 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; import org.eclipse.ui.console.MessageConsoleStream; import com.fujitsu.eternussf.acm.ccm.nls.Messages; public class ConsoleFactory implements IConsoleFactory { public static MessageConsole console = new MessageConsole("Transfer Infomation",null); public void openConsole() { showConsole(); } public static void showConsole(){ if (console != null){ IConsoleManager manager = ConsolePlugin.getDefault() .getConsoleManager(); IConsole[] existing = manager.getConsoles(); boolean exists = false; for (int i = 0; i < existing.length; i++){ if (console == existing[i]) exists = true; } if (!exists){ manager.addConsoles(new IConsole[]{ console }); } manager.showConsoleView(console); MessageConsoleStream stream = console.newMessageStream(); System.setOut(new PrintStream(stream)); } } public static void closeConsole(){ IConsoleManager manager = ConsolePlugin.getDefault() .getConsoleManager(); if (console != null){ manager.removeConsoles(new IConsole[]{ console }); } } public static MessageConsole getConsole() { return console; } }
3.把控制台添加到透视图当中去
public void createInitialLayout(IPageLayout layout) { String editorArea = layout.getEditorArea(); ConsoleFactory consoleFactory = new ConsoleFactory(); consoleFactory.openConsole(); IFolderLayout bottomArea = layout.createFolder("bottomArea", IPageLayout.BOTTOM, 0.75f, DetailView.ID); bottomArea.addView(IConsoleConstants.ID_CONSOLE_VIEW); }
二、定制Console View的ToolBar.
去掉RCP Console View 中的Open Console和Select Console按钮
IWorkbenchPage page = PlatformUI.getWorkbench().getWorkbenchWindows()[0].getPages()[0]; IViewPart viewpart = page.findView(IConsoleConstants.ID_CONSOLE_VIEW); IActionBars actionBar = viewpart.getViewSite().getActionBars(); IToolBarManager toolbarMgr = actionBar.getToolBarManager(); IContributionItem[] items = toolbarMgr.getItems(); for (IContributionItem item : items) { if (item instanceof ActionContributionItem) { IAction action = ((ActionContributionItem) item).getAction(); String text = action.getText(); if (text.equals("Open Console") || text.equals("Select Console")) { toolbarMgr.remove(item); } } } actionBar.updateActionBars();
1 楼
great_zlj
2011-10-17
你好 看了你的《Console 控制台扩展(一)》,很受用,可是我实验运行的时候发觉不能成功,能不能具体解释一下那三部分代码是在几个类中实现的,请问还有没有这个源码的工程发给我,万分感激,315406010@qq.com