- 浏览: 269123 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (152)
- lucene (5)
- java (12)
- eclipse (2)
- GEF (34)
- SWT/JFACE/PLUGIN (58)
- EMF (8)
- GMF (0)
- fckeditor (1)
- AIX (1)
- 云计算 (2)
- 使用 Grails 构建富 Internet 应用程序 (1)
- Grails (1)
- 动态调用动态语言 (2)
- W3C DOM (3)
- Google Maps (1)
- 优化 (1)
- WebSphere (1)
- NSIS (1)
- 计算机安全 (1)
- Mina (2)
- Draw2d (4)
- Compass (1)
- 原创诗集 (3)
- 人生 (1)
- 翻版 (1)
- OSGI (1)
- Ubuntu (2)
- Ireport (2)
最新评论
-
扬手就是一长鞭:
移动label也无法使得save可以执行。
让连线上的Label动起来吧 -
扬手就是一长鞭:
我的save是正常的,我添加删除node或者connectio ...
让连线上的Label动起来吧 -
扬手就是一长鞭:
我也是这扥写的,可是我双击label改变他的文字时,发现sav ...
让连线上的Label动起来吧 -
ae6623:
这段代码放到哪里??
控制拖拽范围 -
ae6623:
真牛!鼠标滚轮缩放GEF画布 ..
getGraphicalV ...
GEF实现用鼠标滑轮控制画布的放大与缩小
from:http://blog.csdn.net/meteors1113/archive/2009/06/06/4245475.aspx
1. package com.newautovideo.impclient.app;
2. import java.util.ArrayList;
3. import java.util.HashMap;
4. import java.util.List;
5. import java.util.Map;
6. import org.eclipse.core.runtime.IConfigurationElement;
7. import org.eclipse.swt.graphics.Point;
8. import org.eclipse.swt.widgets.Menu;
9. import org.eclipse.swt.widgets.MenuItem;
10. import org.eclipse.ui.PlatformUI;
11. import org.eclipse.ui.application.ActionBarAdvisor;
12. import org.eclipse.ui.application.IActionBarConfigurer;
13. import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
14. import org.eclipse.ui.application.WorkbenchWindowAdvisor;
15. import org.eclipse.ui.internal.WorkbenchPlugin;
16. import org.eclipse.ui.internal.registry.ActionSetRegistry;
17. import org.eclipse.ui.internal.registry.IActionSetDescriptor;
18. /**
19. * @author zhanggang
20. *
21. */
22. public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {
23. private Map<String, IConfigurationElement> elements = new HashMap<String, IConfigurationElement>();// 存放着action的配置信息,以action中的label作为key
24. private List<String> alist = new ArrayList<String>();// 禁用的ActionId,仿服务端返回
25. public ApplicationWorkbenchWindowAdvisor(
26. IWorkbenchWindowConfigurer configurer) {
27. super(configurer);
28. }
29. public ActionBarAdvisor createActionBarAdvisor(
30. IActionBarConfigurer configurer) {
31. return new ApplicationActionBarAdvisor(configurer);
32. }
33. @SuppressWarnings("restriction")
34. public void preWindowOpen() {
35. IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
36. configurer.setInitialSize(new Point(400, 300));
37. configurer.setShowCoolBar(false);
38. configurer.setShowStatusLine(false);
39. configurer.setTitle("Hello RCP");
40. // 好象只能通过actionset来设置action是否可不可见了,暂时对action无法作呀,真哭
41. ActionSetRegistry reg = WorkbenchPlugin.getDefault()
42. .getActionSetRegistry();
43. IActionSetDescriptor[] sets = reg.getActionSets();
44. for (IActionSetDescriptor a : sets) {// 这里取到actionSet,并取到actionSet中的所有action配置,这里还取不到action对象的,需要在postwindow后才能取到
45. IConfigurationElement element = a.getConfigurationElement();
46. IConfigurationElement[] es = element.getChildren();
47. // a.setInitiallyVisible(false);//设置actionSet的属性
48. for (IConfigurationElement e : es) {
49. if (!e.getName().equals("action"))// 记住一定是要action
50. continue;
51. elements.put(e.getAttribute("label"), e);// 存放所有action的配置
52. }
53. }
54. }
55. @SuppressWarnings( { "restriction", "unchecked" })
56. public void postWindowOpen() {// 这里可以设置action为不可用,但不能隐藏
57. super.postWindowOpen();
58. MenuItem[] items = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
59. .getShell().getMenuBar().getItems();
60. alist.add("com.gzhnag.SampleActionTest3");// 有一个禁用权限
61. initMenu(items);
62. PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell()
63. .layout();
64. }
65. /**
66. * 菜单项
67. *
68. * @param items
69. * @return
70. */
71. private boolean initMenu(MenuItem[] items) {
72. String menuId;
73. boolean flag = false;// 此项菜单的父菜单是否显视标志,默认为不可显视,即要dispose(),但若有一个菜单,则为true
74. for (MenuItem item : items) {
75. Menu menu = item.getMenu();
76. if (menu == null)
77. continue;
78. MenuItem[] ims = menu.getItems();
79. int y = 0;
80. for (MenuItem mi : ims) {
81. boolean tmpFlag = false;
82. if (mi.getText().equals("")) {
83. continue;
84. }
85. if (mi.getMenu() != null && mi.getMenu().getItemCount() > 0) {
86. tmpFlag = initMenu(new MenuItem[] { mi });// 递归处理菜单,mi本身就是一个MenuItem
87. if (!tmpFlag) {
88. ims[y--].dispose();// 让分隔线也禁用
89. mi.dispose();
90. continue;
91. }
92. }
93. menuId = getMenuId(mi.getText());// 有下级菜单时是不会取不到id的
94. if (menuId == null)
95. continue;
96. if (alist.contains(menuId)) {// 若禁用权限里包括了些ID则禁用
97. mi.dispose();
98. } else {
99. flag = !flag;// 设为true即显神曲菜单
100. }
101. y++;
102. }
103. }
104. return flag;
105. }
106. /**
107. * @param name
108. * action中的label,注意有快捷方式,有快捷方式会以\t分隔
109. * @return
110. */
111. private String getMenuId(String name) {
112. String lable = name.split(" ")[0];
113. if (elements.get(lable) == null)
114. return null;
115. return elements.get(lable).getAttribute("id");// 快捷方式与label是以\t相隔的
116. }
117. }
1. package com.newautovideo.impclient.app;
2. import java.util.ArrayList;
3. import java.util.HashMap;
4. import java.util.List;
5. import java.util.Map;
6. import org.eclipse.core.runtime.IConfigurationElement;
7. import org.eclipse.swt.graphics.Point;
8. import org.eclipse.swt.widgets.Menu;
9. import org.eclipse.swt.widgets.MenuItem;
10. import org.eclipse.ui.PlatformUI;
11. import org.eclipse.ui.application.ActionBarAdvisor;
12. import org.eclipse.ui.application.IActionBarConfigurer;
13. import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
14. import org.eclipse.ui.application.WorkbenchWindowAdvisor;
15. import org.eclipse.ui.internal.WorkbenchPlugin;
16. import org.eclipse.ui.internal.registry.ActionSetRegistry;
17. import org.eclipse.ui.internal.registry.IActionSetDescriptor;
18. /**
19. * @author zhanggang
20. *
21. */
22. public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {
23. private Map<String, IConfigurationElement> elements = new HashMap<String, IConfigurationElement>();// 存放着action的配置信息,以action中的label作为key
24. private List<String> alist = new ArrayList<String>();// 禁用的ActionId,仿服务端返回
25. public ApplicationWorkbenchWindowAdvisor(
26. IWorkbenchWindowConfigurer configurer) {
27. super(configurer);
28. }
29. public ActionBarAdvisor createActionBarAdvisor(
30. IActionBarConfigurer configurer) {
31. return new ApplicationActionBarAdvisor(configurer);
32. }
33. @SuppressWarnings("restriction")
34. public void preWindowOpen() {
35. IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
36. configurer.setInitialSize(new Point(400, 300));
37. configurer.setShowCoolBar(false);
38. configurer.setShowStatusLine(false);
39. configurer.setTitle("Hello RCP");
40. // 好象只能通过actionset来设置action是否可不可见了,暂时对action无法作呀,真哭
41. ActionSetRegistry reg = WorkbenchPlugin.getDefault()
42. .getActionSetRegistry();
43. IActionSetDescriptor[] sets = reg.getActionSets();
44. for (IActionSetDescriptor a : sets) {// 这里取到actionSet,并取到actionSet中的所有action配置,这里还取不到action对象的,需要在postwindow后才能取到
45. IConfigurationElement element = a.getConfigurationElement();
46. IConfigurationElement[] es = element.getChildren();
47. // a.setInitiallyVisible(false);//设置actionSet的属性
48. for (IConfigurationElement e : es) {
49. if (!e.getName().equals("action"))// 记住一定是要action
50. continue;
51. elements.put(e.getAttribute("label"), e);// 存放所有action的配置
52. }
53. }
54. }
55. @SuppressWarnings( { "restriction", "unchecked" })
56. public void postWindowOpen() {// 这里可以设置action为不可用,但不能隐藏
57. super.postWindowOpen();
58. MenuItem[] items = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
59. .getShell().getMenuBar().getItems();
60. alist.add("com.gzhnag.SampleActionTest3");// 有一个禁用权限
61. initMenu(items);
62. PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell()
63. .layout();
64. }
65. /**
66. * 菜单项
67. *
68. * @param items
69. * @return
70. */
71. private boolean initMenu(MenuItem[] items) {
72. String menuId;
73. boolean flag = false;// 此项菜单的父菜单是否显视标志,默认为不可显视,即要dispose(),但若有一个菜单,则为true
74. for (MenuItem item : items) {
75. Menu menu = item.getMenu();
76. if (menu == null)
77. continue;
78. MenuItem[] ims = menu.getItems();
79. int y = 0;
80. for (MenuItem mi : ims) {
81. boolean tmpFlag = false;
82. if (mi.getText().equals("")) {
83. continue;
84. }
85. if (mi.getMenu() != null && mi.getMenu().getItemCount() > 0) {
86. tmpFlag = initMenu(new MenuItem[] { mi });// 递归处理菜单,mi本身就是一个MenuItem
87. if (!tmpFlag) {
88. ims[y--].dispose();// 让分隔线也禁用
89. mi.dispose();
90. continue;
91. }
92. }
93. menuId = getMenuId(mi.getText());// 有下级菜单时是不会取不到id的
94. if (menuId == null)
95. continue;
96. if (alist.contains(menuId)) {// 若禁用权限里包括了些ID则禁用
97. mi.dispose();
98. } else {
99. flag = !flag;// 设为true即显神曲菜单
100. }
101. y++;
102. }
103. }
104. return flag;
105. }
106. /**
107. * @param name
108. * action中的label,注意有快捷方式,有快捷方式会以\t分隔
109. * @return
110. */
111. private String getMenuId(String name) {
112. String lable = name.split(" ")[0];
113. if (elements.get(lable) == null)
114. return null;
115. return elements.get(lable).getAttribute("id");// 快捷方式与label是以\t相隔的
116. }
117. }
发表评论
-
选择workspace中的文件对话框
2011-04-09 17:57 1586ElementTreeSelectionDialog dial ... -
在插件中访问StatusLine
2011-01-17 11:26 1132WorkbenchWindow window = Platfr ... -
给RCP添加SVN功能
2011-01-03 17:26 1849三个步骤: 一、下载SVN插件到eclipse; 二、给RCP ... -
获得当前激活状态的Iproject
2010-11-30 12:48 1526/** * 获得当前工程 * @return ... -
让TableViewer支持Tab编辑
2010-10-16 08:57 1965高效的编辑无疑于tab操作,给TableViewer加tab操 ... -
实现Eclipse自身的log管理
2010-01-14 10:58 3327做插件开发的都知道当 ... -
自定义RCP外观
2010-01-13 21:52 4295如果说只需要改变RCP的皮肤可以参照IBM上的Eclipse程 ... -
SWT GC重绘心得
2010-01-13 01:10 5232如果有需求要将Composite的边框颜色改成红色,大家肯定就 ... -
在eclipse中获得当前所有打开的editor实例列表
2009-12-18 14:42 1576EditorPart[] parts = Platfor ... -
将应用默认使用XP风格
2009-12-09 16:54 1091从http://www.eclipse.org/swt/jav ... -
RCP中访问StatusLine详解
2009-11-26 15:40 2802首先给大家介绍各种情 ... -
扩展org.eclipse.ui.preferencePages的些许经验
2009-11-13 15:28 2131最近参考Eclipse插件开发 ... -
给视图添加快捷键
2009-10-11 02:46 1039上一篇博文中讲了用扩展的方式添加全局快捷键,现在本文用硬编码的 ... -
添加全局快捷键
2009-10-11 02:38 1448两种方法:一种扩展, ... -
让SWT中的text只能输入数字
2009-10-07 14:51 3173思路:给Text添加键盘输入事件,判断按下的键的ASCII码 ... -
通过ACTION的ID来获得ACTION
2009-09-28 11:43 2954现在又很多需求都需要动态去改变Action的enable/di ... -
动态关闭ViewPart
2009-09-24 18:36 1929IWorkbenchPage page = PlatformU ... -
设置TreeViewer的前景色和背景色
2009-09-23 11:54 1693让TreeViewerLabelProvider实现IColo ... -
给子控件和父控件添加相同的事件
2009-09-18 13:24 1298方法很多种,我这里介绍种最简单易懂的;触发事件得有listen ... -
SWT时间选择器
2009-09-04 16:50 3324package com.netunit.workbench.t ...
相关推荐
在这个“eclipse rcp 菜单小例子”项目中,我们将深入探讨如何在Eclipse RCP应用中创建和配置菜单,以及如何通过`visibleWhen`标签控制菜单项的可见性。 首先,让我们了解Eclipse RCP中的菜单结构。菜单主要分为三...
这个压缩包包含了RCP应用中关于Navigator的一个示例,以及如何自定义“新建”(New) 右键菜单的操作。 在RCP应用中,Navigator视图是通过`org.eclipse.ui.navigator`插件提供的,这个插件包含了展示和管理工作台资源...
2. **菜单与工具栏开发**:在RCP应用中,菜单和工具栏是用户与应用程序交互的主要途径。通过`plugin.xml`文件,开发者可以定义菜单项、子菜单、快捷键和工具栏按钮等,以实现特定的功能。`plugin.xml`配置文件是...
菜单和工具栏是RCP应用中用户与软件进行交互的主要界面之一。它们不仅提供了对应用功能的访问途径,还通过直观的设计增强了用户体验。菜单通常包含一系列命令选项,而工具栏则通过图标快速提供常用操作。理解如何在...
在本例子中,我们看到的是一个基于RCP实现的**客户关系管理(CRM)**系统。 CRM系统主要用于企业管理和优化与客户之间的交互,包括销售、市场营销和服务等环节。通过RCP构建的CRM,我们可以期待一个高度定制化、...
在操作和维护方面,RCP-1500系列遥控面板提供了一个详细的菜单系统,包括菜单操作、状态画面、着色菜单、文件菜单、维护菜单和配置菜单等。用户可以通过这些菜单来进行高级的配置和设置,以确保设备的性能达到最佳。...
6. **命令与快捷键**:Eclipse RCP提供了命令框架,允许自定义用户操作,如菜单项和快捷键。例子程序会展示如何定义、注册和绑定这些命令。 7. **服务(Service)**:Eclipse RCP支持服务导向的架构,通过服务,...
例如,当用户在视图中执行操作时,可以通过发布事件通知其他组件。 六、插件开发 Eclipse RCP应用由多个插件组成,每个插件负责一部分功能。插件之间通过API进行交互。理解插件依赖、生命周期和导出/导入是很关键的...
在Eclipse RCP(Rich Client Platform)开发中,创建用户友好的界面是至关重要的。一个常见的需求是定制透视图(Perspective)的交互方式,包括切换按钮和右键菜单。本教程将详细介绍如何通过`org.eclipse.ui....
5. **命令(Command)与 Handler**:RCP使用命令模型来处理用户的操作,如点击菜单项或按钮。Handler是命令的具体执行者,它将用户操作映射到实际的行为。 6. **模型(Model)**:在“simplebrowser”中,可能存在...
【标题】"RCP和CXF做的例子"指的是一个基于 Rich Client Platform (RCP) 和 Apache CXF 的应用程序示例。RCP 是 Eclipse 平台的一部分,它提供了一个框架,用于构建功能丰富的桌面应用程序。而 CXF 是一个开源服务...
6. **命令框架**:Eclipse RCP中的命令框架允许你定义应用的动作,并将其绑定到菜单、工具栏或快捷键上。 7. **视图和编辑器**:了解如何创建和管理视图和编辑器,以及它们在工作台中的生命周期。 通过深入研究...
现在我们来详细探讨一下这个"rcp与spring集成的一个简单例子"。 首先,集成的初衷是为了将Spring的灵活性和模块化引入到RCP应用中。通过Spring,我们可以轻松地管理对象的生命周期、实现松耦合,并利用其强大的AOP...
这个"rcp 学习资料下载,一个简单的rcp例子"是一个针对初学者的学习资源,旨在帮助他们快速理解和掌握RCP的开发技术。 在Eclipse RCP中,开发者可以利用工作台(Workbench)、视图(View)、编辑器(Editor)、透视...
6. **命令(Command)**和** Handler**:RCP中的命令系统允许开发者定义用户可以执行的操作,并通过Handler来处理这些操作的逻辑。 7. **透视图(Perspective)**:透视图是工作台的一种布局方式,它可以将视图和...
在RCP系统中,弹出式日期控件通常是为了简化用户在日期输入时的操作。这种控件不仅允许用户通过点击按钮弹出一个日历视图,还可以在该视图中轻松切换至上一月、下一月,向前或向后滚动一年。这种设计考虑到了用户的...
- 使用命令:定义命令并在菜单中使用它们,提供用户操作的接口。 - 创建视图(Views):视图是用户界面的一部分,通常用于显示和处理数据。 - 编辑器(Editors):用于编辑数据和内容的部分,通常与视图紧密配合。 -...
6. **菜单和工具栏(Menus and Toolbars)**:这是用户与应用程序交互的主要方式。开发者可以自定义菜单项和工具栏按钮,绑定到相应的操作。在HelloWorld中,可能有如何添加和配置这些元素的示例。 7. **命令和 ...
在实际应用中,你可能还需要处理事件监听、菜单和工具栏的创建、以及与其他插件的交互。例如,你可以通过`IActionDelegate`实现自定义的菜单项动作,或通过`ISelectionService`获取当前工作台的选中内容。 在博文...