前言

很久没写文章了,准备写一系列关于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中添加以下代码来实现:

<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中的项从一个类别移动到另一个类别的更多相关文章

  1. RCP:如何把Preferences中的项从一个类别移动到另一个类别 2013-08-23 18:59 by Binhua Liu,

    RCP:如何把Preferences中的项从一个类别移动到另一个类别 前言 很久没写文章了,准备写一系列关于Eclipse RCP /Plugin的文章. 这些文章都是trouble shooting ...

  2. jquery选中将select下拉框中一项后赋值给text文本框

    jquery选中将select下拉框中一项后赋值给text文本框,出现无法将第一个下拉框的value赋值给文本框 因为select默认选中第一项..在选择第一项时,便导致无法激发onchange事件. ...

  3. React 点击删除列表中对应项(React 获取DOM中自定义属性)

    点击删除按钮,删除列表中对应项本来是React比较基础的应用,可是应用情况变得复杂了以后,我还真想了一会儿才搞定. 简化一下应用场景:点击新增按钮,增加一条输入框,点击输入框旁边的按钮,删除该输入框( ...

  4. Java中不定项参数(可变参数)的作用和使用方式

    引言: 我们在编写方法的过程中,可能会遇见一个方法有不确定参数个数的情况.一般我们会用方法重载来解决问题: //方法重载,解决参数个数不确定问题 public void method(); publi ...

  5. [ 记录 ] Vue 对象数组中一项数据改变,页面不更新

    问题描述:将data中数据列表渲染到页面,循环生成 el-switch,点击页面中 el-switch 后数组中某项值改变,但是页面不更新 数据格式如下 export default{ data(){ ...

  6. 机器学习中规范化项:L1和L2

    规范化(Regularization) 机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作ℓ1-norm和ℓ2-norm,中文称作L1正则化和L2正则化,或者L ...

  7. TFS中工作项的定制-修改面板

    上一篇文章我们讲到了<TFS 中工作项的订制-修改工作流>,工作流只要我们设计出来,就可以进行定制修改了.这次通过简单的案例,了解一下,工作项的面板如何定制.     1.软件准备     ...

  8. 如何自定义TFS中工作项的字段20141010

    如何自定义TFS中工作项的字段 我们以VS2013为例,TFS也是2013版本的: 1. 安装小插件 需要安装Visual Studio Team Foundation Server 2013 Pow ...

  9. TFS中工作项的定制- 字段功能定义

    参考,翻译此页面All FIELD XML Elements Reference(http://msdn.microsoft.com/en-us/library/ms194953.aspx) 对于每一 ...

随机推荐

  1. 常用js或jq效果汇总

    实时监控输入框改变    $('#password').bind('input propertychange', function() {}

  2. Web前端开发基础 第四课(CSS元素分类)

    元素分类 在讲解CSS布局之前,我们需要提前知道一些知识,在CSS中,html中的标签元素大体被分为三种不同的类型:块状元素.内联元素(又叫行内元素)和内联块状元素. 常用的块状元素有: <di ...

  3. 修改cms 管理栏目路径

    Foosun.SQLServerDAL.Pagination throw new Exception("没有找到SQL");

  4. Python数据类型(3)

    字符串(str):单引号''.双引号""嵌套使用,可以不使用转义字符:'abc"dd"ef'."acc'd'12",字符串不可以是多行的三单 ...

  5. IOS第14天(1,UITabBarController的基本的使用)

    **************HMAppDelegate.m - (BOOL)application:(UIApplication *)application didFinishLaunchingWit ...

  6. Minimum no. of iterations to pass information to all nodes in the tree

    Given a very large n-ary tree. Where the root node has some information which it wants to pass to al ...

  7. GFS文件系统和在RedHat Linux下的配置

    GFS的全称是Google file System,为了满足Google迅速增长的数据处理要求,Google设计并实现的Google文件系统(GFS).Google文件系统是一个可扩展的分布式文件系统 ...

  8. Population Mean

    Probability and Statistics > Moments > History and Terminology > Disciplinary Terminology & ...

  9. wpa supplicant 移植

    最近移植wifi,WIFI芯片使用rtl8723.在文件系统生成了设备节点.需要移植工具进行测试: iwconfig:没有密码的或者wep加密的wifi,使用iwconfig就已经够用. wpa_su ...

  10. 【转】给npm设置代理

    可以运行如下两句命令设置代理,注意代理的地址改为自己实际可用的代理. npm config set proxy=http://127.0.0.1:8087 npm config set registr ...