如何有条件的设置Action

最近做的一个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,但是在显示的时候却是反的,不知道是为什么...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值