RCP:如何把Preferences中的项从一个类别移动到另一个类别 2013-08-23 18:59 by Binhua Liu,
RCP:如何把Preferences中的项从一个类别移动到另一个类别
前言
很久没写文章了,准备写一系列关于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:
|
1
2
3
4
5
|
PreferenceManager pm = PlatformUI.getWorkbench().getPreferenceManager(); IPreferenceNode[] arr = pm.getRootSubNodes(); for(IPreferenceNode pn:arr){ System.out.println("Label:" + pn.getLabelText() + " ID:" + pn.getId()); } |
根据打印的信息,选择你要删除的Perference Page或者类别,然后删除它们,例如:
|
1
2
3
|
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
|
1
|
pm.remove("org.eclipse.jsch.ui.SSHPreferences"); |
如果SSH2不是直接在根节点下,可以删除其所在类别,或者,在其所在类别下删除它,这里不在累述。
5,把SSH2添加到Team类别下。通过在plugin.xml中添加以下代码来实现:
|
1
2
3
4
5
6
7
8
9
|
<extension point="org.eclipse.ui.preferencePages"> <page category="org.eclipse.team.ui.TeamPreferences" class="org.eclipse.jsch.internal.ui.preference.PreferencePage" id="org.eclipse.jsch.ui.SSHPreferences" name="SSH2"> </page> </extension> |
其中,category和class是前文中获取的,name和id其实可以随便填,但是我还是使用了默认的值。
大功告成:

RCP:如何把Preferences中的项从一个类别移动到另一个类别 2013-08-23 18:59 by Binhua Liu,的更多相关文章
- RCP:如何把Preferences中的项从一个类别移动到另一个类别
前言 很久没写文章了,准备写一系列关于Eclipse RCP /Plugin的文章. 这些文章都是trouble shooting性质的,不准备写的很细,当你碰到这样的问题,google到时,能帮你把 ...
- jquery选中将select下拉框中一项后赋值给text文本框
jquery选中将select下拉框中一项后赋值给text文本框,出现无法将第一个下拉框的value赋值给文本框 因为select默认选中第一项..在选择第一项时,便导致无法激发onchange事件. ...
- React 点击删除列表中对应项(React 获取DOM中自定义属性)
点击删除按钮,删除列表中对应项本来是React比较基础的应用,可是应用情况变得复杂了以后,我还真想了一会儿才搞定. 简化一下应用场景:点击新增按钮,增加一条输入框,点击输入框旁边的按钮,删除该输入框( ...
- Java中不定项参数(可变参数)的作用和使用方式
引言: 我们在编写方法的过程中,可能会遇见一个方法有不确定参数个数的情况.一般我们会用方法重载来解决问题: //方法重载,解决参数个数不确定问题 public void method(); publi ...
- [ 记录 ] Vue 对象数组中一项数据改变,页面不更新
问题描述:将data中数据列表渲染到页面,循环生成 el-switch,点击页面中 el-switch 后数组中某项值改变,但是页面不更新 数据格式如下 export default{ data(){ ...
- 机器学习中规范化项:L1和L2
规范化(Regularization) 机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作ℓ1-norm和ℓ2-norm,中文称作L1正则化和L2正则化,或者L ...
- TFS中工作项的定制-修改面板
上一篇文章我们讲到了<TFS 中工作项的订制-修改工作流>,工作流只要我们设计出来,就可以进行定制修改了.这次通过简单的案例,了解一下,工作项的面板如何定制. 1.软件准备 ...
- 如何自定义TFS中工作项的字段20141010
如何自定义TFS中工作项的字段 我们以VS2013为例,TFS也是2013版本的: 1. 安装小插件 需要安装Visual Studio Team Foundation Server 2013 Pow ...
- TFS中工作项的定制- 字段功能定义
参考,翻译此页面All FIELD XML Elements Reference(http://msdn.microsoft.com/en-us/library/ms194953.aspx) 对于每一 ...
随机推荐
- Tomcat剖析(一):一个简单的Web服务器
Tomcat剖析(一):一个简单的Web服务器 1. Tomcat剖析(一):一个简单的Web服务器 2. Tomcat剖析(二):一个简单的Servlet服务器 3. Tomcat剖析(三):连接器 ...
- Python学习笔记16:标准库多线程(threading包裹)
Python主要是通过标准库threading包来实现多线程. 今天,互联网时代,所有的server您将收到大量请求. server要利用多线程的方式的优势来处理这些请求,为了改善网络port读写效率 ...
- 多线程编程 (1) -NSThread
每个iOS应用程序都有个专门用来更新显示UI界面.处理用户触摸事件的主线程,因此不能将其他太耗时的操作放在主线程中执行,不然会造成主线程堵塞(出现卡机现象),带来极坏的用户体验.一般的解决方案就是将那 ...
- IOS发展--他们控制的定义
有没有这样的要求,,自定义panel,里面放几个控件,在多个页面中使用此panel. 有三个观点来解决这个问题: 1.自己继承UIView写一个类,在它是在代码的形式加入需要控制.完成布局. 2.使用 ...
- Postman (Chrome插件)
接口测试从未如此简单 - Postman (Chrome插件) Posted on 2015-01-16 15:50 WadeXu 阅读(468) 评论(7) 编辑 收藏 接口测试从未如此简单 - P ...
- lua本学习笔记功能
Lua本学习笔记功能 1. 函数返回 指定任务的主要功能是完成,在这种情况下,函数被用作调用语句.函数可以计算并返回值,在这种情况下,作为分配值表达式语句使用. 语法: funcationfunc_ ...
- Java集合之LinkedHashSet源码分析
1.简介 我们知道Set不允许包含相同的元素,如果试图把两个相同元素加入同一个集合中,add方法返回false.根据源码实现中的注释我们可以知道LinkedHashSet是具有可预知迭代顺序的Set接 ...
- leetcode[67] Plus One
题目:对一个用vector存的数字进行加1,然后返回加1后的值. 一次就在oj上通过了. 就是进位加上当前位如果大于9,那就当前位等于0: 随后进位还为1的话就是在数组前面插入一个1: class S ...
- 牛腩公布系统--HTTP 错误 403.14 - Forbidden
忘了是谁说的"至理名言",做牛腩公布系统,不怕出错误,就怕出跟牛老师不一样的错误!! 刚做就開始出现各种错误了,只是话说错误越多,收获越多.把每次困难都当做历练成长的机会.不多说, ...
- cocos2dx对于强大的RichText控制
最近准备做一个聊天系统,开始准备使用cocos2dx的UIRichText控制显示屏聊天,在使用中发现的结果,cocos2dx的RichText很有限.全然不具备实现聊天的功能.仅仅实现了增加文本.图 ...