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

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

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

    精彩的人生

    好好工作,好好生活

    BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
      147 Posts :: 0 Stories :: 250 Comments :: 0 Trackbacks
    在做的項目里,需要一個這樣的顯示效果.
    以前從來沒有做過,也不知道該用什么關(guān)鍵字來搜索.
    于是,只好用最原始的辦法,看Eclipse的源代碼.最后一些跟decorator相關(guān)的類引起了我的注意,還發(fā)現(xiàn)有一個相關(guān)的LabelProvider.于是我用這個詞作為關(guān)鍵字搜索到了下面這篇文章,覺得十分有用,所以暫存到這里.


    原文標題: org.eclipse.ui.decorators得用法

    <extension point="org.eclipse.ui.decorators">
        
    <decorator icon="icons/warning_small.gif" id="cnooc.rcp.decorator.node.warning" label="Data Warning Decorator" lightweight="true" location="BOTTOM_LEFT" state="true">
            
    <enablement>
                
    <and>
                    
    <objectClass "com.eplat.cnooc.rcp.node.INode"/>
                    
    <objectState name="hasWarning" value="true"/>
                
    </and>
            
    </enablement>
        
    </decorator>
        
    <decorator icon="icons/error_small.gif" id="cnooc.rcp.decorator.node.error" label="Data Error Decorator" lightweight="true" location="BOTTOM_LEFT" state="true">
            
    <enablement>
                
    <and>
                    
    <objectClass "com.eplat.cnooc.rcp.node.INode"/>
                    
    <objectState name="hasError" value="true"/>
                
    </and>
            
    </enablement>
        
    </decorator>
    </extension>

    INode是TreeViewer里面節(jié)點得對象.
    Viewer設(shè)置LabelProvider時需要如下:

    viewer.setLabelProvider(new DecoratingLabelProvider(new ViewLabelProvider(),
            Activator.getDefault().getWorkbench().getDecoratorManager().getLabelDecorator()));

    寫了這個以后還沒完, 需要讓INode實現(xiàn)IActionFilter接口. eclipse得API中說要么實現(xiàn)IActionFilter接口, 要么實現(xiàn)IAdapter接口, 如果實現(xiàn)后者得話, 系統(tǒng)會調(diào)用getAdapter()方法. 不過我還是選擇前者.

        /**
         * (non-Javadoc)
         * 
         * 
    @see org.eclipse.ui.IActionFilter#testAttribute(java.lang.Object, java.lang.String,java.lang.String)
         
    */

        
    public boolean testAttribute(Object target, String name, String value){
            
    if (name.equals("hasWarning")){
                
    return !getProblems().hasError() && getProblems().hasWarning();
            }
     else if (name.equals("hasError")){
                
    return getProblems().hasError();
            }

            
    return false;
        }

    意思應(yīng)該比較明顯得, 如果有warning并且沒有error得時候warning得decorator生效. 如果有error則error得decorator生效. name參數(shù)對應(yīng)得就是objectState得name參數(shù). value參數(shù)對應(yīng)得objectState得value參數(shù). target參數(shù)就是viewer中得節(jié)點對象, 不過由于INode實現(xiàn)了IActionFilter接口, 因此這里得target就是this了.
    一般來說需要判斷得就是根據(jù)name獲取得值是否等于value, 等于返回true, 否則返回false. 不過這里我不需要判斷這個了, 直接根據(jù)當(dāng)前狀態(tài)返回就好了.
    按照eclipse得原理, 理論上應(yīng)該INode變化以后viewer就會跟著變化, 但是我實驗下來有時候好有時候不好.
    因此在Editor得verify方法里增加了下面得邏輯:

        /**
         * 校驗數(shù)據(jù)
         * 
         * 
    @return
         
    */

        
    private boolean verify(){
            
    //校驗數(shù)據(jù)
            
    //不管是否有error或者warning都需要通知向?qū)渌⑿乱幌鹿?jié)點.
            ExplorerView view = (ExplorerView) getSite().getPage().findView(ExplorerView.class.getName());
            view.refresh((INode) getEditorInput());

            
    return true;
        }

    現(xiàn)在好了, 只要執(zhí)行verify方法, viewer就會刷新對應(yīng)得節(jié)點, 以達到顯示左下方小圖標得目的.


    原文地址: http://blog.csdn.net/bradwoo8621/archive/2007/05/11/1604738.aspx








    posted on 2008-03-25 15:00 hopeshared 閱讀(4573) 評論(2)  編輯  收藏 所屬分類: Eclipse

    Feedback

    # re: 如何讓Eclipse View中的TreeItem顯示出error時的小紅叉和warn時的感嘆號? 2009-02-27 22:17 智商250網(wǎng)
    0【智商250】http://www.iq250.com
    0【生活大家壇】http://bbs.iq250.com   回復(fù)  更多評論
      

    # re: 如何讓Eclipse View中的TreeItem顯示出error時的小紅叉和warn時的感嘆號? 2012-10-29 10:55 小段
    請問大俠:
    testAttribute方法里getProblems()是哪里的方法哦?求指導(dǎo),求demo。
      回復(fù)  更多評論
      

    主站蜘蛛池模板: 日本成人免费在线| 亚洲中文字幕无码久久综合网| 麻豆亚洲AV成人无码久久精品| 亚洲高清免费视频| 99re这里有免费视频精品| 亚洲色丰满少妇高潮18p| 亚洲一区二区三区免费| 免费人成在线观看69式小视频| 亚洲AV无码男人的天堂| 亚洲AV无一区二区三区久久| 最近中文字幕无吗免费高清| 久久久WWW免费人成精品| 色噜噜亚洲男人的天堂| 中文字幕亚洲综合久久菠萝蜜| 青青青免费国产在线视频小草| 亚洲精品国产日韩无码AV永久免费网| 亚洲视频免费播放| 亚洲国产成人乱码精品女人久久久不卡| 91精品国产免费| 久久一区二区三区免费| 亚洲精品无码久久久久牙蜜区| 亚洲成AV人片在WWW色猫咪| 国产成人精品123区免费视频| 最近2019中文字幕免费大全5 | 国产精品极品美女免费观看| 久久精品一区二区免费看| 黄色免费网站在线看| 日韩亚洲国产高清免费视频| 午夜亚洲AV日韩AV无码大全| 亚洲av中文无码| 成人人免费夜夜视频观看| 99re热精品视频国产免费| 99在线视频免费观看| 国产成人va亚洲电影| 2017亚洲男人天堂一| 久久亚洲春色中文字幕久久久| 国产乱辈通伦影片在线播放亚洲 | 国产成人yy免费视频| 精品一卡2卡三卡4卡免费视频| 羞羞漫画登录页面免费| 亚洲经典千人经典日产|