博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RCP:如何把Preferences中的项从一个类别移动到另一个类别
阅读量:5923 次
发布时间:2019-06-19

本文共 1500 字,大约阅读时间需要 5 分钟。

前言

很久没写文章了,准备写一系列关于Eclipse RCP /Plugin的文章。 这些文章都是trouble shooting性质的,不准备写的很细,当你碰到这样的问题,google到时,能帮你把问题解决了,这就ok了。另外有些问题我也是不求甚解的,哈。

问题描述

在开发RCP程序时,一些引用的plugin会向Perferences中贡献一些Perference page,如何删除这些page已经很很多文章介绍了。本文介绍的是,如果我们希望保留某些Perference page,并且把它们合并到其他plugin贡献的category中去,那该怎么做呢。

比如,如下图中,希望把SSH2合并到Team类别下去,SSH2可以用于egit进行源代码管理,所以把它合并到Team中看上去合情合理。

其实需要的技术你可能都会了,只是我们需要创造性的使用它们。

如何删除一个Perference page或者类别

这是我们需要用到的技术,已经有很多文章介绍了,我这里再简要介绍下:

1,首先,我们可以通过以下代码打印根节点下所有的Perference page或者类别的ID:

PreferenceManager pm = PlatformUI.getWorkbench().getPreferenceManager();		IPreferenceNode[] arr = pm.getRootSubNodes();		for(IPreferenceNode pn:arr){		    System.out.println("Label:" + pn.getLabelText() + " ID:" + pn.getId());		}

 

根据打印的信息,选择你要删除的Perference Page或者类别,然后删除它们,例如:

pm.remove("org.eclipse.ant.ui.AntPreferencePage");pm.remove("org.eclipse.gmf.graphdef.diagram.general");pm.remove("org.eclipse.pde.ui.MainPreferencePage");

 

这些代码可以放在WorkbenchWindowAdvisor postWindowOpen()中执行

 

回到我们的题目

1,首先,如上节所示,我们可以找到SSH2和Team的ID:

org.eclipse.jsch.ui.SSHPreferences

org.eclipse.team.ui.TeamPreferences

2,找到SSH2页面对应的类,通过Spy(Shift+Alt+F1)找

其类为:org.eclipse.jsch.internal.ui.preference.PreferencePage, 贡献它的plugin为org.eclipse.jsch.ui

3,在plugin.xml的dependencies中添加org.eclipse.jsch.ui的引用。

4,删除原有的SSH2

pm.remove("org.eclipse.jsch.ui.SSHPreferences");

如果SSH2不是直接在根节点下,可以删除其所在类别,或者,在其所在类别下删除它,这里不在累述。

5,把SSH2添加到Team类别下。通过在plugin.xml中添加以下代码来实现:

 

其中,category和class是前文中获取的,name和id其实可以随便填,但是我还是使用了默认的值。

 

大功告成:

转载地址:http://isivx.baihongyu.com/

你可能感兴趣的文章
C++ 数字转换为string类型
查看>>
程序员全国不同地区,微信(面试 招聘)群。
查看>>
【干货】界面控件DevExtreme视频教程大汇总!
查看>>
闭包 !if(){}.call()
查看>>
python MySQLdb安装和使用
查看>>
Java小细节
查看>>
poj - 1860 Currency Exchange
查看>>
chgrp命令
查看>>
Java集合框架GS Collections具体解释
查看>>
洛谷 P2486 BZOJ 2243 [SDOI2011]染色
查看>>
Spring Cloud 2.x系列之整合rocketMQ
查看>>
答疑解惑:Linux与Windows的那些事儿(2)
查看>>
Java的Socket网络编程以及多线程
查看>>
百万连接之路
查看>>
关于传输自环导致中兴2826交换机无法网管的故障案例
查看>>
Fsutil文件的具体用法
查看>>
linux 笔记本的温度提示
查看>>
【转载】nginx反向代理(proxy_pass)tomcat的过程中,session失效的问题解决
查看>>
项目管理实践教程
查看>>
(转)DOTA新版地图6.78发布:大幅改动 增两位新英雄
查看>>