`
eclipsesbs
  • 浏览: 20181 次
社区版块
存档分类
最新评论

第十二天:别都长的和Eclipse IDE一个样

阅读更多

作者:梁祺 (eclipsesbs@gmail.com)

来自:http://www.benisoft.net/day13/index.html

 

我们通常说到Eclipse,都会想到Eclipse Java集成开发环境(IDE),或者其他基于Eclipse的集成开发环境。 其实,Eclipse也允许用户开发普通应用程序,这就是Rich Client Platform也称之为RCP所提供的。 再多说一句,Eclipse还允许用户开发命令行应用程序,称之为Headless,这个我们以后再谈。 开发普通应用程序和开发IDE并没有什么不同,都需要开发plug-in,同样有透视图(Perspective), 视图(View)和编辑器(Editor)。通过额外开发一个RCP plug-in,我们很容易将原来集成在IDE中运行的plug-in 转变为一个独立的应用程序。我们接下来就将Itinerary开发一个成RCP应用,让它不再长得和Java集成开发环境似的。

RCP plug-in本身也是一个plug-in,所以我们先创建一个plug-in项目。在主菜单选择“File -> New -> Others”, 在向导对话框中选择“Plug-in Project”。命名为“eclipse.tutorial.itinerary.rcp”,点击Next按钮。在下一页, 我们会看到Rich Client Application,Would you like to create a rich client application? 选择Yes, 点击Next按钮。

Eclipse提供四个RCP模板,我们选最简单的Hello RCP。点击Next按钮。

将应用的窗口标题改为“Itinerary”,其他不变,点击Finish按钮。项目创建完成。

在项目里,双击plugin.xml在Plugin Editor中打开,来到Extensions子页。Hello RCP模板扩展了两个扩展点。

  • org.eclipse.core.runtime.applications
  • org.eclipse.ui.perspectives

在第一个扩展中,定义了一个application,并指定了应用的实现类eclipse.tutorial.itinerary.rcp.Application。 顾名思义,我们可以把这个类看做是我们这个应用程序的Java类。它实现了IApplication接口, 并只有两个方法start(...)和stop(),分别负责启动和清理资源。 大多数情况下,我们都直接使用Eclipse为我们生成的这个类,很少会去修改它。如果你有一些应用级的资源需要创建和释放, 可以考虑放在这里。

Hello RCP模板还生成了三个辅助类,用于配置RCP应用程序的外观。在Eclipse的窗口架构里,是区分Workbench 和Workbench Window这两个概念,如果你选择“Window -> New Window”,Eclipse会再生成一个窗口,所以, Workbench和Workbench Window是一对多的关系。

  • ApplicationWorkbenchAdvisor:配置Workbench,指定ApplicationWorkbenchWindowAdvisor等。
  • ApplicationWorkbenchWindowAdvisor:配置Workbench Window,比如窗口初始大小,指定ApplicationActionBarAdvisor等。
  • ApplicationActionBarAdvisor:配置Workbench Window的主菜单,工具栏,状态栏等。

因为RCP需要自己创建主菜单,我们需要对ApplicationActionBarAdvisor做一些修改。这个代码可以参考 org.eclipse.ui.internal.ide.WorkbenchActionBuilder,仿照它创建需要的菜单就可以了。 在Itinerary,我们只演示主菜单,工具栏可以参考WorkbenchActionBuilder。 主菜单上需要File菜单,Itinerary菜单,和Help菜单。

  • File菜单下包含Open,Save,SaveAs,Exit就可以。整个菜单需要手工创建。
  • Itinerary菜单我们在Itinerary plug-in里已经有了,它是挂到主菜单的ID为"additions"的位置。 所以我们在主菜单上放一个GroupMarker,其ID为"additions"。GroupMarker我们前面提到过,它是用来占位的, 其他plug-in可以在它的位置添加自己的菜单,只要Action的属性path为"additions"就可以了。 “additions”这个值是Eclipse的约定,遇到类似情况,推荐使用这个值。
  • 最后是Help餐单,包含Help Contents。这个菜单也需要手工创建。
    protected void fillMenuBar(IMenuManager menuBar) {
        menuBar.add(createFileMenu());
        menuBar.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
        menuBar.add(createHelpMenu());
    }
    
    private MenuManager createFileMenu() {
        MenuManager menu = new MenuManager("File", IWorkbenchActionConstants.M_FILE);
        menu.add(new GroupMarker(IWorkbenchActionConstants.NEW_EXT));
        menu.add(new Separator());

        menu.add(closeAction);
        menu.add(new Separator());
        menu.add(saveAction);
        menu.add(saveAsAction);

        // If we're on OS X we shouldn't show this command in the File menu. It
        // should be invisible to the user. However, we should not remove it -
        // the carbon UI code will do a search through our menu structure
        // looking for it when Cmd-Q is invoked (or Quit is chosen from the
        // application menu.
        ActionContributionItem quitItem = new ActionContributionItem(quitAction);
        quitItem.setVisible(!Util.isMac());
        menu.add(quitItem);
        return menu;
    }

    private MenuManager createHelpMenu() {
      ...
    }

在第二个扩展中,定义了一个透视图(Perspective),将它的名字改为“Itinerary”。 它也指定了Perspective的实现类eclipse.tutorial.itinerary.rcp.Perspective。

Perspective为和任务相关的一些视图指定缺省的位置,用户可以根据需要关掉一些视图,或者将视图移动到其他为止。 一般在Editor的左侧和右侧放置纵向展开的视图,比如展示项目的目录结构,在Editor的下方放置横向展开的视图, 比如Console。另外一个规律是重要和展示全局的视图放在左侧,次要的和展示局部的视图放在右侧。

    public void createInitialLayout(IPageLayout layout) {
        // Get the editor area.
        String editorArea = layout.getEditorArea();

        // Top left: Property view placeholder
        IFolderLayout topLeft = layout.createFolder("topLeft",
                IPageLayout.LEFT, 0.25f, editorArea);
        topLeft.addView(IPageLayout.ID_PROP_SHEET);
    }

接下来怎么启动RCP呢?我们测试或者调试代码时启动的Eclipse应用缺省都是org.eclipse.sdk.ide,所以我们看到的Eclipse 长得就是继承开发环境的模样。这个启动应用是可以选择的, 相当于Java程序开发时你选择哪个Java类的main方法启动(我们知道Java程序是可以有若干个Java类都定义有main方法的, 用户可以选择启动哪个)。在启动RCP时,我们需要指定一下Eclipse应用为RCP应用。 选择“Run -> Run Configurations”,得到下面这个对话框。 把Program to Run改成“Run an application”,并指定为“eclipse.tutorial.itinerary.rcp.application”。

我们并不需要载入所有的plug-in,只要载入Itinerary的plug-in以及必要的Eclipse的plug-in就可以了。 这个我们可以在Plug-ins子页中选择。进入Plug-ins子页。

  • 将Launch with改为plug-ins selected below only
  • 点击Deselect All按钮清除所有选中的plug-in
  • 选择Itinerary的3个plug-in
    • eclipse.tutorial.itinerary
    • eclipse.tutorial.itinerary.help
    • eclipse.tutorial.itinerary.rcp
  • 选择Eclipse帮助的4个plug-in,它们是Eclipse帮助所必须的。
    • org.eclipse.help
    • org.eclipse.help.base
    • org.eclipse.help.ui
    • org.eclipse.help.webapp
  • 再点击Add Required Plug-ins按钮,Eclipse会分析plug-in之间的依赖关系,将所以必须的plug-in选中
  • 保险起见,可以点击Validate Plug-ins按钮确认一下。

接下来,我们就可以点击Run按钮,看一下RCP启动起来是什么样的。

这样,Itinerary就比较像一个简单的应用程序了,去除了和Itinerary功能无关的菜单和视图,发布的时候, 不必要的plug-in也不会包含在内。Itinerary的主要功能仍然在plug-in里完成,RCP plug-in主要是提供了 一个外壳,你可以完全控制这个外壳的外观,就和开发一个原生窗口应用一样。

分享到:
评论

相关推荐

    eclipse-jee-2020-12-R-win32-x86_64

    《Eclipse IDE for Java开发者:深入解析eclipse-jee-2020-12-R-win32-x86_64》 Eclipse IDE,全称集成开发环境(Integrated Development Environment),是全球广泛使用的开源Java开发工具。该版本"eclipse-jee-...

    eclipse-java-2020-12-R-win32-x86_64_2

    标题 "eclipse-java-2020-12-R-win32-x86_64_2" 暗示了这是一个针对Java开发者的Eclipse IDE的特定版本,发布于2020年12月,适用于Windows 32位和64位系统。这个版本可能是Eclipse IDE的第二个更新迭代。Eclipse是...

    eclipse juno版本

    Eclipse Juno是Eclipse IDE的一个重要版本,发布于2012年,它代表了Eclipse 4.2系列。这个版本引入了一系列新特性和改进,为Java开发者提供了更高效、更现代化的开发环境。以下是对Eclipse Juno版本及其相关知识点的...

    eclipse配置(安装)swing插件

    - 该链接提供了一个安装程序,能够帮助用户根据需求自动选择合适的Eclipse版本及组件。 #### 二、Swing插件配置 Swing是Java的一种GUI工具包,用于创建桌面应用程序。为了更方便地在Eclipse中开发Swing应用,可以...

    eclipse 黑色主题插件 绿色版

    总之,"eclipse 黑色主题插件 绿色版"是一个针对Eclipse老版本的优化解决方案,旨在提供一个更加舒适的工作环境,减少长时间编程带来的视觉压力。通过简单的配置步骤,用户可以轻松地将他们的Eclipse转换为深色界面...

    eclipse5.5 注册码

    Eclipse 5.5通常指的是一个特定版本的Eclipse IDE。不过需要注意的是,Eclipse官方并未直接发布过5.5这个版本号。Eclipse的版本命名通常采用年月的形式,例如2020-06、2020-12等。因此,如果提到“Eclipse 5.5”,这...

    精通Eclipse(第二版9-23章)光盘源代码

    《精通Eclipse(第二版9-23章)光盘源代码》涵盖了Eclipse IDE的高级使用技巧和开发实践,是深入理解并掌握Eclipse这一强大开发工具的重要资源。源代码包含了从第9章到第23章的全部示例项目,旨在帮助读者通过实际操作...

    eclipse-java-2022-06-R-win32-x86_64.zip

    "eclipse-java"着重强调了这个软件与Java编程语言的关联,而“eclipse”则再次提醒我们这是一个Eclipse IDE的版本。 【压缩包子文件的文件名称列表】中的“eclipse”可能是指解压后的Eclipse安装目录,通常包含运行...

    eclipse-java-2021-12-R-linux-gtk-x86_64.tar.gz

    Eclipse IDE for Java Developers 是一款广泛使用的开源集成开发环境(IDE),特别针对Java编程语言进行了优化。这个版本的Eclipse,即"eclipse-java-2021-12-R-linux-gtk-x86_64.tar.gz",是专为64位Linux操作系统...

    Eclipse.Plug-ins.Third Edition(PDF)

    3. **插件结构**:每个Eclipse插件都由一个或多个扩展点(Extension Point)和扩展(Extension)组成。扩展点定义了插件可以插入的位置,而扩展则是插件提供的具体功能。理解如何定义和使用这两个概念是开发插件的...

    Eclipse插件开发笔记—PDF—带目录

    第10章 开发 第一个插件项目 第11章 操作(Actions) 第12章 视图(Views) 第13章 编辑器(Editors) 第14章 透视图(Perspectives) 第15章 对话框和向导(DialogsWizards) 第16章 首选项(Preferences) 第17章 帮助内容...

    Eclipse 4.10 for Windows x64

    Eclipse 4.10,又被称为Eclipse 2018-12,是Eclipse集成开发环境(IDE)的一个重要版本,专为Windows x64操作系统设计。这个版本的发布标志着Eclipse社区对软件开发工具的持续改进和创新,以适应不断变化的技术需求...

    eclipse-jee-2020-12-R-中文版(整合中文包).zip

    Eclipse JEE 2020-12 R 是一个强大的集成开发环境(IDE),专为Java企业级应用开发设计。这个版本是Eclipse的年度发布,集成了最新的技术和优化,旨在提供更加稳定、高效的开发体验。"中文版"意味着该版本已经包含了...

    Eclipse插件开发 第1篇到第4篇 开发基础 核心技术 高级进阶 综合实例 eclipse 插件安装方法

    Eclipse插件开发是软件开发领域中的一个重要环节,它允许开发者通过扩展Eclipse集成开发环境(IDE)的功能来提升工作效率。本系列涵盖了从基础到高级的全方面教程,旨在帮助开发者掌握Eclipse插件开发的核心技术和实践...

    eclipse中文帮助文档

    Eclipse是一款广泛使用的开源集成开发环境(IDE),尤其在Java开发者中非常流行。这款强大的工具提供了丰富的功能,包括代码编辑、构建自动化、调试、版本控制等。Eclipse的中文帮助文档是开发者学习和掌握Eclipse...

    Eclipse4.6.2

    通过上述介绍,我们可以看出Eclipse 4.6.2是一个全面升级的版本,无论你是Java开发者还是C/C++开发者,或者是其他语言的爱好者,都能在其中找到适合自己的工具和提升。文件列表中的"eclipse"可能指的是Eclipse IDE的...

    eclipse-java-2019-03-R.rar

    12. **Eclipse Marketplace**:Eclipse有一个在线的Marketplace,用户可以在其中搜索并安装各种第三方插件,进一步扩展IDE的功能。 总之,"eclipse-java-2019-03-R.rar" 提供的是一个专为Java开发设计的Eclipse版本...

    eclipse none 3 part3

    "Eclipse none 3 part3"可能指的是一个关于Eclipse的系列教程或者项目的第三部分,其中"none"可能表示该部分特别关注的是Eclipse的基础功能或者非特定插件的使用。由于没有具体的描述,我们将根据Eclipse的一般特性...

    eclipse 2020版本

    Eclipse是一款广受欢迎的开源集成开发环境(IDE),主要用于Java编程,但同时也支持其他编程语言,如C++, Python等。2020版本的Eclipse引入了多项改进和新特性,旨在提升开发者的工作效率和代码质量。以下是关于...

    Eclipse Rich Client Platform Designing, Coding, and Packaging.chm

    4. **构建第一个RCP应用**:通过一个简单的示例,引导读者创建第一个Eclipse RCP应用,涉及工作台(Workbench)、视图(View)、编辑器(Editor)等基本元素。 5. **UI设计**:讲解SWT(Standard Widget Toolkit)...

Global site tag (gtag.js) - Google Analytics