- 浏览: 416115 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
liyuanhoa_:
...
struts2.0中struts.xml配置文件详解 -
chenmingde:
...
Velocity应用(一) -
weizhikai_ai:
第二十六,当一个线程进入一个对象的一个synchronized ...
Java常见面试题(含答案) -
Aurora_lr:
...
Spring宠物商店学习笔记(一) - -
zs911zs:
all copy from http://www.iteye ...
Mule入门文档
在使用Eclipse RCP进行桌面程序开发(一):快速起步中,我们通过Eclipse的插件开发向导,逐步建立了一个RCP应用程序,但是,这个程序没有任何功能,难以激起我们学习的兴趣。在这一节,我们将一起探索怎样在程序中添加菜单和工具条。先看一下成果:
图一、图二:带有菜单和工具条的RCP程序
图三:工具栏上的按钮的提示文本
图四:点击菜单项或者工具栏按钮后,弹出一个简单的对话框。
这里需要说明一点,为什么要在讲菜单和工具栏的时候一起讲对话框,这是因为对话框是我们所能想到的最简单最直接的用户交互方式,在对话框上可以添加各种各样的控件来实现复杂的功能,为了让我们点击菜单项的时候能够看到效果,这里就用了一个简单的对话框。当然,当我们以后接触到视图、编辑器和透视图这样的概念之后,我们能使用的用户交互方式就不仅仅只是对话框了。
打开我们上一节使用向导建立的工程,可以发现工程下面自动生成了如下文件:
Application.java
ApplicationWorkbenchAdvisor.java
ApplicationWorkbenchWindowAdvisor.java
ApplicationActionBarAdvisor.java
Perspective.java
plugin.xml
这里的Application.java是我们整个程序的入口点,我们的程序运行的时候,会先执行Application的run方法,run方法的代码如下:
1 public Object run(Object args) throws Exception {
2 Display display = PlatformUI.createDisplay();
3 try {
4 int returnCode = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor());
5 if (returnCode == PlatformUI.RETURN_RESTART) {
6 return IPlatformRunnable.EXIT_RESTART;
7 }
8 return IPlatformRunnable.EXIT_OK;
9 } finally {
10 display.dispose();
11 }
12 }
在第4行我们可以看出,该入口函数将创建用户界面的工作交给了ApplicationWorkbenchAdvisor类。接着,我们打开ApplicationWorkbenchAdvisor.java,代码如下:
1 public class ApplicationWorkbenchAdvisor extends WorkbenchAdvisor {
2
3 private static final String PERSPECTIVE_ID = " cn.blogjava.youxia.rcp_start.perspective " ;
4
5 public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
6 return new ApplicationWorkbenchWindowAdvisor(configurer);
7 }
8
9 public String getInitialWindowPerspectiveId() {
10 return PERSPECTIVE_ID;
11 }
12 }
可以看出,这个类的工作就是为我们的程序指定默认的透视图,然后把创建窗口的工作交给了ApplicationWorkbenchWindowAdvisor类。接着,我们打开ApplicationWorkbenchWindowAdvisor.java文件,看到代码如下:
1 public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {
2
3 public ApplicationWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
4 super (configurer);
5 }
6
7 public ActionBarAdvisor createActionBarAdvisor(IActionBarConfigurer configurer) {
8 return new ApplicationActionBarAdvisor(configurer);
9 }
10
11 public void preWindowOpen() {
12 IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
13 configurer.setInitialSize( new Point( 600 , 450 ));
14 configurer.setShowCoolBar( true );
15 configurer.setShowStatusLine( false );
16 configurer.setTitle( " 第一个RCP程序 " );
17
18 }
19
20 }
这个类的功能很强大,我们可以重载它的preWindowCreate、postWindowCreate、preWindowOpen、postWindowOpen等方法,以便修改我们窗口的外观。在这里可以看出,我们重载了preWindowOpen方法来设置窗口的大小和让工具栏可见。很显然,这个类的另外一个功能,就是把创建菜单和工具栏的任务交给了ApplicationActionBarAdvisor类。
到这里,谜底已经揭晓,要创建我们自己的菜单和工具条,就一定是在ApplicationActionBarAdvisor.java中做文章了。不错,打开这个文件,我们可以看到这个类有两个重要的方法:
protected void makeActions(IWorkbenchWindow window);
protected void fillMenuBar(IMenuManager menuBar);
我们可以在makeActions方法中创建我们的Action,什么是Action呢?Action是jface中的一个概念,在jface中通过org.eclipse.jface.action中的Action和ActionContributionItem类实现了视图和处理代码的分离,这样无论何时用户触发了一个控件的事件,都会激活一个相应的Action类实例来进行时间处理。毫无疑问,我们的菜单项是一个Action类的子类了。
下面请看ApplicationActionBarAdvisor.java的源代码:
1 package cn.blogjava.youxia.rcp_start;
2
3 import org.eclipse.jface.action.IMenuManager;
4 import org.eclipse.jface.action.MenuManager;
5 import org.eclipse.ui.IWorkbenchWindow;
6 import org.eclipse.ui.application.ActionBarAdvisor;
7 import org.eclipse.ui.application.IActionBarConfigurer;
8 import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
9 import cn.blogjava.youxia.actions.Action1;
10
11 public class ApplicationActionBarAdvisor extends ActionBarAdvisor {
12
13 private IWorkbenchAction action1;
14
15 public ApplicationActionBarAdvisor(IActionBarConfigurer configurer) {
16 super (configurer);
17 }
18
19 protected void makeActions(IWorkbenchWindow window) {
20 action1 = new Action1(window);
21 action1.setText( " 第一个菜单项 " );
22 action1.setId( " cn.blogjava.youxia.actions.action1 " );
23 register(action1);
24 }
25
26 protected void fillMenuBar(IMenuManager menuBar) {
27 MenuManager newMenu = new MenuManager( " 第一个菜单 " , " cn.blogjava.youxia.firstmenu " );
28 menuBar.add(newMenu);
29 newMenu.add(action1);
30 }
31
32 }
可以看出,我们通过创建cn.blogjava.youxia.actions.Action1类的实例来创建一个菜单项,然后把它加入到菜单newMenu中,然后再把newMenu加入menuBar中,整个过程很容易理解。那么register(action1)是做什么的呢?这是为了把我们的Action的实例注册到工作台中,这样当我们的工作台销毁的时候,我们的Action也可以被销毁。
下面请看Action1类的源代码:
1 package cn.blogjava.youxia.actions;
2
3 import org.eclipse.jface.action.Action;
4 import org.eclipse.ui.IWorkbenchWindow;
5 import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
6 import cn.blogjava.youxia.rcp_start.FirstDialog;
7
8
9 public class Action1 extends Action implements IWorkbenchAction {
10
11 private IWorkbenchWindow workbenchWindow;
12
13 public Action1(IWorkbenchWindow window) {
14 if (window == null ) {
15 throw new IllegalArgumentException();
16 }
17
18 this .workbenchWindow = window;
19 }
20
21 public void run() {
22 // make sure action is not disposed
23 if (workbenchWindow != null ) {
24 // 在这里添加功能
25 FirstDialog dg = new FirstDialog(workbenchWindow.getShell());
26 dg.open();
27
28 }
29 }
30
31 public void dispose() {
32 workbenchWindow = null ;
33
34 }
35
36 }
在构造函数中保存我们工作台窗口的引用,在run方法中执行功能,是不是很简单?在这里,我们用到了一个对话框类cn.blogjava.youxia.rcp_start.FirstDialog,这个类从org.eclipse.swt.widgets.Dialog类继承,熟悉swt的朋友一定不会陌生。我建议大家可以使用Designer插件,这个插件对swt/jface提供非常好的可视化支持,在这个对话框中,我们只简单的添加了两个按钮。
FirstDialog.java源文件如下:
1 package cn.blogjava.youxia.rcp_start;
2
3 import org.eclipse.swt.SWT;
4 import org.eclipse.swt.events.SelectionAdapter;
5 import org.eclipse.swt.events.SelectionEvent;
6 import org.eclipse.swt.widgets.Button;
7 import org.eclipse.swt.widgets.Dialog;
8 import org.eclipse.swt.widgets.Display;
9 import org.eclipse.swt.widgets.Shell;
10
11
12 public class FirstDialog extends Dialog {
13
14 protected Shell shell;
15
16 private int result;
17
18 public FirstDialog(Shell parent, int style) {
19 super (parent, style);
20 }
21
22 public FirstDialog(Shell parent) {
23 this (parent, SWT.NONE);
24 }
25
26 public int open() {
27 createContents();
28 shell.open();
29 shell.layout();
30 Display display = getParent().getDisplay();
31 while ( ! shell.isDisposed()) {
32 if ( ! display.readAndDispatch())
33 display.sleep();
34 }
35 return result;
36 }
37
38 protected void createContents() {
39 shell = new Shell(getParent(), SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
40 shell.setSize( 150 , 70 );
41 shell.setText( " 第一个对话框 " );
42
43 final Button okButton = new Button(shell, SWT.NONE);
44 okButton.addSelectionListener( new SelectionAdapter() {
45 public void widgetSelected(SelectionEvent e) {
46 result = 1 ;
47 shell.dispose();
48 }
49 } );
50 okButton.setText( " OK " );
51 okButton.setBounds( 10 , 10 , 48 , 22 );
52
53 final Button cancelButton = new Button(shell, SWT.NONE);
54 cancelButton.addSelectionListener( new SelectionAdapter() {
55 public void widgetSelected(SelectionEvent e) {
56 result = 2 ;
57 shell.dispose();
58 }
59 } );
60 cancelButton.setText( " Cancel " );
61 cancelButton.setBounds( 89 , 10 , 48 , 22 );
62 }
63
64 }
65
上面所讲的,只是添加菜单和工具栏的第一种方法,这种方法把构建菜单的工作以静态代码的方式加入到了ApplicationActionBarAdvisor类中,如果需要修改用户界面,则需要修改代码并重新编译。
添加菜单项的第二种方法就要简单得多,而且修改起来也方便,还可以对菜单项实现更加灵活的控制,但是,需要对Eclipse的插件基础有比较好的了解。那这第二种方法就是通过扩展actionSets扩展点来添加菜单。
对扩展点的扩展,可以通过编辑plugin.xml文件了实现,比如我们添加的第二个菜单项,其配置文件如下:
1 < extension
2 id ="cn.blogjava.youxia.actionset"
3 name ="我的菜单扩展"
4 point ="org.eclipse.ui.actionSets" >
5 < actionSet
6 description ="第一个扩展"
7 id ="RCP_Start.actionSet1"
8 label ="RCP_Start.actionSet1"
9 visible ="true" >
10 < action
11 class ="cn.blogjava.youxia.actions.Action2"
12 icon ="icons/alt_window_16.gif"
13 id ="RCP_Start.action2"
14 label ="第二个菜单项"
15 menubarPath ="cn.blogjava.youxia.firstmenu/additions"
16 style ="push"
17 toolbarPath ="additions"
18 tooltip ="第二个菜单项的按钮" />
19 </ actionSet >
20 </ extension >
其实Eclipse为我们提供了很好的可视化plugin.xml的编辑器,如下图,我们可以对菜单的外观进行和行为进行灵活的控制:
从配置文件中我们可以看到,我们为这第二个菜单项指定的Action是cn.blogjava.youxia.actions.Action2类,这个类我们必须实现org.eclipse.ui.IWorkbenchWindowActionDelegate接口,这个接口中比org.eclipse.jface.actions.Action中多定义了一个方法public void selectionChanged(IAction action, ISelection selection),这个方法是必须的,以便工作台窗口在用户选定哪一项资源的时候通知我们的Action类的实例。其代码如下:
1 package cn.blogjava.youxia.actions;
2
3 import org.eclipse.jface.action.IAction;
4 import org.eclipse.jface.viewers.ISelection;
5 import org.eclipse.ui.IWorkbenchWindow;
6 import org.eclipse.ui.IWorkbenchWindowActionDelegate;
7 import cn.blogjava.youxia.rcp_start.FirstDialog;
8
9 public class Action2 implements IWorkbenchWindowActionDelegate {
10
11 private IWorkbenchWindow window;
12
13 public void dispose() {
14 // TODO
15
16 }
17
18 public void init(IWorkbenchWindow window) {
19 // TODO
20 this .window = window;
21
22 }
23
24 public void run(IAction action) {
25 // TODO
26 FirstDialog dg = new FirstDialog(window.getShell());
27 dg.open();
28
29 }
30
31 public void selectionChanged(IAction action, ISelection selection) {
32 // TODO
33
34 }
35
36 }
总结:通过向工作台中添加菜单和工具栏,并使用对话框作为与用户交互的基础,我们已经基本上可以构建功能比较复杂的程序了。但这仅仅只是RCP编程的开端。下一节,我们将一起探索Eclipse的透视图和视图。
图一、图二:带有菜单和工具条的RCP程序
图三:工具栏上的按钮的提示文本
图四:点击菜单项或者工具栏按钮后,弹出一个简单的对话框。
这里需要说明一点,为什么要在讲菜单和工具栏的时候一起讲对话框,这是因为对话框是我们所能想到的最简单最直接的用户交互方式,在对话框上可以添加各种各样的控件来实现复杂的功能,为了让我们点击菜单项的时候能够看到效果,这里就用了一个简单的对话框。当然,当我们以后接触到视图、编辑器和透视图这样的概念之后,我们能使用的用户交互方式就不仅仅只是对话框了。
打开我们上一节使用向导建立的工程,可以发现工程下面自动生成了如下文件:
Application.java
ApplicationWorkbenchAdvisor.java
ApplicationWorkbenchWindowAdvisor.java
ApplicationActionBarAdvisor.java
Perspective.java
plugin.xml
这里的Application.java是我们整个程序的入口点,我们的程序运行的时候,会先执行Application的run方法,run方法的代码如下:
1 public Object run(Object args) throws Exception {
2 Display display = PlatformUI.createDisplay();
3 try {
4 int returnCode = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor());
5 if (returnCode == PlatformUI.RETURN_RESTART) {
6 return IPlatformRunnable.EXIT_RESTART;
7 }
8 return IPlatformRunnable.EXIT_OK;
9 } finally {
10 display.dispose();
11 }
12 }
在第4行我们可以看出,该入口函数将创建用户界面的工作交给了ApplicationWorkbenchAdvisor类。接着,我们打开ApplicationWorkbenchAdvisor.java,代码如下:
1 public class ApplicationWorkbenchAdvisor extends WorkbenchAdvisor {
2
3 private static final String PERSPECTIVE_ID = " cn.blogjava.youxia.rcp_start.perspective " ;
4
5 public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
6 return new ApplicationWorkbenchWindowAdvisor(configurer);
7 }
8
9 public String getInitialWindowPerspectiveId() {
10 return PERSPECTIVE_ID;
11 }
12 }
可以看出,这个类的工作就是为我们的程序指定默认的透视图,然后把创建窗口的工作交给了ApplicationWorkbenchWindowAdvisor类。接着,我们打开ApplicationWorkbenchWindowAdvisor.java文件,看到代码如下:
1 public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {
2
3 public ApplicationWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
4 super (configurer);
5 }
6
7 public ActionBarAdvisor createActionBarAdvisor(IActionBarConfigurer configurer) {
8 return new ApplicationActionBarAdvisor(configurer);
9 }
10
11 public void preWindowOpen() {
12 IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
13 configurer.setInitialSize( new Point( 600 , 450 ));
14 configurer.setShowCoolBar( true );
15 configurer.setShowStatusLine( false );
16 configurer.setTitle( " 第一个RCP程序 " );
17
18 }
19
20 }
这个类的功能很强大,我们可以重载它的preWindowCreate、postWindowCreate、preWindowOpen、postWindowOpen等方法,以便修改我们窗口的外观。在这里可以看出,我们重载了preWindowOpen方法来设置窗口的大小和让工具栏可见。很显然,这个类的另外一个功能,就是把创建菜单和工具栏的任务交给了ApplicationActionBarAdvisor类。
到这里,谜底已经揭晓,要创建我们自己的菜单和工具条,就一定是在ApplicationActionBarAdvisor.java中做文章了。不错,打开这个文件,我们可以看到这个类有两个重要的方法:
protected void makeActions(IWorkbenchWindow window);
protected void fillMenuBar(IMenuManager menuBar);
我们可以在makeActions方法中创建我们的Action,什么是Action呢?Action是jface中的一个概念,在jface中通过org.eclipse.jface.action中的Action和ActionContributionItem类实现了视图和处理代码的分离,这样无论何时用户触发了一个控件的事件,都会激活一个相应的Action类实例来进行时间处理。毫无疑问,我们的菜单项是一个Action类的子类了。
下面请看ApplicationActionBarAdvisor.java的源代码:
1 package cn.blogjava.youxia.rcp_start;
2
3 import org.eclipse.jface.action.IMenuManager;
4 import org.eclipse.jface.action.MenuManager;
5 import org.eclipse.ui.IWorkbenchWindow;
6 import org.eclipse.ui.application.ActionBarAdvisor;
7 import org.eclipse.ui.application.IActionBarConfigurer;
8 import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
9 import cn.blogjava.youxia.actions.Action1;
10
11 public class ApplicationActionBarAdvisor extends ActionBarAdvisor {
12
13 private IWorkbenchAction action1;
14
15 public ApplicationActionBarAdvisor(IActionBarConfigurer configurer) {
16 super (configurer);
17 }
18
19 protected void makeActions(IWorkbenchWindow window) {
20 action1 = new Action1(window);
21 action1.setText( " 第一个菜单项 " );
22 action1.setId( " cn.blogjava.youxia.actions.action1 " );
23 register(action1);
24 }
25
26 protected void fillMenuBar(IMenuManager menuBar) {
27 MenuManager newMenu = new MenuManager( " 第一个菜单 " , " cn.blogjava.youxia.firstmenu " );
28 menuBar.add(newMenu);
29 newMenu.add(action1);
30 }
31
32 }
可以看出,我们通过创建cn.blogjava.youxia.actions.Action1类的实例来创建一个菜单项,然后把它加入到菜单newMenu中,然后再把newMenu加入menuBar中,整个过程很容易理解。那么register(action1)是做什么的呢?这是为了把我们的Action的实例注册到工作台中,这样当我们的工作台销毁的时候,我们的Action也可以被销毁。
下面请看Action1类的源代码:
1 package cn.blogjava.youxia.actions;
2
3 import org.eclipse.jface.action.Action;
4 import org.eclipse.ui.IWorkbenchWindow;
5 import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
6 import cn.blogjava.youxia.rcp_start.FirstDialog;
7
8
9 public class Action1 extends Action implements IWorkbenchAction {
10
11 private IWorkbenchWindow workbenchWindow;
12
13 public Action1(IWorkbenchWindow window) {
14 if (window == null ) {
15 throw new IllegalArgumentException();
16 }
17
18 this .workbenchWindow = window;
19 }
20
21 public void run() {
22 // make sure action is not disposed
23 if (workbenchWindow != null ) {
24 // 在这里添加功能
25 FirstDialog dg = new FirstDialog(workbenchWindow.getShell());
26 dg.open();
27
28 }
29 }
30
31 public void dispose() {
32 workbenchWindow = null ;
33
34 }
35
36 }
在构造函数中保存我们工作台窗口的引用,在run方法中执行功能,是不是很简单?在这里,我们用到了一个对话框类cn.blogjava.youxia.rcp_start.FirstDialog,这个类从org.eclipse.swt.widgets.Dialog类继承,熟悉swt的朋友一定不会陌生。我建议大家可以使用Designer插件,这个插件对swt/jface提供非常好的可视化支持,在这个对话框中,我们只简单的添加了两个按钮。
FirstDialog.java源文件如下:
1 package cn.blogjava.youxia.rcp_start;
2
3 import org.eclipse.swt.SWT;
4 import org.eclipse.swt.events.SelectionAdapter;
5 import org.eclipse.swt.events.SelectionEvent;
6 import org.eclipse.swt.widgets.Button;
7 import org.eclipse.swt.widgets.Dialog;
8 import org.eclipse.swt.widgets.Display;
9 import org.eclipse.swt.widgets.Shell;
10
11
12 public class FirstDialog extends Dialog {
13
14 protected Shell shell;
15
16 private int result;
17
18 public FirstDialog(Shell parent, int style) {
19 super (parent, style);
20 }
21
22 public FirstDialog(Shell parent) {
23 this (parent, SWT.NONE);
24 }
25
26 public int open() {
27 createContents();
28 shell.open();
29 shell.layout();
30 Display display = getParent().getDisplay();
31 while ( ! shell.isDisposed()) {
32 if ( ! display.readAndDispatch())
33 display.sleep();
34 }
35 return result;
36 }
37
38 protected void createContents() {
39 shell = new Shell(getParent(), SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
40 shell.setSize( 150 , 70 );
41 shell.setText( " 第一个对话框 " );
42
43 final Button okButton = new Button(shell, SWT.NONE);
44 okButton.addSelectionListener( new SelectionAdapter() {
45 public void widgetSelected(SelectionEvent e) {
46 result = 1 ;
47 shell.dispose();
48 }
49 } );
50 okButton.setText( " OK " );
51 okButton.setBounds( 10 , 10 , 48 , 22 );
52
53 final Button cancelButton = new Button(shell, SWT.NONE);
54 cancelButton.addSelectionListener( new SelectionAdapter() {
55 public void widgetSelected(SelectionEvent e) {
56 result = 2 ;
57 shell.dispose();
58 }
59 } );
60 cancelButton.setText( " Cancel " );
61 cancelButton.setBounds( 89 , 10 , 48 , 22 );
62 }
63
64 }
65
上面所讲的,只是添加菜单和工具栏的第一种方法,这种方法把构建菜单的工作以静态代码的方式加入到了ApplicationActionBarAdvisor类中,如果需要修改用户界面,则需要修改代码并重新编译。
添加菜单项的第二种方法就要简单得多,而且修改起来也方便,还可以对菜单项实现更加灵活的控制,但是,需要对Eclipse的插件基础有比较好的了解。那这第二种方法就是通过扩展actionSets扩展点来添加菜单。
对扩展点的扩展,可以通过编辑plugin.xml文件了实现,比如我们添加的第二个菜单项,其配置文件如下:
1 < extension
2 id ="cn.blogjava.youxia.actionset"
3 name ="我的菜单扩展"
4 point ="org.eclipse.ui.actionSets" >
5 < actionSet
6 description ="第一个扩展"
7 id ="RCP_Start.actionSet1"
8 label ="RCP_Start.actionSet1"
9 visible ="true" >
10 < action
11 class ="cn.blogjava.youxia.actions.Action2"
12 icon ="icons/alt_window_16.gif"
13 id ="RCP_Start.action2"
14 label ="第二个菜单项"
15 menubarPath ="cn.blogjava.youxia.firstmenu/additions"
16 style ="push"
17 toolbarPath ="additions"
18 tooltip ="第二个菜单项的按钮" />
19 </ actionSet >
20 </ extension >
其实Eclipse为我们提供了很好的可视化plugin.xml的编辑器,如下图,我们可以对菜单的外观进行和行为进行灵活的控制:
从配置文件中我们可以看到,我们为这第二个菜单项指定的Action是cn.blogjava.youxia.actions.Action2类,这个类我们必须实现org.eclipse.ui.IWorkbenchWindowActionDelegate接口,这个接口中比org.eclipse.jface.actions.Action中多定义了一个方法public void selectionChanged(IAction action, ISelection selection),这个方法是必须的,以便工作台窗口在用户选定哪一项资源的时候通知我们的Action类的实例。其代码如下:
1 package cn.blogjava.youxia.actions;
2
3 import org.eclipse.jface.action.IAction;
4 import org.eclipse.jface.viewers.ISelection;
5 import org.eclipse.ui.IWorkbenchWindow;
6 import org.eclipse.ui.IWorkbenchWindowActionDelegate;
7 import cn.blogjava.youxia.rcp_start.FirstDialog;
8
9 public class Action2 implements IWorkbenchWindowActionDelegate {
10
11 private IWorkbenchWindow window;
12
13 public void dispose() {
14 // TODO
15
16 }
17
18 public void init(IWorkbenchWindow window) {
19 // TODO
20 this .window = window;
21
22 }
23
24 public void run(IAction action) {
25 // TODO
26 FirstDialog dg = new FirstDialog(window.getShell());
27 dg.open();
28
29 }
30
31 public void selectionChanged(IAction action, ISelection selection) {
32 // TODO
33
34 }
35
36 }
总结:通过向工作台中添加菜单和工具栏,并使用对话框作为与用户交互的基础,我们已经基本上可以构建功能比较复杂的程序了。但这仅仅只是RCP编程的开端。下一节,我们将一起探索Eclipse的透视图和视图。
发表评论
-
一个实现了ViewPart和EditroPart的简单RCP例子
2008-12-01 17:16 3155最近作了个rcp程序的例 ... -
JFace简介
2008-11-28 16:58 4508JFace是在SWT之上的一层抽象。在SWT中,你通常创建控件 ... -
SWT 和 JFace, 第 2 部分: 简介
2008-11-28 16:57 1522SWT 和 JFace 系列的第 2 部分扩展了我们所学的关于 ... -
SWT 和 JFace,第 1 部分: 简介
2008-11-28 16:56 1785在这篇 SWT 和 JFace 系列 ... -
使用Eclipse RCP进行桌面程序开发(六):向OpenGL进军
2008-11-28 15:51 2732使用Eclipse RCP进行桌面程序开发(一):快速起步 ... -
使用Eclipse RCP进行桌面程序开发(五):2D绘图
2008-11-28 15:48 2781使用Eclipse RCP进行桌面程序开发(一):快速起步 ... -
使用Eclipse RCP进行桌面程序开发(四):在Windows中使用Active X控件
2008-11-28 15:47 2812使用Eclipse RCP进行桌面 ... -
使用Eclipse RCP进行桌面程序开发(三):视图和透视图
2008-11-28 15:44 9052使用Eclipse RCP进行桌面程序开发(一):快速起步 ... -
使用Eclipse RCP进行桌面程序开发(一):快速起步
2008-11-28 15:39 1970所谓RCP,就是Rich Client P ... -
RCP应用程序开发系列(3)--入门程序代码分析
2008-11-28 15:17 1632前面介绍了一些文字性的东西,现在还是来看看代码,这样才感觉踏实 ... -
RCP应用程序开发系列(2)--创建第一个应用程序
2008-11-28 15:16 1446开发环境是用的Eclipse3.1 首先,创 ... -
RCP应用程序开发系列(1)
2008-11-28 15:15 1483一、SWT SWT 是一种 low-level 图形库,它提供 ... -
RCP框架解析
2008-11-28 15:15 1565RCP框架解析 当新建一个RCP工程时,Eclipse自动给 ... -
rcp实践
2008-11-28 15:14 2222这篇文章基本上是没怎么加我自己写的代码的,几乎全部是eclip ... -
Eclipse的RCP
2008-11-28 15:13 1417从Eclipse 3.1RC1开始,ve已经支持RCP(Ric ...
相关推荐
### 使用Eclipse RCP进行桌面程序开发:详细指南 #### 一、Eclipse RCP简介与快速起步 **Eclipse RCP** (Rich Client Platform) 是一种基于Java的开源框架,用于开发桌面应用程序。自从Eclipse 3.0版本以来,RCP...
火龙果软件工程技术中心 在使用EclipseRCP进行桌面程序开发(一):快速起步中,我们通过Eclipse的插件开发向导,逐步建立了一个RCP应用程序,但是,这个程序没有任何功能,难以激起我们学习的兴趣。在这一节,我们...
"使用Eclipse RCP进行桌面程序开发(二):菜单、工具栏和对话框 .doc"则专注于用户界面(UI)元素的创建和管理,包括如何定义菜单、工具栏,以及创建自定义对话框。这些组件是用户与应用程序交互的关键部分,开发者...
在"使用Eclipse RCP进行桌面程序开发(二):菜单、工具栏和对话框 - 才人的日志 - 网易博客.htm"这篇文章中,作者才人详细介绍了如何在Eclipse RCP项目中创建和管理菜单、工具栏和对话框。文章通过实例展示了如何一...
3. **使用Eclipse RCP进行桌面程序开发(二):菜单、工具栏和对话框 - 海边沫沫 - BlogJava.mht** 这部分可能涵盖了创建和管理用户界面元素,如菜单、工具栏和对话框的方法,这些都是构建用户友好的桌面应用必不可...
1. 创建菜单和工具栏:通过编程或者使用Eclipse的图形化工具(如Perspective Editor和Action Set Editor)来添加菜单项和工具栏按钮。 2. 绑定事件处理:为菜单项和工具栏按钮关联相应的事件处理器,实现功能逻辑。 ...
- **概述**:介绍菜单栏和工具栏在RCP中的使用。 - **通过编码添加**:演示如何直接在代码中创建菜单和工具栏项。 - **“扩展”方式添加**:利用Eclipse插件系统的扩展点添加菜单和工具栏。 - **添加全局快捷键*...
通过将动作与菜单项、工具栏按钮等用户界面元素关联起来,可以轻松地添加功能到应用程序中。 ##### Editors 编辑器是在 Eclipse RCP 中处理文件的主要方式。编辑器提供了一种可视化的方式来显示和编辑文件内容。...
Eclipse Rich Client Platform (RCP) 是一个用于构建桌面应用程序的框架,它基于 Eclipse IDE 平台,允许开发者利用 Eclipse 的强大功能和丰富的插件系统来创建自定义的、可扩展的应用程序。Eclipse RCP 的核心理念...
### 通过例子学习Eclipse RCP开发 #### Eclipse RCP概览 Eclipse RCP(Rich Client Platform,富客户端平台)是一种基于Java的框架和技术集合,用于构建具有丰富用户界面的应用程序。它允许开发者创建高度可定制且...
### Eclipse 3.6 RCP 开发知识点概览 #### 1. 富客户端平台 (RCP) 概述 **1.1 概述** - **定义**: Eclipse Rich Client ...通过理解和掌握这些知识点,开发者可以更加高效地使用Eclipse RCP进行桌面应用程序的开发。
- 菜单和工具栏是用户与 RCP 应用交互的重要元素,通过 Actions 可以创建和管理这些用户界面元素。 - 编码添加:开发者可以直接在代码中创建和绑定 Actions,将它们关联到菜单项或工具栏按钮,实现相应的功能。 8...
6. **命令框架**:Eclipse RCP中的命令框架允许你定义应用的动作,并将其绑定到菜单、工具栏或快捷键上。 7. **视图和编辑器**:了解如何创建和管理视图和编辑器,以及它们在工作台中的生命周期。 通过深入研究...
在Eclipse RCP中,Actions是用户界面交互的主要元素,它们通常与菜单项和工具栏按钮关联。创建Action需要定义其行为、图标和在UI中的显示位置。Action可以通过扩展点与其他插件共享,也可以在插件之间传递数据。 ##...
Eclipse RCP,全称Eclipse Rich Client Platform...以上内容涵盖了Eclipse RCP插件开发的基本概念和实践,通过这些章节的学习,开发者能够构建功能丰富的桌面应用程序,并具备对Eclipse RCP平台的深入理解和应用能力。
Eclipse RCP(Rich Client Platform)是Eclipse框架下用于构建桌面应用程序的开发平台,它提供了丰富的用户界面和高度的可扩展性。Eclipse RCP利用Eclipse的插件体系结构,允许开发者构建模块化、可重用的应用程序,...
6. **命令(Command)与快捷键(Key Binding)**:Eclipse RCP使用命令体系来封装应用行为,允许动态绑定到菜单、工具栏或快捷键,实现功能的统一管理。 7. **工作流(Workflow)**:RCP支持复杂的用户交互流程,如...
- **主窗口(Main Window)**:包含菜单栏、工具栏和其他用户界面元素的顶级容器。 - **透视图(Perspective)**:一种预定义的工作台布局,包括视图和编辑器的组织方式。 - **视图(View)**:显示特定数据的窗口,例如...