在Eclipse插件开发中实现标准Search功能(转)

引言:


Eclipse中Search功能很cool,如java\file search,功能强大,而且对搜索结果的管理很酷,可以查看上一个、下一个结果、删除一个结果,打开一个结果文件到预定义的编辑器,提供对搜索历史的查看和重新搜索。其实这Search是一个标准的功能,有对应的扩展点。扩展这些扩展点,继承相应的类,实现相应的接口,你也能获得这么cool的Eclipse插件UI。

这里以Spring IDE Bean Search为例,介绍应扩展之处和其中的关键点。搜索页的类名为BeanSearchPage, 搜索结果页的类名为BeanSearchResultPage

一、需要扩展的扩展点

1. 应该在org.eclipse.search.menu/dialogGroup中加一个action,以在java\file search 的旁边加一Tab, 显示你的搜索页BeanSearchPage。
2. 扩展org.eclipse.search.searchPages,定制自己的搜索页BeanSearchPage
3. 扩展org.eclipse.search.searchResultViewPages,定制自己的搜索结果页BeanSearchResultPage

二、搜索页(BeanSearchPage)

1. BeanSearchPage继承DialogPage,实现ISearchPage,创建自己的搜索条件UI
2. 在BeanSearchPage的performAction方法中激活搜索结果view, 并在背景进程中执行search过程,将搜索页和搜索结果页连接起来的关键一步。
public boolean performAction() {
NewSearchUI.activateSearchResultView();

ISearchQuery query = new BeanSearchQuery();
NewSearchUI.runQueryInBackground(query);
return true;

}

3. BeanSearchQuery要实现ISearchQuery接口
public class BeanSearchQuery implements ISearchQuery {
final BeanSearchResult result = (BeanSearchResult) getSearchResult();
public IStatus run(IProgressMonitor monitor) {
Match match = new Match(); //将Search结果加到Match中来,这保证了搜索结果view中很多很cool的按钮能用哦。
result.addMatch(match); //将Match加到result中来。
}
}

4. BeanSearchResult要继承AbstractTextSearchResult,并实现IEditorMatchAdapter和IFileMatchAdapter接口
public class BeanSearchResult extends AbstractTextSearchResult implements
IEditorMatchAdapter, IFileMatchAdapter {
}

由以上代码可见BeanSearchPage、BeanSearchQuery和BeanSearchResult之间的关系。

三、搜索结果页(BeanSearchResultPage)

1. 需要扩展AbstractTextSearchViewPage抽象类,同时实现ISearchResultPage接口
2. 在BeanSearchResultPage的构造器中指定用TreeViewer还是TableViewer。FLAG_LAYOUT_TREE代表TreeViewer,
FLAG_LAYOUT_FLAT代表TableViewer。


未完待续……
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值