精彩的人生

好好工作,好好生活

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 阅读(1525) | 评论 (3)编辑 收藏

很奇怪,以从来没觉得这么困惑过。

从今年开始,对,就是今年,困惑了,很困惑。按照“奋斗”的说法,我很焦虑,非常焦虑。

为什么会困惑?可能是理想与现实出现了反差吧。其实这个反差以前就有,只不过以前拥有信念,这个信念就是付出就会有回报,不管是什么经历都是一种成长。

参加工作了,生活变成了柴米油盐。信念依然坚持着,但是当发现付出并没有得到相应的回报,甚至得不到重视,甚至被漠视和忽略,这种困惑,从内心深处迸发了出来,充满了身体里每个细胞。信念,被怀疑了。人性的丑恶面毫不遮掩的出现在你面前。利益,永远的利益,才应该是每个人的最终目标。但是,应该这样么?我不知道。

自我感觉良好,有缺点我承认,不管是工作上还是生活上。但是这并没有让自己觉得差人一等,我有我的特色。但是,就是我这样的人,兢兢业业的工作,不计得失不喊苦累,还找的到么?恐怕很少了吧,不然怎么找个能踏实干活的实习生都找不到?

伯乐与千里马,其他同事的故事有时能让自己宽慰一下,或许继续等等,终会有出头之日。机遇,多好的词阿,它告诉你机会是可遇不可求的。但是,埋头苦干的人们,能看到头顶上飘过的机会么?是不是该抬起头,看看窗外的世界了?

美国的一个同事离职了,十分吃惊。最开始以为他是被累坏了于是提出离职,后来才搞清楚是移民文件的问题。仔细想了想他的境遇,是不是比我更加悲惨?但是他没有一句怨言。呵呵,我想,更多的原因应该是环境和观念的区别。不过如果让我遇到这事,估计能比现在更加困惑。

困惑,也许似曾相识。在升高中的时候,在选大学的时候,在复试研究生的时候。但是那时候的困惑很快就一扫而过了。为什么现在挥之不去呢?

我想,那是因为我知道现在想要什么,应该得到什么,而却没有得到。为什么会这样?自我反省。是自己能力不够,其实不是。是因为桀骜不驯所以不能趋炎附势?或许吧。又或者是性格太软弱,不敢去争去抢去豪夺?或许吧。突然想起了老黄牛,开垦者荒芜的土地,吃着最廉价的草,偶尔的嗷嗷声是唯一发泄的方式,却永远不敢挣脱身上的缰绳。这是我么?

也许困惑了才是机遇,是生命中的沟沟坎坎.也许我该重新审视一下自己,也许该环顾一下四周,也许该看看外面的世界,也许吧.

posted @ 2008-08-27 19:15 hopeshared 阅读(1332) | 评论 (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 阅读(4557) | 评论 (2)编辑 收藏