private void initChildren() { BinTreeTableNode root = (BinTreeTableNode) getRoot(); BinClass clazz = (BinClass) root.getBin(); BinMethod[] overriddables = OverrideMethodsRefactoring.getOverridableMethods(clazz); // group by subclass MultiValueMap map = new MultiValueMap(); for (int i = 0; i < overriddables.length; i++) { map.putAll(overriddables[i].getOwner(), overriddables[i]); } isEmpty = (overriddables.length == 0); List keys = new ArrayList(map.keySet()); Collections.sort(keys, new TypeRefHierarchyComparator()); for (Iterator iter = keys.iterator(); iter.hasNext(); ) { BinTypeRef item = (BinTypeRef) iter.next(); // if (Assert.enabled) { // Assert.must(!item.equals(targetClass.getOwner()), // "overridable should be only superclass methods!"); // } BinTreeTableNode node = new BinTreeTableNode(item); root.addChild(node); addMethodNodes(node, map.get(item)); } }
private void addMethodNodes(BinTreeTableNode parentNode, List collection) { Collections.sort( collection, new Comparator() { public int compare(Object obj1, Object obj2) { return ((BinMethod) obj1).getName().compareTo(((BinMethod) obj2).getName()); } }); for (Iterator iter = collection.iterator(); iter.hasNext(); ) { BinMethod item = (BinMethod) iter.next(); BinTreeTableNode child = new BinTreeTableNode(item); parentNode.addChild(child); child.setSelected(item.isAbstract()); } }