最近做的一个PrettyPro的plugin有这样一个需求:用户在Editor中的右键菜单中有Format和Format Selection两个Action,根据用户是否选择了Editor中的内容而决定其中那个是enable的,哪个是disable的。本来以为实现这个功能要动态的添加action而不是在plugin.xml中声明能做到的,但是苦于找不到动态添加action的方法,就回头去啃plugin.xml的dtd,终于让我找到了~
<!----> 1 <extension point="org.eclipse.ui.popupMenus">
2 <viewerContribution id="com.qad.progress.prettypro.ui.editor.PopupMenuContribution" targetID="#TextEditorContext" >
3 <menu label="%editorPopupMenuLabel" path="additions" id="com.qad.progress.prettypro.ui.menu.FormatSubPopupMenu">
4 <separator name="%editorPopupMenuSeparatorName"/>
5 </menu>
6 <action
7 label = "%editorPopupMenuAction1Label"
8 icon = "%editorPopupMenuAction1Icon"
9 class = "com.qad.progress.prettypro.ui.actions.FormatSelectionAction"
10 tooltip = "%editorPopupMenuAction1ToolTip"
11 menubarPath = "com.qad.progress.prettypro.ui.menu.FormatSubPopupMenu/%editorPopupMenuSeparatorName"
12 id = "com.qad.progress.prettypro.ui.actions.editorPopupMenu.FormatSelectionAction"
13 enablesFor="+">
14 </action>
15 <action
16 label="%editorPopupMenuAction2Label"
17 icon="%editorPopupMenuAction2Icon"
18 class="com.qad.progress.prettypro.ui.actions.FormatAction"
19 tooltip="%editorPopupMenuAction2ToolTip"
20 menubarPath="com.qad.progress.prettypro.ui.menu.FormatSubPopupMenu/%editorPopupMenuSeparatorName"
21 id="com.qad.progress.prettypro.ui.actions.editorPopupMenu.FormatAction"
22 enablesFor="!">
23 </action>
24 </viewerContribution>
25 </extension>
注意加重斜体的地方,这就是声明当选中1或多个("+")和不选中("!")时是否要enable这个action。我一开始还以为这个东西只能在outline view或browser view中有具体选择项(如:文件)时才能用,没想到在editor里面判断用户是否选中内容的时候也可以用,真是有趣~
BTW:注意我的两个action action的顺序是Format selection和Format entire file,但是在显示的时候却是反的,不知道是为什么...
相关推荐
3. 如果以上条件都未明确,Android会选择优先级最高的Activity,优先级由`android:priority`属性决定,数值越大,优先级越高。如果优先级相同,系统会随机选择一个。 在源码中,你可能会看到如何在Activity内部通过...
当有多个应用可以处理相同的Action时,可以使用`createChooser(Intent target, CharSequence title)`创建一个Intent选择器,让用户选择合适的处理应用。 总之,Intent的Action属性是Android中非常关键的一个概念,...
在某些场景下,我们可能需要启动多个Activity并设置相同的action,然后在接收方Activity中根据不同的条件进行不同的处理。这个"Android Activity设置相同的action进行判断源码"项目就是针对这种情况进行深入探讨的...
5. **选择最佳匹配**:如果有多个Activity满足条件,系统会寻找最佳匹配。这通常意味着找到最具体的Filter,即Data部分匹配最多的Intent。如果仍然无法确定,系统可能会抛出异常,提示开发者必须明确指定目标...
此外,软件还提供了丰富的事件系统,让用户能够设置游戏逻辑,例如角色与环境的交互、敌人行为模式等,只需通过简单的条件和动作组合即可实现。 游戏中的动画和动作也是Action Game Maker的一大特色。用户可以...
在Struts2框架下,每个Action方法可以有多个结果集,它们用于指定不同的业务逻辑处理后的页面跳转或者数据返回方式。如果Action执行完毕但没有明确的结果集来指引下一步流程,Struts2会抛出此错误。 #### 示例代码...
3. **组合Action**:创建多个子Action,每个子Action处理一个业务,然后在主Action中根据条件调用合适的子Action。 4. **使用业务层(Service层)**:将业务逻辑封装到Service层,Action只负责调用Service并处理...
当需要根据用户操作或特定条件动态地改变表单的提交目标时,可以使用JavaScript来修改`form action`属性。以下将详细讲解如何使用JavaScript来动态修改`form action`。 1. **基本语法** 在JavaScript中,可以使用`...
1. **Action配置**:在Struts配置文件中,每个Action都有一个唯一的名称,这个名称用于映射URL请求。配置还包括了Action类的全限定名,以及Action的输入、成功和错误结果的定义。 2. **Action类**:Action类是...
2. **关联事件处理函数**:`Action`需要有一个或多个事件处理函数,当用户触发`Action`时,这些函数会被调用。在wxPython中,我们可以通过`Bind`方法来绑定事件处理函数。 ```python def on_action_triggered(self, ...
Action是最基本的过滤条件,例如ACTION_VIEW、ACTION_EDIT等。同时,还可以通过category(类别)和data(数据URI)进一步细化过滤。 2. **Intent的匹配过程**:当发送一个Intent时,系统会遍历所有声明了对应action...
2. 在Action中解析请求参数,实例化Page Bean并设置页码信息。 3. 调用DAO进行分页查询,将结果存储在Page Bean中。 4. 将Page Bean作为模型对象传递到JSP页面。 5. 在JSP页面中,使用Struts标签或者JSP标签库显示...
《PHP in Action》是由Manning出版社于2007年6月出版的一本技术书籍,主要面向已经有一定编程基础,想要深入学习PHP的开发者。这本书是PHP开发领域的重要参考资料,它详细介绍了PHP语言的核心概念、最佳实践以及在...
Action2可以根据条件设置输出参数`ReturnMsg`,并在Action1中通过`Parameter`方法读取。 2. **使用ExitAction和ReturnValue** - `ExitAction`函数可以用来退出Action,并返回一个值。Action1可以通过`RunAction`...
- **并发访问共享资源**:如果`Action`实例持有共享资源(如全局变量),则必须使用同步机制,如`synchronized`块或方法,以防止竞态条件。 - **线程局部变量**:如果可能,使用`ThreadLocal`来存储线程相关的状态...
5. **条件(Conditions)**:Ant提供了一组条件任务,如`available`检查文件或目录是否存在,`equals`比较两个值等,这些条件可以用于控制构建流程的分支。 6. **依赖关系(Dependencies)**:Ant的任务执行顺序由...
**LINQ in Action** 是一本专注于探讨Language Integrated Query(LINQ)技术的书籍,属于In Action系列,这个系列以其深入浅出的讲解和...这本书不仅适合有.NET基础的开发者,也适合想要提升数据处理能力的程序员。