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></activity> <activityPatternBinding activityId=”com.balabalaactivityPatternBinding1″ isEqualityPattern=”true” pattern=”org\.eclipse\.jdt\.ui/org\.eclipse\.jdt\.ui\.JavaSearchPage”> </activityPatternBinding></extension>

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

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。

如果你不出去走走,你就会以为这就是世界。

RCP:如何移除Search对话框中不需要的项

相关文章:

你感兴趣的文章:

标签云: