@Override public void containerPropertySetChange(PropertySetChangeEvent event) { updateHierarchicalWrapper(); ((Container.PropertySetChangeListener) listener) .containerPropertySetChange(event); }
@Override public void containerItemSetChange(ItemSetChangeEvent event) { updateHierarchicalWrapper(); ((Container.ItemSetChangeListener) listener) .containerItemSetChange(event); }
/** * Constructs a new hierarchical wrapper for an existing Container. Works * even if the to-be-wrapped container already implements the * <code>Container.Hierarchical</code> interface. * * @param toBeWrapped * the container that needs to be accessed hierarchically * @see #updateHierarchicalWrapper() */ public ContainerHierarchicalWrapper(Container toBeWrapped) { container = toBeWrapped; hierarchical = container instanceof Container.Hierarchical; // Check arguments if (container == null) { throw new NullPointerException("Null can not be wrapped"); } // Create initial order if needed if (!hierarchical) { noChildrenAllowed = new HashSet<Object>(); parent = new Hashtable<Object, Object>(); children = new Hashtable<Object, LinkedList<Object>>(); roots = new LinkedHashSet<Object>(container.getItemIds()); } updateHierarchicalWrapper(); }
@Override public void updateHierarchicalWrapper() { super.updateHierarchicalWrapper(); updateFirst(); if (inline == null || expanded == null || captions == null) { inline = new LinkedList<>(); expanded = new HashSet<>(); captions = new HashMap<>(); } else { inline.clear(); Set<Object> s = new HashSet<>(); s.addAll(expanded); s.addAll(captions.keySet()); for (Object o : s) { if (!_container().containsId(o)) { expanded.remove(o); captions.remove(o); } } } makeInlineElements(inline, rootItemIds()); }