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

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

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

    精彩的人生

    好好工作,好好生活

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


    原文標題: 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里面節點得對象.
    Viewer設置LabelProvider時需要如下:

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

    寫了這個以后還沒完, 需要讓INode實現IActionFilter接口. eclipse得API中說要么實現IActionFilter接口, 要么實現IAdapter接口, 如果實現后者得話, 系統會調用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;
        }

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

        /**
         * 校驗數據
         * 
         * 
    @return
         
    */

        
    private boolean verify(){
            
    //校驗數據
            
    //不管是否有error或者warning都需要通知向導樹刷新一下節點.
            ExplorerView view = (ExplorerView) getSite().getPage().findView(ExplorerView.class.getName());
            view.refresh((INode) getEditorInput());

            
    return true;
        }

    現在好了, 只要執行verify方法, viewer就會刷新對應得節點, 以達到顯示左下方小圖標得目的.


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








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

    Feedback

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

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

    主站蜘蛛池模板: 亚洲午夜福利在线观看| 一区二区三区亚洲视频| 国产精品亚洲AV三区| 免费看男女下面日出水来| 亚洲天天做日日做天天欢毛片| 中国内地毛片免费高清| 亚洲自偷自偷偷色无码中文| 久久久精品国产亚洲成人满18免费网站| 99精品视频在线观看免费专区| 亚洲AV无码国产精品麻豆天美| 国产性生大片免费观看性| 亚洲午夜久久久影院| 免费av一区二区三区| 亚洲午夜精品一区二区| 1区2区3区产品乱码免费| 亚洲男人的天堂久久精品| 精品乱子伦一区二区三区高清免费播放 | 在线免费观看色片| 国产亚洲人成网站在线观看| www免费插插视频| 情侣视频精品免费的国产| 午夜亚洲国产理论片二级港台二级| 国产成人在线观看免费网站 | 免费人成在线观看网站品爱网| 久久亚洲私人国产精品| 成年女人看片免费视频播放器| 国产精品亚洲一区二区在线观看| 国产无遮挡又黄又爽免费视频| 丰满少妇作爱视频免费观看| 亚洲短视频男人的影院| 久久不见久久见中文字幕免费| 亚洲午夜国产精品无码老牛影视| 三年片在线观看免费观看大全动漫| 亚洲成av人片不卡无码| 四虎永久免费地址在线网站| 日韩精品无码免费专区网站| 久久国产亚洲精品| 国产亚洲精品线观看动态图| 18禁免费无码无遮挡不卡网站| 猫咪免费人成网站在线观看入口| 久久久久亚洲AV成人无码|