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.

  • 相关阅读:
    021 顺时针打印矩阵
    020 二叉树的镜像
    019 树的子结构
    018 机器人的运动范围
    017 矩阵中的路径
    022 Jquery总结
    003 css总结
    002 html总结
    016 合并两个排序的链表
    015 反转链表
  • 原文地址:https://www.cnblogs.com/cuizhf/p/2189950.html
Copyright © 2011-2022 走看看