• 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中看上去合情合理。

    image

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

    如何删除一个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)找

    image

    其类为: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其实可以随便填,但是我还是使用了默认的值。

    大功告成:

    image

     

     

     

     

     


  • 相关阅读:
    Mac上Homebrew的安装
    Nodejs全局/缓存路径配置
    Windows 10文件夹Shirt+鼠标右键出现“在此处打开命令窗口”
    CentOS 7上VNCServer的安装使用
    照葫芦画瓢系列之Java --- eclipse下使用maven创建Struts 2项目
    照葫芦画瓢系列之Java --- Maven的集成和使用
    关于集合常见面试问题
    Linux 性能分析大概步骤
    java中的scanner用法
    分享一个内存溢出的问题
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3280168.html
Copyright © 2020-2023  润新知