zoukankan      html  css  js  c++  java
  • Better ChildFactory

    http://blogs.oracle.com/geertjan/entry/better_childfactory

    ————————————————————————————————————————————————————————————————————————

    Thanks to Jesse, here's a corrected & improved ChildFactory from a few days ago, using ChildFactory.Detachable so that you have addNotify/removeNotify to add/remove the LookupListener and thus avoid a memory leak, together with a createKeys/resultChanged that is simplified too.
    private class FirstLevelChildFactory extends ChildFactory.Detachable<ResultType> implements LookupListener {

        Result<ResultSet> resultRetrievedFromYahoo;

        @Override
        protected void addNotify() {
            resultRetrievedFromYahoo = Utilities.actionsGlobalContext().lookupResult(ResultSet.class);
            resultRetrievedFromYahoo.addLookupListener(this);
        }

        @Override
        protected void removeNotify() {
            resultRetrievedFromYahoo.removeLookupListener(this);
            resultRetrievedFromYahoo = null;
        }

        @Override
        protected boolean createKeys(List<ResultType> list) {
            for (ResultSet rs : resultRetrievedFromYahoo.allInstances()) {
                list.addAll(rs.getResult());
            }
            return true;
        }

        @Override
        protected Node createNodeForKey(ResultType key) {
            String[] split = key.getTitle().split(" ");
            String theNextWordToBeSearched = split[split.length - 1];
            AbstractNode firstLevelNode =
                    new AbstractNode(
                    Children.create(new GenericChildFactory(theNextWordToBeSearched), true),
                    Lookups.singleton(key));
            firstLevelNode.setShortDescription(key.getSummary());
            firstLevelNode.setDisplayName(key.getTitle());
            return firstLevelNode;
        }

        @Override
        public void resultChanged(LookupEvent le) {
            refresh(true);
        }

    }
    This is a very simple & elegant solution.

  • 相关阅读:
    什么是子网掩码?(转)
    测试LM414-IOT网关MQTT功能
    连接s7-200时,提示未找到指定的访问点
    github中文件夹后面跟@+数字什么意思?为什么git clone下来里面是空的?
    Java知识32 数据结构 枚举 向量【多测师】
    java知识31 void 、实例化对象后面带参数、 实例变量(重点)【多测师】
    Java知识30 package【多测师】
    Java知识29 接口【多测师】
    java知识28 Java封装【多测师】
    Java知识27 抽象类【多测师】
  • 原文地址:https://www.cnblogs.com/cuizhf/p/2189950.html
Copyright © 2011-2022 走看看