麻豆传媒视频在线,国产91精品不卡视频,欧美jizz19性欧美,污视频网站在线观看,91涩漫在线观看,伊人发布在线,九色porny丨首页在线,福利视频一区,久久av网址,久久人人视频

當(dāng)前位置:首頁 > 網(wǎng)站舊欄目 > 學(xué)習(xí)園地 > 設(shè)計軟件教程 > Eclipse Action 深入學(xué)習(xí)筆記(1)

Eclipse Action 深入學(xué)習(xí)筆記(1)
2010-01-14 23:10:22  作者:  來源:
以前做插件用到的ActionSet都只是依葫蘆畫瓢,沒有真正理解它,現(xiàn)在開始好好學(xué)習(xí)學(xué)習(xí),主要是看"Building Commercial-Quality Plug-ins"寫的

Action的組成包括幾個部分,一個是在plugin.xml中的聲明,一個是在Eclipse UI中會用到的IAction實例化對象, 另一個是封裝在IActionDelegate中的action執(zhí)行代碼. action的實例化是基于plugin.xml配置文件和IActionDelegate定義的,Eclipse可以先在界面上將action顯示出來,直到用戶點擊了菜單或者工具條按鈕才會去真正的加載插件,這也就是所謂的Eclipse的延遲加載機制

IActionDelegate有幾個子類需要說明一下:
IActionDelegate2 如果實現(xiàn)IActionDelegate需要一些其他的信息,而這些信息在IActionDelegate銷毀時需要同時被銷毀時, 它可以提供相關(guān)是生命周期事件方法來處理
IEditorActionDelegate 是跟editor相關(guān)的
IObjectActionDelegate 是跟上下文菜單相關(guān)的
IViewActionDelegate 是跟view相關(guān)的
IWorkbenchWindowActionDelegate是跟menubar和toolbar相關(guān)的

Actions和Eclipse中的其他東東一樣,也是通過擴展點org.eclipse.ui.actionSets來添加到Eclipse IDE的各個地方,actions的外在表現(xiàn)形式主要有menubar, toolbar, context menu這樣幾種

在actionSets的下級節(jié)點是actionSet, 它有幾個屬性,id,label都不用說了,還有一個visible屬性,表示在打開Eclipse時是否顯示該action,通常我們可以通過Window > Customize Perspective...來設(shè)置action是否可見

在actionSet下可以添加menu節(jié)點, 它的id,label屬性不用說了,其中的path是用來指定菜單的顯示位置的,一般設(shè)置為additions

action并不是直接添加到menu上的, 而是跟menu內(nèi)部的group關(guān)聯(lián)的,所以我們必須先在menu下創(chuàng)建group,即新建groupMarker, 其name必須保證在當(dāng)前menu下唯一, menu還有一種叫separator的group, 在separator group處添加的menu item會在這個組中的第一個菜單項上面添加一條水平線.而groupMarker則不會有線, 當(dāng)其他action要添加到該menu group下時,使用水平線進行分組就顯得非常必要

group只是用來標(biāo)識menu的位置,即指這個位置可以添加菜單項, 而不是實際的menu item, 實際的menu item是action

因為menu會有層次關(guān)系,所以actionSet中專門用一個menu節(jié)點來表現(xiàn)這種層次關(guān)系, 而toolbar則沒有這種情況,所以這里沒有提供toolbar節(jié)點

在actionSet下添加action就是最終我們要toolbar上顯示的按鈕和menubar上的menu item, 這里有幾個屬性, id和label不用說了,menuBarPath是menu要顯示的位置, 比如"com.qualityeclipse.favorites.workbenchMenu/content",這個值就是actionSet+"/"+group name, toolbarPath 就是toolbar item的顯示位置, 比如"Normal/additions", 還有幾個屬性不常用到,但是有必要解釋一下

allowLabelUpdate這個要在retarget屬性為true的時候有效,還不是很清楚

class 是menu或button要執(zhí)行的動作, 如果使用的是pulldown風(fēng)格的action,還需要實現(xiàn)IWorkbenchWindowPulldownDelegate接口,它的構(gòu)造函數(shù)是無參數(shù)的,如果要傳遞參數(shù),還需要是要實現(xiàn)IExecutableExtension 接口, 這個接口還不是很清楚

definitionId 這個是用來指定action對應(yīng)的command唯一標(biāo)識符的

enablesFor 是一個表達式,用來表示當(dāng)前action是否可用

retarget 不是很理解

state主要是針對style屬性為radio和toggle的,表示當(dāng)前action是否被選中

style:默認(rèn)是push,還有radio,表示一組menu中只能有一個被選中, toggle當(dāng)它是checkbox好了, pulldown說明是子菜單項或者是下拉toolbar menu

對于action所使用的圖標(biāo),我們可以從Eclipse下的plugins\org.eclipse.ui_3.1.2.jar 和 plugins\org.eclipse.jdt.ui_3.1.2.jar得到一些gif的圖片

Eclipse中actionSet以及下級元素都是有id的,而且他們可以通過一種path的方式來進行指定,比如com.qualityeclipse.favorites.workbenchMenu/content,如果上一級節(jié)點是workbench menu bar或者是view content menu的話,那么它的上一級節(jié)點是不用指定的,只要指定group就好

為了方便其他的插件的action能添加到該插件的actionSet下, 在為插件定義group的時候, 會添加一個為additions的group, additions是eclipse使用的一個默認(rèn)標(biāo)識符,用來表示其他action或menu顯示的位置, 在class中它的對應(yīng)常量是IWorkbenchActionConstants.MB_ADDITIONS, 比如我們定義了一個menu,指定其path為additions, 這表示我們的menu將添加到window的左邊,因為這個就是workbench menubar的additons所在的位置, 如果指定的是window/additions, 那么將作為子菜單項添加到window下

當(dāng)一個actionSet下定義的action跟另一個actionSet下定義的menu關(guān)聯(lián)的時候?qū)l(fā)生Invalid Menu Extension (Path is invalid): some.action.id的異常, 為了避免這種問題,menu需要在兩個actionSet都定義

toolbarPath的指定也跟menuBarPath有同樣的情況, 比如定義為Normal/additions, 這里的Normal指的是workbench toolbar, additions就是action要顯示的group位置

action的class屬性是封裝了執(zhí)行動作的類,它實現(xiàn)了IWorkbenchWindowActionDelegate, 在它里面有幾個方法需要介紹一下, 一個是selectionChanged, 用來動態(tài)修改action的state狀態(tài)值, 是否可用,以及action的text屬性等, 比如對于enableFor屬性來說, 它根據(jù)選中對象的數(shù)量來判斷action是否可用, 但是通過selectionChanged可以通過當(dāng)前選定的對象的情況來調(diào)用setEnable()方法從而更精確的控制action是否可用, 有時候當(dāng)插件還沒有加載,在調(diào)用action的run方法時會加載插件,這時可能在調(diào)用run()方法之前沒有調(diào)用selectedChange方法, 因此在run()方面里面需要寫一些防護性代碼,比如空值的判斷之類的, 另外run()是在主UI線程中執(zhí)行的,因此,如果該執(zhí)行耗時較長,需要將其放到后臺線程中執(zhí)行.

插件運行之后在menubar和toolbar上看到定義的actionSet,可以試試下面的方法:
在Window > Customize Perspective... 下看看是不是actionSet沒有選中
使用Window > Reset Perspective刷新當(dāng)前視圖
關(guān)閉重新打開當(dāng)前視圖
如果還沒有出來,可以在在run或者debug的設(shè)置中將"Clear workspace data before launching "選中, 然后再啟動運行

雖然通過擴展點可以非常方便的在Eclipse上添加,但是這個玩意兒多了也不是什么好事, 可能會降低用戶體驗,因此需要進行控制, actionSet擴展點也有相關(guān)的設(shè)置來指定是否可見, 而且還可以調(diào)用IActionSetDescriptor.setInitiallyVisible() 來控制頂層菜單是否可見, 另一種解決辦法就是在首選項中提供一個checkbox讓用戶決定是否顯示頂層菜單,其編程實現(xiàn)就是在代碼中調(diào)用IActionSetDescriptor.setInitiallyVisible()和IWorkbenchPage.hideActionSet()來進行控制

安徽新華電腦學(xué)校專業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢
91精品一区二区三区久久久久久 | 日韩电影在线观看网站| 中文精品一区二区| 久久不见久久见免费视频7| 国产精品乱战久久久| av不卡一区| 成人在线免费视频观看| 婷婷成人基地| 国产欧美高清| 久久99国产精品免费网站| 成人少妇影院yyyy| 中文字幕巨乱亚洲| 亚洲一二三四区不卡| 欧美在线一区二区三区| 亚洲成人a**站| 中文字幕最新精品| 茄子视频成人在线| 天堂影视av| 美女免费免费看网站| 国产youjizz在线| 国产精品一二三产区| 日韩在线观看中文字幕| 99精品一区| 免费一区二区视频| 国产亚洲精品精华液| 午夜精品福利视频网站| 欧美一区二区黄| 亚洲三级 欧美三级| 韩国福利视频一区| 在线视频专区| 91www在线| 狠狠一区二区三区| 99精品福利视频| 成人亚洲一区二区一| 亚洲一二三四在线| 精品国产免费久久| 久久久久久97| 欧美5-7sexvideos处| av成人影院在线| 三级小说欧洲区亚洲区| 手机精品视频在线观看| 欧美精品久久久久久久久久| 国产精品白嫩初高中害羞小美女| 成年人在线播放| 另类春色校园亚洲| 亚洲国内精品在线| 亚洲精品xxxx| 91国内精品| 日韩三级视频在线看| 中文字幕一区二区三三| 99久久国产综合精品色伊| 久久这里只有精品视频网| 亚洲国产精品麻豆| 亚洲午夜在线观看视频在线| 亚洲天堂免费看| 加勒比中文字幕精品| 久久久国产精品x99av | 亚洲柠檬福利资源导航| 大色综合视频网站在线播放| 69久久久久| 亚洲精品69| 黄色成人在线网址| 久久精品欧美日韩| 欧美一区二区三区在线观看| 国语自产精品视频在免费| 成年网站在线| 亚洲成人免费| 黄色网在线免费看| 国产精品毛片大码女人| 天堂av一区| 国产精品综合网站| 欧美国产视频在线| 欧美一区综合| 黄色日韩网站视频| 国产精品理论片| 日韩成人激情在线| 日本三级电影网| 播放一区二区| 国产亚洲精品bv在线观看| 亚洲精品高清视频在线观看| 999久久久国产精品| 成人av动漫在线| 日韩一级完整毛片| 成年在线播放小视频| 国产精品xxx| 日韩精品一级中文字幕精品视频免费观看 | 亚洲欧洲精品一区二区三区 | 精品午夜视频| 成人国产精品一区二区| 亚洲精品日日夜夜| 麻豆成人综合网| 2020国产精品极品色在线观看| 91破解版在线看| 久久国产加勒比精品无码| 91精品国产色综合久久不卡98| а√天堂8资源在线官网| 成人6969www免费视频| 中文字幕精品—区二区四季| 色噜噜久久综合伊人一本| 成视频免费观看在线看| 亚洲视频福利| 一本色道亚洲精品aⅴ| 国产乱人伦真实精品视频| 亚洲一区有码| 99久久久无码国产精品| 亚洲色图综合网| 黄网址在线观看| 亚洲高清网站| 欧美亚洲尤物久久| 黄动漫在线看| 欧美理论视频| 亚洲国产另类av| 国产啪精品视频| 日本一道高清一区二区三区| 中文字幕视频一区| 5566日本婷婷色中文字幕97| 在线观看亚洲精品福利片| 不卡视频在线看| 日韩视频免费中文字幕| 台湾佬中文娱乐久久久| 国产精品一区二区久激情瑜伽| 精品一区二区亚洲| 热色播在线视频| 不卡视频在线观看| 97在线日本国产| 中文视频在线| 国产一区二区精品久久99| 美女精品久久久| 婷婷婷国产在线视频| 香蕉av一区二区| 欧美亚洲高清一区| 国产高清视频在线| 蜜臀av一区二区在线观看 | 精品久久久久久国产| 国产精品久久久久久av福利| 中文字幕精品影院| 91国产精品成人| 网友自拍视频在线| 国产成人精品1024| 久久看人人爽人人| 5566日本婷婷色中文字幕97| 神马久久av| 欧美中文字幕不卡| 成人在线观看亚洲| 成人国产精品免费| 国产精品极品美女粉嫩高清在线| 成人3d动漫在线观看| 日韩欧美www| 在线中文字幕播放| 亚洲三级在线看| 中文字幕免费在线| 韩国成人福利片在线播放| 久久久伊人日本| 日韩欧美二区| 日韩国产高清视频在线| www一区二区三区| 亚洲午夜免费电影| 欧美一区二区少妇| 国产成人三级在线观看| 国产精品都在这里| 国产精品啊v在线| 自拍偷拍亚洲在线| 超碰地址久久| 欧美日韩国产综合视频在线观看| 国产盗摄一区二区| 中文字幕一区二区三中文字幕| 国产黄色影视| 激情五月激情综合网| 国产va免费精品高清在线| 欧美日韩久久| 色综合伊人色综合网| 欧美日韩在线播放视频| 精品捆绑美女sm三区| 欧美日韩精品一区二区三区视频| 亚洲成精国产精品女| 激情av在线播放| 亚洲综合在线免费观看| 性欧美video高清bbw| 一区二区不卡在线视频 午夜欧美不卡在| 国产青青草在线| 国产精品美女久久久久久久久 | 国产写真视频在线观看| 久久久久久久久伊人| 青青久在线视频免费观看| 成人免费毛片app| 五月激情在线| 久久综合久久久久88| www日韩tube| 成人欧美一区二区三区1314| 91国内在线| 一本色道**综合亚洲精品蜜桃冫| 四虎4545www国产精品| 欧美高清视频一二三区| 女仆av观看一区| 日韩亚洲在线观看| 免费欧美日韩| 色8久久精品久久久久久蜜 | 久久久久久久久蜜桃| 亚洲成a人v欧美综合天堂| 日韩视频在线一区|