精彩的人生

          好好工作,好好生活

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            147 Posts :: 0 Stories :: 250 Comments :: 0 Trackbacks

          2008年3月25日 #

          今天在搜尋tree的實現,找到了這段代碼,覺得很有用但是還沒想到怎么用,先保存在這里


          一般用匿名內部類實現callback


          public interface YourInterface {

            public void interfaceMethod();

          }


          public class YourClass{

            public void classMethod(YourInterface yInterface)
            {
                  ......
                  yInterface.interfaceMethod();
                  ......
              }
           
            public static void main(String[] args)
            {
                YourClass yClass = new YourClass();

                yClass.classMethod(new YourInterface()
                {
                    public void interfaceMethod()
                    {
                        //do sth
                        System.out.print("hello world.");
                        .......   
                    }
                });
          }

          posted @ 2008-09-16 14:14 hopeshared 閱讀(1540) | 評論 (3)編輯 收藏

          很奇怪,以從來沒覺得這么困惑過。

          從今年開始,對,就是今年,困惑了,很困惑。按照“奮斗”的說法,我很焦慮,非常焦慮。

          為什么會困惑?可能是理想與現實出現了反差吧。其實這個反差以前就有,只不過以前擁有信念,這個信念就是付出就會有回報,不管是什么經歷都是一種成長。

          參加工作了,生活變成了柴米油鹽。信念依然堅持著,但是當發現付出并沒有得到相應的回報,甚至得不到重視,甚至被漠視和忽略,這種困惑,從內心深處迸發了出來,充滿了身體里每個細胞。信念,被懷疑了。人性的丑惡面毫不遮掩的出現在你面前。利益,永遠的利益,才應該是每個人的最終目標。但是,應該這樣么?我不知道。

          自我感覺良好,有缺點我承認,不管是工作上還是生活上。但是這并沒有讓自己覺得差人一等,我有我的特色。但是,就是我這樣的人,兢兢業業的工作,不計得失不喊苦累,還找的到么?恐怕很少了吧,不然怎么找個能踏實干活的實習生都找不到?

          伯樂與千里馬,其他同事的故事有時能讓自己寬慰一下,或許繼續等等,終會有出頭之日。機遇,多好的詞阿,它告訴你機會是可遇不可求的。但是,埋頭苦干的人們,能看到頭頂上飄過的機會么?是不是該抬起頭,看看窗外的世界了?

          美國的一個同事離職了,十分吃驚。最開始以為他是被累壞了于是提出離職,后來才搞清楚是移民文件的問題。仔細想了想他的境遇,是不是比我更加悲慘?但是他沒有一句怨言。呵呵,我想,更多的原因應該是環境和觀念的區別。不過如果讓我遇到這事,估計能比現在更加困惑。

          困惑,也許似曾相識。在升高中的時候,在選大學的時候,在復試研究生的時候。但是那時候的困惑很快就一掃而過了。為什么現在揮之不去呢?

          我想,那是因為我知道現在想要什么,應該得到什么,而卻沒有得到。為什么會這樣?自我反省。是自己能力不夠,其實不是。是因為桀驁不馴所以不能趨炎附勢?或許吧。又或者是性格太軟弱,不敢去爭去搶去豪奪?或許吧。突然想起了老黃牛,開墾者荒蕪的土地,吃著最廉價的草,偶爾的嗷嗷聲是唯一發泄的方式,卻永遠不敢掙脫身上的韁繩。這是我么?

          也許困惑了才是機遇,是生命中的溝溝坎坎.也許我該重新審視一下自己,也許該環顧一下四周,也許該看看外面的世界,也許吧.

          posted @ 2008-08-27 19:15 hopeshared 閱讀(1351) | 評論 (1)編輯 收藏

          在做的項目里,需要一個這樣的顯示效果.
          以前從來沒有做過,也不知道該用什么關鍵字來搜索.
          于是,只好用最原始的辦法,看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 @ 2008-03-25 15:00 hopeshared 閱讀(4584) | 評論 (2)編輯 收藏

          主站蜘蛛池模板: 贺州市| 大荔县| 东方市| 安乡县| 抚松县| 满洲里市| 洪湖市| 进贤县| 双峰县| 广灵县| 长海县| 德化县| 郯城县| 新民市| 杭锦旗| 南通市| 山阴县| 邢台县| 绥德县| 临桂县| 洪泽县| 乌兰察布市| 来安县| 宜兴市| 屏东县| 名山县| 阿鲁科尔沁旗| 辽宁省| 红桥区| 天水市| 石首市| 东光县| 翁源县| 平罗县| 济南市| 洛阳市| 府谷县| 白朗县| 甘德县| 门头沟区| 江山市|