zoukankan      html  css  js  c++  java
  • RCP:如何移除Search对话框中不需要的项

    前言

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

    正文

    Search Dialog中可能出现一些你不需要的项,比如“Java Search”,这个项是org.eclipse.jdt.ui贡献的,如果你因为某些需要引用了这个包,比如我需要用到这个包中的org.eclipse.jdt.ui.action.MoveAction,用来在Project Explorer右键菜单添加Move。 那么“Java Search”就会被贡献到Search Dialog中,我们有两个办法去除这些不需要的项:

    1,在plugin.xml中添加org.eclipse.ui.activities扩展点来过滤。我读过源代码,通过activities应该是可以生效的,但是我没有成功,可能还是匹配符不对。贴出我的代码,只供参考:

    <extension
           point="org.eclipse.ui.activities">
           <activity
        id="com.balabala.JavaSearchPage"
            name="DisableJavaSearch"></activity>
        <activityPatternBinding
              activityId="com.balabalaactivityPatternBinding1"
              isEqualityPattern="true"
              pattern="org.eclipse.jdt.ui/org.eclipse.jdt.ui.JavaSearchPage">
        </activityPatternBinding>
    </extension>

    有兴趣的可以参考以下连接自己研究:

    http://stackoverflow.com/questions/11188145/how-to-remove-java-search-entry-from-search-group-icon-in-eclipse-pde-using-ac/13293606#13293606

    2,通过继承org.eclipse.search.internal.ui.SearchDialog来去除多余的项,重写createPageArea方法,把TabFolder中不需要的TabItem移除掉。

    CustomSearchDialog.java:

    protected Control createPageArea(Composite parent) { 
        Control control = super.createPageArea(parent); 
        Composite composite = (Composite)control; 
        Control[] controls = composite.getChildren(); 
        for(Control c: controls) 
        { 
            if(c instanceof TabFolder) 
            { 
                TabFolder tabFolder =(TabFolder)c; 
                for(int i=tabFolder.getItemCount()-1;i>=0;i--) 
                { 
                    TabItem item = tabFolder.getItem(i); 
                    if(!item.getText().equals("File Search")) 
                    { 
                        item.dispose(); 
                    } 
                } 
            } 
        } 
        return control; 
    } 

    然后,需要继承org.eclipse.search.internal.ui.OpenSearchDialogAction, 重写run方法:

    CustomSearchDialogAction.java:

    	public void run() {
    		if (workbenchWindow.getActivePage() == null) {
    			SearchPlugin.beep();
    			return;
    		}
    		CustomSearchDialog dialog= new CustomSearchDialog(workbenchWindow, null);
    		dialog.open();
    	}

    最后在Menu和toolbar中调用CustomSearchDialogAction。

  • 相关阅读:
    Java学习第十五章 之 Map、可变参数、Collections
    Java第十四章 之 List、Set
    Java学习第十三章 之 常用API
    通过shell终端上传下载文件
    javamail邮件发送
    linux防火墙添加例外端口shell脚本
    MySQL批量更新
    MySQL返回列名
    发现一个有意思的东西
    struts2,action方法自动执行两次
  • 原文地址:https://www.cnblogs.com/Binhua-Liu/p/3266672.html
Copyright © 2011-2022 走看看