rcp嵌入Eclipse自带的console
来源:互联网 发布:澳大利亚移民知乎 编辑:程序博客网 时间:2024/05/21 14:04
原文:http://blog.csdn.net/salc3k/article/details/6938750
参考地址:http://blog.csdn.net/by84788186/article/details/6332299
要使用Rcp嵌入Eclipse自带的console,首先,在plugin.xml的dependencies依赖关系中添加org.eclipse.ui.console
然后在plugin.xml中扩展consoleFactories
其中ConsoleFactory.java代码如下:
- public class ConsoleFactory implements IConsoleFactory {
- static MessageConsole console = new MessageConsole("Console Info:",
- null);
- @Override
- public void openConsole() {
- showConsole();
- }
- public static void showConsole() {
- if (console != null) {
- IConsoleManager manager = ConsolePlugin.getDefault().getConsoleManager();
- IConsole[] existing = manager.getConsoles();
- boolean exists = false;
- //add the new MessageConsole instance into the control manager and show
- for (int i = 0; i < existing.length; i++) {
- if (console == existing[i])
- exists = true;
- }
- if(!exists){
- manager.addConsoles(new IConsole[] { console });
- }
- manager.showConsoleView(console);
- }
- }
- public static void closeConsole(){
- IConsoleManager manager = ConsolePlugin.getDefault().getConsoleManager();
- if (console != null){
- manager.removeConsoles(new IConsole[]{ console });
- }
- }
- public static MessageConsole getConsole(){
- return console;
- }
- }
然后在Perspective.java透视图中将其显示出来
- public class Perspective implements IPerspectiveFactory {
- public void createInitialLayout(IPageLayout layout) {
- ConsoleFactory cf = new ConsoleFactory();
- layout.addView(IConsoleConstants.ID_CONSOLE_VIEW, IPageLayout.BOTTOM,
- 0.70f, layout.getEditorArea());
- cf.openConsole();
- }
- }
现在该console就会显示在透视图的下半部分了。但是这样加入的控制台显示的显示的信息条数是不限制的,输出的内容多了就会把RCP应用跑死,可以调用MessageConsole.setWaterMarks(5000, 8000);来限制输出条数。
定制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();
如果不需要toobar中的任何东西,可以直接
- toolbarMgr.removeAll();
在console中打印日志信息
新建ConsoleHandler类:
- public class ConsoleHandler{
- private static MessageConsoleStream consoleStream;
- public static void info(final String _message){
- Display.getDefault().asyncExec(new Runnable(){
- @Override
- public void run() {
- consoleStream = ConsoleFactory.getConsole().newMessageStream();
- consoleStream.println(new SimpleDateFormat("HH:mm:ss").format(new Date())+ "(INFO)" +
- " " + _message);
- }
- });
- }
- public static void error(final String _message){
- Display.getDefault().asyncExec(new Runnable(){
- @Override
- public void run() {
- consoleStream = ConsoleFactory.getConsole().newMessageStream();
- consoleStream.setColor(new Color(null,255,0,0));
- consoleStream.println(new SimpleDateFormat("HH:mm:ss").format(new Date())+ "(ERROR)" +
- " " + _message);
- }
- });
- }
- }
可以看到现在的rcp上有很多menubar,这些是我们所不需要的,可以通过在代码中添加下列代码来简化menubar
- IWorkbenchPage page = PlatformUI.getWorkbench().getWorkbenchWindows()[0]
- .getPages()[0];
- IViewPart viewpart = page.findView(IConsoleConstants.ID_CONSOLE_VIEW);
- // IActionBars actionBar = viewpart.getViewSite().getActionBars();
- IToolBarManager toolbarMgr = viewpart.getViewSite().getActionBars()
- .getToolBarManager();
- // 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);
- }
- }
- }
- viewpart.getViewSite().getActionBars().updateActionBars();
但是这些代码如果添加在ConsoleFactory.java中,要么出现透视图无法显示,也有会出现nullpoint的错误,后来将这些代码添加到该透视图中另外一个viewpart的构造函数中,问题得到解
决。
- rcp嵌入Eclipse自带的console
- 使用rcp自带console输出信息
- 使用rcp自带console输出信息
- 使用rcp自带console打印日志信息
- 浏览器自带的console
- Eclipse编程Tips(2)-让RCP自带JRE
- Eclipse编程Tips-让RCP自带JRE
- Eclipse编程Tips-让RCP自带JRE
- 转贴:Eclipse编程Tips-让RCP自带JRE
- Eclipse RCP Console View 相关操作
- Eclipse RCP Console View 相关操作
- 屏蔽Eclipse自带快捷键 消除Eclipse RCP快捷键定义冲突之终极法
- 将Eclipse的console插件加入到自己的RCP应用程序中
- Eclipse的RCP
- 使用eclipse自带的Navigator
- Eclipse自带Ant的问题
- android自带的APP导入eclipse
- Eclipse 自带打包
- PHP连接mysql数据库
- 手机QQ浏览器解析A链接访问过后颜色发生变化的Bug
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC CHECKTABLE检查组成表或索引视图的所有页和结构的完整性
- libzbar.a armv7
- directx的安装与配置
- rcp嵌入Eclipse自带的console
- android chromium点击链接打开新标签页过程分析
- 【九度】题目1414:旅游啦
- 复习笔记之二--用户方式线程同步
- 效仿存储过程,尽管不懂,留个模板。
- 如何将PDF转html5?
- bat 命令学习
- ubuntu 10 安装samba服务,windows下磁盘驱动映射
- Linux kernel测试初探