EGL项目创建向导
Introduction
开始EGL编程的第一件事就是创建一个新的EGL项目。在这篇文章中我们将会介绍创建EGL项目的几个方面
1EGL项目模板。
2如何创建各种EGL项目
3如何扩展EGL项目向导以创建自定义的项目类型
请注意:如果您只对使用EDT感兴趣而不想扩展EDT,请关注于第1和第2节。
EDT中有4种项目模板(templates):
1基本项目(Basicproject): 这种项目用于开发EGL程序(programe),服务(service)和库文件(libraries)。 您可以为基本项目配置多种目标语言。
典型用途:批处理(命令行)程序,通用库和记录部件(Record),WebService,数据存取服务。
2Web 2.0 客户端应用程序项目: 这种项目用于开发富客户端(Rich UI)网络程序。EGL RichUI代码生成JavaScript和HTML。程序会部署到网络应用服务器,例如Apache Tomcat等。
典型用途:已有服务的网络客户端,mashup程序
目标语言:JavaScript
3带服务的Web 2.0 客户端程序项目: 这种项目用于开发富客户端的网络应用程序以及相关的可从标准浏览器访问的服务。服务的代码将生成Java,而EGL Rich UI代码将生成JavaScript和HTML。应用程序会被部署到网络应用服务器中,例如Apache Tomcat等。
典型用途:端到端(End-to-end)的客户端/服务端程序
目标语言:Java,JavaScript
4Hello world项目: 这是一个简单的例程,用于展示如何使用EGL Rich UI网络程序调用EGL服务。
除了内置的项目模板,开发者可以添加自己的自定义项目类型并扩展新建项目向导。Hello World项目就是一个展示EGL项目类型的扩展的例子。
1在EGL视图中,点击菜单栏上的File > New > EGL Project。新建项目向导就会打开。
2输入如下信息:
§项目名称:这是必填项,必须填入符合EGL规范的字符串。
§如果您希望项目创建在Eclipse的工作空间中,请确保 “Use the default location for the project”选项处于选中状态。
选择您希望使用的模板。选中一个模板,在右边的面板中会显示相应的描述。您选中的面板会被保存,这样当您再次创建新的项目时,上次选中的面板会默认选中。3点击“Finish”以创建该项目。您也可以点击“Next”进行其他设置。每个项目模板都有不同的设置页,下面一节将对这些设置页进行介绍。如果您选中的是Hello World模板,将不会有附加的设置页,请直接点击“Finish”完成新项目的创建。
如果您选中基本项目模板并点击“Next”:
1进入EGL设置页面,设置编译器(Compiler)和生成器(Generator)的设置。详细介绍请参考EDT:Compiler SettingsIntroduction值得注意的是,这些选项在程序创建后仍然可以更改。
§编译器: 您可以指定新建的项目使用的编译器。默认的编译器是EDT编译器。开发者扩展的自定义编译器也会显示在这里。
§默认的生成器设置与工作空间的生成器设置相同。所以最好能将您常用的生成器设置保存到工作空间设置中。
§您可以单独设置本项目的生成器,请确保"Override the generation settings from workspacepreferences" 选中,并选择您需要的生成器。
§选中生成器,下方将有一个配置页,用于设置该生成器的生成目录和参数。
点击“Next”, 进入EGL 构建路径设置页面。2在EGL构建路径页面中,您可以指定新建的项目所依赖的项目。这些设置也可以在程序创建完成后再更改
在“Projects”标签页中, 工作空间中的其他EGL项目会显示在页面中,选中的项目将被添加到新建的项目的构建路径中。在“Order and Export”标签页页中,可以对构建路径中的项目重新排序并且可以选中需要暴露的项目。选中的项目将变成新建项目的引用项目,这样其他依赖于新建的项目将同时依赖于它的引用项目而无须重复配置。
3 点击“Finish”,项目创建成功,我们可以在 “Project Explorer”中找到新的项目。项目中包含EGLSource文件夹和.egldd文件(EGL部署描述符文件)。
创建Web 2.0客户端项目
如果您选中Web 2.0 客户端应用程序模板然后点击“Next”
1 进入Web 2.0设置页面,指定下列信息:
§ 基本包名(BasePackage)(可选)。Web 2.0 项目包含一个默认的包“client”。如果基本包非空,默认的包名将变成#基本包名#.client。例如,基本包名是sample,那么默认的包名为sample.client.
Widget项目:EGL Rich UI中有两种内置的Widget项目:标准Widget项目和Dojo Widget项目,各包含数十个Widget。开发者扩展的Widget项目也会列在这个页面中。选中您需要使用的widget项目。§标准widget项目:“standard widgets and utilities” 默认选中并且不能去除。
§当项目被选中后,页面下方将会有项目的详细介绍。
§ 如果Widget项目有多个版本,您可以点击“Version”列以更换Widget项目的版本。例如,Dojo项目有本地版本和远程版本两种版本。§点击“Next”,进入EGL构建路径页面。
2EGL构建路径页面可以设置依赖的EGL项目,这个页面与基本程序中对应的页面相同。
3 点击“Finish”, 工作空间中将创建几个新项目,包括新的EGL项目以及选择的Widget项目。新建的项目中应当包含EGLSource 和WebContent 文件夹;EGLSource文件夹中包含了一个默认包 sample.client。
创建带服务的Web 2.0客户端项目
如果您选中带服务的Web 2.0客户端应用程序模板并点击“Next”
1 进入Web2.0 设置页面,可设置基本包名和widget项目。下面的截图中,我们选中了远程Dojo Widget项目以便展示如何使用不同版本的DojoWidget项目。2EGL构建路径页面可以设置依赖的EGL项目,这个页面与基本程序中对应的页面相同。
3点击“Finish”, 工作空间中将创建几个新项目,包括新的EGL项目以及选择的Widget项目。新建的项目中应当包含EGLSource 和WebContent 文件夹;EGLSource文件夹中包含了一个默认包 sample.client。
这种项目与Web 2.0客户端项目有如下区别:
§新建的项目中有3个默认包:client, common, server.
§Client包中用于包含Rich UI文件,例如RUI Handler或者RUI Widget文件,这个包只能生成JavaScript。
§Common包可存放通用的库文件,记录文件等。这个包可以生成Java 和JavaScript。
§Server包通常用于存放服务等相关文件。这个包可生成Java和JavaScript。
添加新的项目类型
EDT的扩展性包括语言和IDE层面。开发者可以扩展编译器,生成器以及IDE以实现自定义的语言特性。创建自定义的项目类型和新建项目向导就是扩展的例子。例如,您可能想创建一种新的项目模板使得新建的项目默认包含您的自定义widget项目,并且有两个以您的公司名字开头的默认包。您也可以在新的项目类型中添加默认的参数设置,创建默认的handler等。这一节中,我们将简要介绍如何创建新的项目类型。首先,您必须搭建好EDT的开发环境。请参考EDT:Developer's_Guide_to_Getting_Started_on_EDT 设置开发环境。
创建扩展点
项目模板在org.eclipse.edt.ide.ui插件中作为扩展点实现
<extension-point id="projectTemplates" name="EGL Project Templates" schema="schema/projectTemplates.exsd"/>
创建新的项目类型需要扩展这个扩展点。
1打开org.eclipse.edt.ide.rui插件project,用XML编辑器打开plugin.xml文件
§在</plugin>前面添加下列代码,以添加一个新的项目模板扩展
§category: 项目模板必须是"org.eclipse.edt.ide.ui.projects"
§default: 指定这个项目模板是否为默认项目类型
§description:这个项目类型的描述,将会显示在新建项目向导中。
§icon: 这个项目模板的图标,将会显示在新建项目向导中。
§id: 必须是唯一值
§name: 这个项目模板的名字,将会显示在新建项目向导中
§templateClass:包含项目创建时的逻辑的Java类
§wizardClass:可选项,一个Java类包含该项目模板的在新建项目向导中的设置页。
<extension point="org.eclipse.edt.ide.ui.projectTemplates"> <template category="org.eclipse.edt.ide.ui.projects" default="false" description="My Sample Project Template" icon="icons/templates/WebClientTemplate.gif" id="org.eclipse.edt.ide.ui.projects.sample" name="Sample Project" templateClass="org.eclipse.edt.ide.rui.internal.project.SampleProjectTemplate"> </template> </extension>
Create Operations
3 实现这个类。完整代码如下所示。这个类继承自带服务的Web2.0客户端程序模板,我们只是添加一个默认的基本包名。
package org.eclipse.edt.ide.rui.internal.project; import java.util.List; import org.eclipse.core.runtime.jobs.ISchedulingRule; import org.eclipse.edt.ide.ui.wizards.ProjectConfiguration; import org.eclipse.ui.actions.WorkspaceModifyOperation; public class SampleProjectTemplate extends WebClientWithServicesProjectTemplate { public SampleProjectTemplate() { super(); } @Override public List<WorkspaceModifyOperation> getOperations( ProjectConfiguration eglProjConfiguration, int eglFeatureMask, ISchedulingRule rule) { eglProjConfiguration.setBasePackageName("samples"); return super.getOperations(eglProjConfiguration, eglFeatureMask, rule); } }Use New Project Type
4用开发模式运行EDT。
5 打开新建EGL项目向导,新的项目类型出现在了项目模板列表里。