本文介绍如何扩展/定制 Eclipse 的搜索插件 org.eclipse.search(后面附实例)
资源查找是 Eclipse 的一个重要功能。可是,当我们做RCP开发时,Eclipse 搜索功能不一定适合个性化的需求,这是我们就需要扩展 Eclipse 的搜索插件 org.eclipse.search。
这里以Spring IDE Bean Search为例,介绍应扩展之处和其中的关键点。搜索页的类名为BeanSearchPage, 搜索结果页的类名为BeanSearchResultPage
1. 菜单加入显示搜索页(这是入口)
方法一:在org.eclipse.search.menu/dialogGroup中加一个action,以在java\file search 的旁边加一 Tab , 显示你的搜索页 MyBeanSearchPage。
方法二:菜单加入高级查找和替换。如图
2. 扩展org.eclipse.search.searchPages,定制自己的搜索页 MyBeanSearchPage
public class MyBeanSearchPage extends DialogPage implements ISearchPage { private Text txtDirectory; private ISearchPageContainer fContainer; private Text txtPath; public MyBeanSearchPage() { } @Override public void createControl(Composite parent) { initializeDialogUnits(parent); Composite composite = new Composite(parent, SWT.NONE); composite.setFont(parent.getFont()); GridLayout gridLayout = new GridLayout(3, false); composite.setLayout(gridLayout); Label lblNewLabel = new Label(composite, SWT.NONE); lblNewLabel.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1)); lblNewLabel.setText("搜索关键字"); txtDirectory = new Text(composite, SWT.BORDER); txtDirectory.setText("directory"); txtDirectory.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); setControl(composite); new Label(composite, SWT.NONE); Label lblNewLabel_1 = new Label(composite, SWT.NONE); lblNewLabel_1.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1)); lblNewLabel_1.setText("目录路径"); txtPath = new Text(composite, SWT.BORDER); txtPath.setText("E:\\yucheng\\bsp\\trunk\\runtime-BankITIDE.product\\HelloBSP\\HelloWorld\\HelloCommu\\Hello\\input\\pcs"); txtPath.setEditable(false); txtPath.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); Button btnNewButton = new Button(composite, SWT.NONE); btnNewButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { DirectoryDialog directoryDialog = new DirectoryDialog( getShell()); directoryDialog.setText("选择目录路径"); String directoryPath = directoryDialog.open(); txtPath.setText(directoryPath); } }); btnNewButton.setText("选择目录路径"); } @Override public boolean performAction() { NewSearchUI.activateSearchResultView(); MyBeanSearchQuery myBeanSearchQuery = new MyBeanSearchQuery(); myBeanSearchQuery.setKeyword(txtDirectory.getText()); myBeanSearchQuery.setDirectoryPath(txtPath.getText()); NewSearchUI.runQueryInBackground(myBeanSearchQuery); return true; } @Override public void setContainer(ISearchPageContainer container) { fContainer = container; } }
3. 扩展org.eclipse.search.searchResultViewPages,定制自己的搜索结果页BeanSearchResultPage
public class MySearchResultPage extends AbstractTextSearchViewPage { private MyFileTreeContentProvider fContentProvider; @Override protected void elementsChanged(Object[] objects) { if (fContentProvider != null) { fContentProvider.elementsChanged(objects); } } @Override protected void clear() { if (fContentProvider != null) fContentProvider.clear(); } @Override protected void configureTreeViewer(TreeViewer viewer) { viewer.setUseHashlookup(true); MyFileLabelProvider myFileLabelProvider = new MyFileLabelProvider(); viewer.setLabelProvider(myFileLabelProvider); viewer.setContentProvider(new MyFileTreeContentProvider(viewer)); fContentProvider = (MyFileTreeContentProvider) viewer .getContentProvider(); this.setElementLimit(50); } @Override protected void configureTableViewer(TableViewer viewer) { // TODO Auto-generated method stub } }
2和3的扩展点
4. 此外,还用到的相关接口,详见附件的插件工程
ISearchQuery.java,搜索的入口
Match.java,结果集
NewSearchUI.java,UI启动类
5. 运行
搜索输入界面
搜索结果显示界面
6. 附件是一个简单的示例。
相关推荐
Eclipse RCP支持多编辑器实例,可以在同一工作空间中同时打开多个编辑器。 5. **透视图(Perspective)**:透视图是工作台的布局,它定义了哪些视图和编辑器在工作台上可见以及它们的位置。开发者可以创建不同的...
Eclipse RCP (Rich Client Platform) 是一个框架,允许开发者构建高度可定制和可扩展的桌面应用程序。本教程是针对Eclipse 3.6版本的,提供了一个详细的学习路径,适合初学者入门。教程内容涵盖从基础到进阶的多个...
3. 构建RCP应用:安装Eclipse RCP插件,创建RCP项目,设计UI界面,实现事件监听和业务逻辑。 4. 使用JFreeChart:导入JFreeChart库,根据数据生成图表,将其嵌入到RCP应用的视图中。 5. 测试与运行:确保所有组件...
在这个"属性编辑器实例"中,我们将深入探讨如何在Eclipse RCP环境中实现属性编辑器。 属性编辑器是Eclipse RCP中的一个重要组成部分,它允许用户查看和修改对象的属性值。这些对象可以是程序中的数据模型、工作台...
RCP基于插件模型,每个功能模块都可以作为一个独立的插件,这使得RCP具有高度的可扩展性和灵活性。在RCP应用中,界面布局通常由多个组件构成,如视图(View)、编辑器(Editor)、透视图(Perspective)等。 视图是...
本文将深入探讨Eclipse RCP(Rich Client Platform)编辑器实例的项目代码,这是Eclipse插件开发中的一个重要组成部分。RCP是Eclipse框架提供的一种用于构建桌面应用程序的平台,它允许开发者利用Eclipse的强大功能...
本项目"rcp editor实例的项目代码2"是针对Eclipse插件开发的一个实战案例,旨在帮助开发者了解和掌握如何在Eclipse RCP环境中实现自定义编辑器。 首先,我们需要理解Eclipse插件开发的基本概念。Eclipse是一个开放...
- **特点**: RCP 支持高度可定制的用户界面,并且能够轻松地添加新功能而不需重启应用。 - **优势**: 利用Eclipse平台现有的基础设施(如UI组件、命令架构等),使得开发者可以快速构建出高质量的应用程序。 **1.2 ...
### Eclipse RCP插件开发详解 #### 一、Eclipse RCP概述 Eclipse RCP (Rich Client Platform) 是一种基于Java技术构建的框架,用于开发功能丰富的桌面应用程序。它利用了Eclipse平台的核心组件,如工作台...
Eclipse RCP是Eclipse IDE的一部分,它提供了一个框架,使得开发者可以构建功能丰富的、可定制的桌面应用程序。以下是对该书可能涉及的知识点的详细阐述: 1. **Eclipse RCP基础**:首先,书中会介绍Eclipse RCP的...
Eclipse 插件实例01是一个基于Eclipse RCP(Rich Client Platform)开发的应用程序,展示了如何在Eclipse环境中创建和使用自定义插件。Eclipse RCP是Eclipse IDE的核心组成部分,它允许开发者构建功能丰富的桌面应用...
它基于插件模型,允许开发者通过添加或移除插件来构建和定制应用。核心组件包括Workbench、Perspective、View、Editor和Part,这些组件协同工作以创建用户界面。Workbench是整个应用的容器,Perspective是视图的组织...
Eclipse Rich Client Platform (RCP) 是一个强大的框架,用于构建桌面应用程序,它利用Eclipse的架构和插件系统,使得开发者能够构建高度可定制和可扩展的应用程序。RCP允许开发者复用Eclipse已经提供的大量功能,如...
RCP基于插件模型,每个功能模块都是一个独立的插件,通过插件间的服务发现和通信机制协同工作。这使得CRM系统的各个组件能够独立开发和升级,降低了维护成本。 在构建CRM系统时,我们通常会涉及以下几个关键模块: ...
- **插件(Plugin)**: Eclipse RCP 应用由多个插件组成,每个插件可以提供特定的功能或服务。 - **扩展(Extension)**: 插件可以通过定义扩展来修改或增强其他插件的行为。 - **扩展点(Extension Point)**: 扩展点是由...
此外,你还将学习如何利用Eclipse的强大的插件系统来增强开发环境,为自己的工作流定制工具。一旦掌握了基础,你就可以继续探索更复杂的插件开发,如使用PDE(Plug-in Development Environment)工具集、使用RCP...