??xml version="1.0" encoding="utf-8" standalone="yes"?>
Q?/SPAN>1Q创?/SPAN>WorkbenchAdvisorc?/SPAN>
l 构徏 RCP 应用E序的核心Q务之一是创徏一个实现抽象类 org.eclipse.ui.application.WorkbenchAdvisor 的类
l WorkbenchAdvisor c负责配|,在执?/SPAN> RCP 应用E序时显C的工作?/SPAN>
package com.xqtu.google;
import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
import org.eclipse.ui.application.WorkbenchAdvisor;
import org.eclipse.swt.graphics.Point;
public class GoogleWorkbenchAdvisor extends WorkbenchAdvisor {
public String getInitialWindowPerspectiveId() {
return "com.xqtu.google.GooglePerspective";
}
public void preWindowOpen(IWorkbenchWindowConfigurer configurer) {
super.preWindowOpen(configurer);
configurer.setTitle("Google");
configurer.setInitialSize(new Point(300, 300));
configurer.setShowMenuBar(false);
configurer.setShowStatusLine(false);
configurer.setShowCoolBar(false);
}
}
l ?/SPAN>getInitialWindowPerspectiveId()Ҏ(gu)中,向新的工作台H口q回初始透视囄标识W?/SPAN>
l 增加preWindowOpen()Ҏ(gu)Q设|工作台的窗口标题和寸
Q?/SPAN>2Q创?/SPAN>Applicationc?/SPAN>
l 在执行应用程序之前,需要创Z?/SPAN> Application c,q与 Java cM?/SPAN>mainҎ(gu)cMQ??/SPAN>RCP应用E序的入口点
l 该类需要实?/SPAN>org.eclipse.core.runtime.IPlatformRunnable接口
package com.xqtu.google;
import org.eclipse.core.runtime.IPlatformRunnable;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.application.WorkbenchAdvisor;
public class GoogleApplication implements IPlatformRunnable {
public Object run(Object args) throws Exception {
WorkbenchAdvisor workbenchAdvisor = new GoogleWorkbenchAdvisor();
Display display = PlatformUI.createDisplay();
int returnCode = PlatformUI.createAndRunWorkbench(display,
workbenchAdvisor);
if (returnCode == PlatformUI.RETURN_RESTART) {
return IPlatformRunnable.EXIT_RESTART;
} else {
return IPlatformRunnable.EXIT_OK;
}
}
}
l 其中?/SPAN>run()Ҏ(gu)对大多数RCP 应用E序而言Q不需要定Ӟ重新使用可
l 如前面所C,需要在plugin.xml?/SPAN>org.eclipse.core.runtime.applications 扩展Ҏ(gu)定运行的Application c?/SPAN>
<extension
id="GoogleApplication"
point="org.eclipse.core.runtime.applications">
<application>
<run class="com.xqtu.google.GoogleApplication"/>
</application>
</extension>
Q?/SPAN>3Q运行应用程?/SPAN>
l Run > Run...
l ?/SPAN>Configurations列表中选择Run-time WorkbenchQƈ点击 New 按钮
l ?/SPAN>Name域中键入Google
l ?/SPAN>Arguments中Q?/SPAN>Run an application下拉框中选择Google.GoogleApplication
l 点击Plug-ins,选择Choose plug-ins and fragments to launch from the list
l 点击Deselect All按钮
l 选中Workspace Plug-ins选项包含Google的选择
l 点击Add Required Plug-ins按钮,自动包含执行应用E序必需的插?/SPAN>
l 点击Apply按钮
l 点击Run按钮来执行该应用E序
l 如果正确q行了所有配|的话,应该昄一个标题ؓ(f)?/SPAN>Google?/SPAN>的窗口,q是一个普通工作台框架
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=79401
l File > Export...
l 从导出选项的列表中选择Deployable plug-ins and fragmentsQ点?/SPAN> Next按钮
l 选中Google插g
l ?/SPAN>Deploy as下拉框中选择a directory structure
l 点击Browse按钮Q选择一个导Z|?/SPAN>
l 点击Finish按钮完成导出
Q?/SPAN>2Q复刉要的插g?/SPAN>jar文g
l Eclipse 3.0 没有提供需要的相关插g?/SPAN>JAR文g复制到导出目录的工具Q因此:(x)
l ?/SPAN>Eclipse 3.0的根目录?/SPAN>startup.jar复制到导出目录的根目录中?/SPAN>
l ?/SPAN>Eclipse 3.0?/SPAN>plugins目录下列目录复制到导出目录?/SPAN>plugins目录中:(x)
Ø org.eclipse.core.expressions_3.0.0
Ø org.eclipse.core.runtime_3.0.0
Ø org.eclipse.help_3.0.0
Ø org.eclipse.jface_3.0.0
Ø org.eclipse.osgi.services_3.0.0
Ø org.eclipse.osgi.util_3.0.0
Ø org.eclipse.osgi_3.0.0
Ø org.eclipse.swt.win32_3.0.0
Ø org.eclipse.swt_3.0.0
Ø org.eclipse.ui.workbench_3.0.0
Ø org.eclipse.ui_3.0.0
Ø org.eclipse.update.configurator_3.0.0
Q?/SPAN>3Q测试程?/SPAN>
l 创徏startup.batQ包含下面内容:(x)
java -cp startup.jar org.eclipse.core.launcher.Main
-application Google.GoogleApplication
注意Q如果机器上装了多种JDK版本Q需要在java前面指定其\?/SPAN>
附:(x)源代码下?/A>Q由于上传文件不支持rarcdQ我扩展名改ؓ(f)?/SPAN>pdfQ请在下载之后将扩展名改?/SPAN>rarQ再解压Q?/SPAN>
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=79423
3、定义透视?/SPAN>
Q?/SPAN>1Q透视图概q?/SPAN>
l Eclipse 工作台内的透视图是用于所有已打开视图和编辑器的可视化容器
l 当?zhn)在自q RCP 应用E序中创建透视图时Q请考虑下列情况Q?/SPAN>
l 定义透视囄目的
Ø ׃ Eclipse 工作台每ơ只昄一个透视图,(zhn)需要将应用E序的逻辑和功能区域分l到l一的透视图中Q该Ҏ(gu)最化用户为完成特定Q务而在不同透视图之间进行切换的需?/SPAN>
Ø CQ一个视图或~辑器不能被不同的透视囑օ?/SPAN>
Ø 应用E序的透视图数目在很大E度上取决于该应用程序的大小和复杂性;对于我们?/SPAN> Google 例子应用E序Q最初只需要定义一个透视?/SPAN>
l 定义透视囄行ؓ(f)
Ø q取决于(zhn)的应用E序Q一个具有自q视图、编辑器和动作集合的透视图,可以被设计ؓ(f)执行不同的功?/SPAN>
Ø 透视囄行ؓ(f)是面向Q务的Q提供给最l用户一pd工具来完成特定的目标
Q?/SPAN>2Q创建基本透视?/SPAN>
l 首先要修?/SPAN>plugin.xmlQ增加透视图扩展(如前面所C)Q该扩展使用org.eclipse.ui.perspectives扩展?/SPAN>
<extension
point="org.eclipse.ui.perspectives">
<perspective
class="com.xqtu.google.GooglePerspective"
name="Google"
id="com.xqtu.google.GooglePerspective"/>
</extension>
l q里再说一?/SPAN><perspective>标记的属?/SPAN>
Ø idQ透视图惟一标识W?/SPAN>
Ø nameQ透视囑Uͼ工作台窗口菜单栏用它来表C透视?/SPAN>
Ø classQ实?org.eclipse.ui.IPerspectiveFactory 接口的透视囄的全路径
l 其次是创徏透视囄
package com.xqtu.google;
import org.eclipse.ui.IPageLayout;
import org.eclipse.ui.IPerspectiveFactory;
public class GooglePerspective implements IPerspectiveFactory {
public void createInitialLayout(IPageLayout layout) {
}
}
l createInitialLayout()Ҏ(gu)定义透视囑ֆ所有视囑֒~辑器的初始布局Q目前,暂时不需要修改该Ҏ(gu)
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=79348
Q?/SPAN>1Q什么是RCP
l RCP Q?/SPAN>Rich Client PlatformQ?/SPAN>提供了一个通用?/SPAN> Eclipse 工作収ͼ允许开发h员扩展和构造自q应用E序
l 一?/SPAN>RCP应用E序包括臛_一个定制插Ӟ同时使用?/SPAN> Eclipse 3.0 IDE相同的用L(fng)面元?/SPAN>
Q?/SPAN>2Q?/SPAN>SWT?/SPAN>JFace
l SWTQ?/SPAN>Standard Widget ToolkitQ:(x)提供一个与q_无关?/SPAN> APIQ与操作pȝ的本地窗口环境紧密集成;SWTҎ(gu)提供开发h员用跨q_API实现?/SPAN>feel-like”本地桌面应用程序的解决Ҏ(gu)Q该工具克服了开发h员在使用 Java AWT或?/SPAN>JFC旉临的许多设计和实现权?/SPAN>
l JFace Q提供一个与q_无关的用L(fng)?/SPAN> APIQ它扩展?/SPAN> SWTq能?/SPAN> SWT 交互操作Q该库提供了一pd的组件和实用工具Q来化开?/SPAN> SWT 用户界面中的许多公共dQ该工具包括许多扩?/SPAN> SWT的工L(fng)Q来提供数据视图、向导和对话框组件、文本操作,以及(qing)囑փ和字体组?/SPAN>
l SWT?/SPAN>JFace已经包含?/SPAN>Eclipse 3.0中,在开?/SPAN>RCP应用E序可以使用SWT?/SPAN>JFace
Q?/SPAN>3Q?/SPAN>Eclipse的插件体pȝ?/SPAN>
l 除了l成 Eclipse q_q行环境的基本文件之外,Eclipse 的其它所有功能都是通过使用插g来实现的
l 插g是开发h员向环境d新的功能所使用的基本构造块
l Eclipse q行环境负责理工作台内部插件的生命周期
l 特定环境的所有插仉位于RCP 应用E序目录l构?/SPAN>plugin文g夹中
l 当执行操作时Q?/SPAN>Eclipse q行环境?x)发现所有可用插Ӟq用该信息创徏一个全局?/SPAN>plugin注册?/SPAN>
l 要让插g参与到工作台内部Q插件必d义一l扩?/SPAN>
l 扩展可以直接功能添加到基础的通用工作CQ或者扩展其他已有的扩展
l 每个扩展都在插g的清单文件中定义的,?/SPAN> XML 文g描述了在 Eclipse q行中所有扩展是如何怺操作的,q且定义了必需的依存关p?/SPAN>