最近做的乙個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"
/>
5menu
>
6<
action
7label
= "%editorpopupmenuaction1label"
8icon
= "%editorpopupmenuaction1icon"
9class
= "com.qad.progress.prettypro.ui.actions.formatselectionaction"
10tooltip
= "%editorpopupmenuaction1tooltip"
11menubarpath
= "com.qad.progress.prettypro.ui.menu.formatsubpopupmenu/%editorpopupmenuseparatorname"
12id
= "com.qad.progress.prettypro.ui.actions.editorpopupmenu.formatselectionaction"
13enablesfor
="+"
>
14action
>
15<
action
16label
="%editorpopupmenuaction2label"
17icon
="%editorpopupmenuaction2icon"
18class
="com.qad.progress.prettypro.ui.actions.formataction"
19tooltip
="%editorpopupmenuaction2tooltip"
20menubarpath
="com.qad.progress.prettypro.ui.menu.formatsubpopupmenu/%editorpopupmenuseparatorname"
21id
="com.qad.progress.prettypro.ui.actions.editorpopupmenu.formataction"
22enablesfor
="!"
>
23action
>
24viewercontribution
>
25extension
>
注意加重斜體的地方,這就是宣告當選中1或多個("+")和不選中("!")時是否要enable這個action。我一開始還以為這個東西只能在outline view或browser view中有具體選擇項(如:檔案)時才能用,沒想到在editor裡面判斷使用者是否選中內容的時候也可以用,真是有趣~
btw:注意我的兩個action action的順序是format selection和format entire file,但是在顯示的時候卻是反的,不知道是為什麼...
如何有條件的設定Action
最近做的乙個prettypro的plugin有這樣乙個需求 使用者在editor中的右鍵選單中有format和format selection兩個action,根據使用者是否選擇了editor中的內容而決定其中那個是enable的,哪個是disable的。本來以為實現這個功能要動態的新增action...
有條件的表聯接
表1和表2在聯接時,希望顯示表1的全部記錄以及表2的部分記錄。嘗試使用下面的 sql 語句 select table1.table2as.from table1 left outer join select from table2 where rightname 計畫編制員 as table2as ...
RAILS有條件的校驗
rails中所有的驗證宣告都可以接受 if 選項,可以指定一段在校驗之前執行的 比如 只有在郵箱位址不為空的時候才驗證郵箱位址的格式 使用proc物件,呼叫時,傳入當前的模型物件作為引數,返回false時,不做校驗 validates format of email,with a za z0 9 a...