<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    love fish大鵬一曰同風(fēng)起,扶搖直上九萬(wàn)里

    常用鏈接

    統(tǒng)計(jì)

    積分與排名

    friends

    link

    最新評(píng)論

    一個(gè)ActionDelegate代理多個(gè)Action

    以前在做Eclipse插件的時(shí)候,習(xí)慣一個(gè)功能定義一個(gè)操作項(xiàng)。比如說(shuō)在org.eclipse.ui.popupMenus擴(kuò)展點(diǎn)上,如果有添加這個(gè)功能,但是添加的類型有多樣,我們假定現(xiàn)在有添加A、B、C、D四個(gè)元素,在擴(kuò)展點(diǎn)上添加一個(gè)viewerContribution擴(kuò)展,添加四個(gè)Action,分別為A、B、C、D。因?yàn)檫@四個(gè)添加功能非常相近,所以我們可以只寫一個(gè)ActionDelegate,把這四個(gè)Action的代理類都指向同一個(gè)。但是ID必須區(qū)分。聲明定義如下:
     <viewerContribution
                
    id="test.viewerContribution1"
                targetID
    ="test.testView" >
             
    <action
                   
    class="test.AddTestDelegate"
                   id
    ="add.a"
                   label
    ="A"
                   menubarPath
    ="test"/>
             
    <action
                   
    class="test.AddTestDelegate"
                   id
    ="add.b"
                   label
    ="B"
                   menubarPath
    ="test"/>
             
    <action
                   
    class="test.AddTestDelegate"
                   id
    ="add.c"
                   label
    ="C"
                   menubarPath
    ="test"/>
             
    <action
                   
    class="test.AddTestDelegate"
                   id
    ="add.d"
                   label
    ="D"
                   menubarPath
    ="test"/>
          
    </viewerContribution>

        上面的主要區(qū)別是在id,在所有的代理ActionDelegate中的run(IAction action)方法中都帶有一個(gè)參數(shù)action,這個(gè)參數(shù)有個(gè)用途就是可以在運(yùn)行時(shí)區(qū)別是對(duì)應(yīng)的那個(gè)action。下面我們看一下AddTestDelegate類的定義:

     1package test;
     2
     3import org.eclipse.jface.action.IAction;
     4import org.eclipse.jface.viewers.ISelection;
     5import org.eclipse.ui.IViewActionDelegate;
     6import org.eclipse.ui.IViewPart;
     7
     8public class AddTestDelegate implements IViewActionDelegate {
     9
    10    private IViewPart view;
    11    public AddTestDelegate() {
    12        // TODO 自動(dòng)生成構(gòu)造函數(shù)存根
    13    }

    14
    15    public void init(IViewPart view) {
    16        this.view = view;
    17
    18    }

    19
    20    public void run(IAction action) {
    21        String id = action.getId();
    22        
    23        if(id.equals("add.a")){
    24            //TODO
    25        }
    else if(id.equals("add.b")){
    26            //TODO
    27        }
    else if(id.equals("add.c")){
    28            //TODO
    29        }
    else if(id.equals("add.d")){
    30            //TODO
    31        }

    32
    33    }

    34
    35    public void selectionChanged(IAction action, ISelection selection) {
    36        // TODO 自動(dòng)生成方法存根
    37
    38    }

    39
    40}

        我們可以在運(yùn)行時(shí)通過(guò)action.getId()在識(shí)別是對(duì)應(yīng)的那個(gè)Action。
       總結(jié):這個(gè)途徑可以為插件開發(fā)中避免寫過(guò)多的ActionDelegate,把一些功能較為接近實(shí)現(xiàn)代碼又比較少的操作合并在一起。當(dāng)然,對(duì)于操作步驟比較多的,為了代碼維護(hù)的方便,還是建議單獨(dú)為它定義一個(gè)代理。
          

    posted on 2007-10-31 08:59 liaojiyong 閱讀(897) 評(píng)論(0)  編輯  收藏 所屬分類: Eclipse

    主站蜘蛛池模板: 亚洲AV无码成人精品区在线观看 | 中文字幕版免费电影网站| 亚洲春色在线观看| 亚洲中文字幕在线乱码| 国产一级淫片a免费播放口之| 成人免费激情视频| 久久九九AV免费精品| 国产高潮流白浆喷水免费A片 | 亚洲av无码专区国产不乱码| 亚洲国产成人精品青青草原| 久久久综合亚洲色一区二区三区 | 国产成人精品日本亚洲专区6| 亚洲αv在线精品糸列| 在线亚洲精品福利网址导航| 免费国产人做人视频在线观看| 好男人视频在线观看免费看片| 99久久国产热无码精品免费| 91在线老王精品免费播放| 国产免费AV片在线观看| 精精国产www视频在线观看免费| 免费一级全黄少妇性色生活片| 久久精品熟女亚洲av麻豆| 亚洲AV无码片一区二区三区| 亚洲熟妇AV乱码在线观看| 天天爽亚洲中文字幕| 亚洲xxxx视频| 亚洲午夜理论片在线观看| 亚洲综合国产成人丁香五月激情| 亚洲综合色7777情网站777| 亚洲一区无码中文字幕乱码| 亚洲一区二区三区深夜天堂| 亚洲国产电影在线观看| 麻豆狠色伊人亚洲综合网站| 亚洲人成色777777老人头| 亚洲精品中文字幕无码A片老| 亚洲AV永久无码精品放毛片 | 国产在线ts人妖免费视频| 国产女高清在线看免费观看| 免费va在线观看| 国产精品亚洲不卡一区二区三区| 亚洲线精品一区二区三区 |