如何有條件的設定Action

2022-09-13 19:39:16 字數 2171 閱讀 9034

最近做的乙個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...