workbench的菜单、工具栏
1扩展org.eclipse.ui.actionSets。该action的label(操作集合的名称)显示在“定制透视图”的对话框中。
2创建menu(如果将action插入到已有的菜单中,不需要创建)。label就是菜单在菜单栏中的名字。
3.创建action。指定action在菜单上的位置,在toolbar上的位置。
其中retarget表示重定目标操作时需要的属性,当试图或编辑器中需要使用全局工作台菜单或工具栏中的操作时,将retarget设置为true。
enableFor的取值:!、?、+、n、*、2+/multiple
view中的action
扩展org.eclipse.ui.viewActions.这些action放在View菜单或是工具栏中。
viewAction:viewContribution
其内的上下文菜单同样扩展自popmenu:viewerContribution、objectContribution见弹出菜单popmenu扩展点。
editor的action
扩展org.eclipse.ui.editorActions.
给editor添加顶层工作台菜单,与一般的工作台菜单不同,编辑器的工作台菜单只有当该编辑器使用时,才会出现(或enable)。其中的targetID值为org.eclipse.ui.DefaultTextEditor.
给编辑器添加上下文菜单时,其popmenu中的viewerContribution中的targetID值为#TextEditorContext,eclipse默认文件编辑器上下文菜单标识符,见弹出菜单popmenu扩展点。
菜单的快捷键
快捷键可以用编程方式实现,也可以通过添加扩展点方式。
由于eclipse的开源性,实现不冲突的快捷键需要解决3个问题。
1 相同功能操作,不同的开发者有了不同的快捷键。
2 不同的功能操作,有了相同的快捷键。
3 快捷键可能与平台定义的快捷键冲突。
为此,引入org.eclipse.ui.commands扩展点。命令与键绑定、操作和处理程序相关,但不定义操作的实现。该实现由操作本身来完成。
还需要添加扩展点org.eclipse.ui.bindings,在该扩展点新增key元素,包括sequence(键组合)、schemeId(激活该快捷键使用的配置,一般情况将键绑定添加到默认的eclipse的配置org.eclipse.ui.defaultAcceleratorConfiguration)、contextId(激活该快捷键所使用的上下文标识符,默认使用org.eclipse.ui.context.windows)、commandId(命令)。
最后将commandId添加到菜单属性中的definitionId中。
菜单扩展点org.eclipse.ui.menus
org.eclipse.ui.menus (Eclipse3.3)
——负责显示。如菜单的位置、文字、图标、提示信息、样式、是否可见等。
org.eclipse.ui.commands (Eclipse2.1)
——负责定义菜单ID。同时可以指定实现该菜单行为的类。
org.eclipse.ui.handlers (Eclipse3.1)
——负责定义实现菜单行为的类以及是否可执行(灰化)。
org.eclipse.ui.bindings (Eclipse3.1)
——负责定义菜单的快捷键。
org.eclipse.core.expressions.definitions (Eclipse3.3)
——定义表达式。在实现菜单灰化时,起辅助作用。
菜单项定义
locationURI的一般格式为:
PID:VID
PID:VID?after=MID
PID:VID?abefore=MID
PID为菜单项的归属,只有3个可选值:菜单栏(menu)、工具栏(toolbar)、弹出菜单(popup)
VID为菜单项所附的位置:
如果PID表示的是菜单栏,那么VID就表示该菜单项的上一级菜单的ID
如果PID表示的是工具栏,那么VID就表示该菜单项所在的工具组ID
如果PID表示的是弹出菜单,那么VID就表示该菜单所在的视图ID或编辑器ID
MID表示的是与该菜单项相邻的菜单项ID
添加一个menuContribution。
设置"menuContribution"属性:
· locationURI是设定所在位置,由一个字符串定义,字符串的格式为:[Scheme]:[ID]?[Query]分为三部分:
· Scheme:类型,取值为menu、popup或toolbar
· ID:基准,已存在的菜单ID、工具栏ID或视图ID等,常见的包括:
· 主菜单:org.eclipse.ui.main.menu
· 主工具栏:org.eclipse.ui.main.toolbar
· 弹出菜单:org.eclipse.ui.popup.any
· Query:格式为<placement>=<id>,placement为before、after或endof,id为一个已存在的菜单项。
常见的locationURI有:
· 主菜单栏:menu:org.eclipse.ui.main.menu
· 主工具栏:toolbar:org.eclipse.ui.main.toolbar
· 所有弹出菜单:popup:org.eclipse.ui.popup.any
这里指定locationURI为主菜单上:menu:org.eclipse.ui.main.menu。
如果是popmenu我们针对某一个视图,则:popup:com.my.eclipse.MyView.
放在某一菜单的某个菜单项之后为:menu:com.my.main.menu?after=com.my.menuitem
给menucontribution添加一个menu,指定该menu的显示名称label为File。
给menu添加一个command,指定该command的id和command的显示名称label(Exit)。
上下文菜单扩展点popmenu
弹出菜单有两个扩展项:objectContribution,viewerContribution。
以下是一个过滤txt,xml,java文件popupMenus配置文件代码
<extension
point="org.eclipse.ui.popupMenus">
<objectContribution
adaptable="false"
id="cn.ceopen.eclipseone.gencodetools.objectContribution5"
objectClass="org.eclipse.core.resources.IResource">
<action
class="jnewscollector.action.JTopElementImport"
id="JNewsCollector.TopElementImport"
label="导出"/>
<action
class="jnewscollector.action.JTopElementAutoTrace"
id="JNewsCollector.TopElementAutoTrace"
label="开始跟踪"/>
<action
class="cn.ceopen.eclipseone.gencodetools.Action5"
id="cn.ceopen.eclipseone.gencodetools.action5"
label="ffffffffff"
menubarPath="cn.ceopen.eclipseone.gencodetools.Domainmenu">
</action>
<visibility>
<or>
<objectState
name="name"
value="*.xml">
</objectState>
<objectState
name="name"
value="*.txt">
</objectState>
<objectState
name="name"
value="*.java">
</objectState>
</or>
</visibility>
</objectContribution>
<viewerContribution
id="com.xyz.C2"
targetID="org.eclipse.ui.views.TaskList">
<action
id="com.xyz.showXYZ"
label="&Show XYZ"
style="toggle"
state="true"
menubarPath="additions"
icon="icons/showXYZ.gif"
helpContextId="com.xyz.show_action_context"
class="com.xyz.actions.XYZShowActionDelegate" />
</viewerContribution>
</extension>
objectClass指出可以接受的目标对象类型。
adaptable指出适配IResource的对象是可接受的目标。一般为false。
nameFilter通配符过滤器。
objectContribution中的visibility提供了替代nameFilter和objectClass的方法,功能更为强大。
objectContribution中的filter对操作的过滤,是visibility的一种替代形式(但不包含在visibility中),如<filter name=”priority” value=”1”/>。filter和objectState都使用IActionFilter接口,每个选中的对象必须实现IActionFilter接口,并实现其中的testAttribute()方法。
再一种过滤方式是在action中的selection,它也差不多等同于替代nameFilter和objectClass。
注意:enableFor:是使菜单是否可用(变灰)。而过滤(包括visibility,selection,nameFilter和objectClass)是使菜单是否可见。
弹出菜单的实现方式:1通过popmenu扩展点;2通过硬编码;3通过menus扩展项menuContribution:popup:com.mypop.sample.MyView(menuContribution),结合commands实现扩展点。
另一部分:
SWT中的菜单
在shell上创建菜单
主要是注意几个参数
Menu bar = new Menu (shell, SWT.BAR);//定义menuBar(位置)
shell.setMenuBar (bar);
MenuItem editItem = new MenuItem (bar, SWT.CASCADE);//(在bar创建item)
editItem.setText ("Edit");
Menu submenu = new Menu (shell, SWT.DROP_DOWN);//创建下拉菜单
editItem.setMenu (submenu);
MenuItem item = new MenuItem (submenu, SWT.PUSH);//创建菜单项
item.addListener (SWT.Selection, new Listener () {
public void handleEvent (Event e) {
t.selectAll();
}
});
item.setText ("Select &All\tCtrl+A");
实现动态的menu菜单项
移除然后重新建立
menu.addListener (SWT.Show, new Listener () {
public void handleEvent (Event event) {
MenuItem [] menuItems = menu.getItems ();
for (int i=0; i<menuItems.length; i++) {
menuItems [i].dispose ();
}
TreeItem [] treeItems = tree.getSelection ();
for (int i=0; i<treeItems.length; i++) {
MenuItem menuItem = new MenuItem (menu, SWT.PUSH);
menuItem.setText (treeItems [i].getText ());
}
}
});
实现动态的MenuManager菜单项
menuManager.setRemoveAllWhenShown(true);
eclipse rcp菜单实现
菜单分类
主菜单、视图菜单、上下文菜单
主菜单的实现
1. 在ApplicationActionBarAdvisor中实现
覆盖方法makeAction(…),创建action并register(action)。覆盖方法fillMenuBar(…),在方法中新建一个menuManger(或找个已存在的,其实就是一个菜单),将action添加到menuManager中。
2. 利用org.eclipse.ui.actionSets扩展点
扩展该扩展点,在其上一个actionset,并添加menu,action等。
3. 利用org.eclipse.ui.menus和org.eclipse.ui.commands的组合
扩展commands扩展点,在其上定义一堆command,对每一个command要指定id和defaultHandler类两个值(最低要求);扩展menus扩展点,创建一个menuContribution,在其下可以建立popmenu,menu,dynamicmenu,command等,这里我先简单实现,创建一个menu(id可以先不指定),在menu上创建一个command,对于command将其commandId指定为刚才我们创建的command的id。Ok,菜单就创建好了。
视图/编辑器菜单的实现
实现方式1:在程序creatPartControl()中通过view.getViewSite().getActionBars(). getMenuManager(),(或者getToolBarManager())向其增加action。
实现方式2:扩展org.eclipse.ui.viewActions或org.eclipse.ui.editorActions扩展点
向特定视图添加工具菜单(toolbar),添加下拉式菜单(pull-down),实现接口IViewActionDelegate(IEditorActionDelegate)。须将viewerContribution的属性值设为对应view的ID,如:targetID:org.eclipse.jdt.ui.PackageExplorer即向包资源管理器中添加工具菜单和下拉式菜单(好像只有一个菜单▼)。
上下文菜单
实现方式1:在程序中判断对象等直接写右键菜单和其响应,并注册到视图/编辑器中。
view.getViewSite().registerContextMenu(XXX);
实现方式2:扩展org.eclipse.ui.popupMenus扩展点(待查)
有objectContribution和viewerContribution两类
l objectContribution 实现接口IObjectActionDelegate,向视图上下文中添加弹出式菜单,如包资源管理器、代码编辑区等。
l viewerContribution实现接口IViewActionDelegate,向特定视图中添加弹出式菜单,如将viewerContribution属性设置为对应view的值即可,如
id:org.eclipse.jdt.ui.PackageExplorer
targetID:org.eclipse.jdt.ui.PackageExplorer即向包资源管理器中添加上下文菜单
相关推荐
在 Eclipse 的菜单栏中,我们可以看到多个菜单项,每个菜单项都对应着不同的功能。下面是菜单栏中一些常见的英文对照: 1. File(文件菜单):这是 Eclipse 中最基本的菜单项,包含了新建、打开、保存、关闭等文件...
标题中的“eclipse颜色舒适窗口(浅绿)”指的是在Eclipse这款集成开发环境中自定义的一种配色方案,主要是为了提供一个对眼睛更为友好的工作环境。Eclipse是一款广泛使用的开源Java开发工具,但它的默认界面颜色...
3. **启用Color Theme插件**:启动Eclipse后,进入菜单栏的“Window”(视窗)选项,然后依次选择“Preferences”(首选项) -> “General”(常规) -> “Appearance”(外观) -> “Color Theme”(颜色主题)。...
- 特别注意菜单栏、工具栏以及对话框中的文本是否已经汉化。 #### 五、汉化过程中可能遇到的问题及解决方法 1. **汉化包安装失败**: - 确保下载的是适合您Eclipse版本的汉化包。 - 检查Eclipse的安装路径中不...
- 安装完成后,插件可能在Eclipse的菜单栏或工具栏中添加新的选项,用户可以通过这些入口激活插件功能。 - 可能需要配置插件设置,如快捷键绑定、显示模式等,以适应个人工作习惯。 4. **源码**: - 描述中的...
- 在菜单栏中选择“Window”(窗口)> “Preferences”(首选项),或者直接使用快捷键`Ctrl + ,`进入首选项设置页面。 2. **定位至代码辅助配置**: - 在弹出的偏好设置对话框中,通过左侧的树状目录导航至...
Eclipse的菜单栏是用户与程序交互的主要界面之一,菜单栏中包含多个主要菜单,每个菜单下又包含多个子菜单项,以及相关联的操作命令。 1. File(文件)菜单:这是最常用的一个菜单,包含了项目相关的基本操作,如...
二、工具栏(Toolbar) * New 新建按钮:创建新文件或项目。 * Open 打开按钮:打开已有的文件或项目。 * Save 保存按钮:保存当前文件或项目。 * Cut 剪切按钮:剪切当前选中的内容。 * Copy 复制按钮:复制当前...
3. 在左侧导航树中,依次展开`General`(常规)`->`Content Types`(内容类型)。 4. 在右侧,可以看到不同类型的文件格式,如`Text`, `XML`, `Java Source`等。 5. 选择你想要更改的文件类型,例如`Text`,然后在下方`...
2. **File->Import**:在顶部菜单栏中,点击“文件”(File),然后在下拉菜单中选择“导入”(Import)选项。 3. **General->Preferences**:在弹出的导入向导窗口中,展开“常规”(General)类别,然后选择“首...
5. **创建桌面快捷方式**:打开`Applications`文件夹中的`eclipse`文件夹,将Eclipse图标拖拽到Dock栏,以便于快速启动。 6. **检查Java版本**:确认已安装的Java版本符合要求。如果需要更新Java版本,可以通过系统...
- **操作步骤**: 在【导航器】视图的工具栏中选择【使用编辑器链接】按钮,使视图显示当前正在编辑的文件。 #### 9. 手工编辑器/视图同步 - **知识点**: 用户可以使用【浏览】>【显示位置】命令来实现编辑器与视图...
7. **检查效果**:启动Eclipse后,检查所有的菜单、工具栏、对话框等是否都已转换为中文。如果仍有部分未汉化的部分,可能是由于某些插件不支持中文,或者汉化包不完整。 8. **更新和维护**:随着Eclipse版本的更新...
6. **检查汉化效果**:启动Eclipse后,查看菜单、工具栏和对话框是否已变为中文。如果仍有部分界面未汉化,可能是因为这些组件的本地化文件不在汉化包内,或者需要调整Eclipse的设置。可以在Eclipse的“窗口”...
安装完成后,重启Eclipse,新功能将会出现在菜单栏和工具栏中。 开发Red5应用程序通常涉及以下技术点: 1. **Java编程**:因为Red5是用Java编写的,所以开发者需要熟悉Java语言。 2. **ActionScript/Flash**:Red5...
- 关闭欢迎界面后,可以通过菜单栏选择"文件" -> "新建" -> "Java项目"来创建新的Java项目。 - 在新项目中,可以创建Java类并编写代码。 - 编写完成后,右键点击项目,选择"运行" -> "Java应用程序",Eclipse将...
- 通过DEF,开发者可以轻松地定义编辑器的行为,如工具栏操作、属性视图和上下文菜单,实现高度定制化的图形界面编辑体验。 4. **使用教程** - 安装:提供的压缩包文件"eclipse3.2的ve安装文件"包含了VE插件的...
- 在左侧导航栏中找到“常规”(General)>“工作台”(Workbench),点击“恢复默认值”(Restore Defaults),然后关闭首选项窗口。 - 重启Eclipse,打开“帮助”(Help)>“安装新软件”(Install New Software...
- 锁定编辑器:通过工作台工具栏的“固定编辑器”按钮,防止自动关闭编辑器。 - 视图和编辑器的最小化和最大化:双击标题栏或选项卡可以最大化/最小化视图或编辑器。 除此之外,Eclipse还提供了快速视图功能,通过...