From: Matti Tahvonen Date: Fri, 8 Feb 2008 15:12:09 +0000 (+0000) Subject: table now refreshes its contents and does component attaching etc in right place... X-Git-Tag: 6.7.0.beta1~5073 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=da6b8faa895a0d0a16703a76a707193083578419;p=vaadin-framework.git table now refreshes its contents and does component attaching etc in right place (not during paint phase) svn changeset:3757/svn branch:trunk --- diff --git a/src/com/itmill/toolkit/data/util/IndexedContainer.java b/src/com/itmill/toolkit/data/util/IndexedContainer.java index f75755a0fa..6a22ba0758 100644 --- a/src/com/itmill/toolkit/data/util/IndexedContainer.java +++ b/src/com/itmill/toolkit/data/util/IndexedContainer.java @@ -297,7 +297,7 @@ public class IndexedContainer implements Container, Container.Indexed, } // Sends a change event - fireContentsChange(); + fireContentsChange(-1); return true; } @@ -351,7 +351,7 @@ public class IndexedContainer implements Container, Container.Indexed, } // Sends the event - fireContentsChange(); + fireContentsChange(itemIds.size() - 1); return item; } @@ -374,7 +374,7 @@ public class IndexedContainer implements Container, Container.Indexed, filteredItemIds.remove(itemId); } - fireContentsChange(); + fireContentsChange(-1); return true; } @@ -668,7 +668,7 @@ public class IndexedContainer implements Container, Container.Indexed, if (filteredItemIds != null) { updateContainerFiltering(); } else { - fireContentsChange(); + fireContentsChange(index); } return getItem(newItemId); @@ -730,16 +730,18 @@ public class IndexedContainer implements Container, Container.Indexed, * @VERSION@ * @since 3.0 */ - private class ItemSetChangeEvent extends EventObject implements + public class ItemSetChangeEvent extends EventObject implements Container.ItemSetChangeEvent { /** * Serial generated by eclipse. */ private static final long serialVersionUID = 3832616279386372147L; + private int addedItemIndex; - private ItemSetChangeEvent(IndexedContainer source) { + private ItemSetChangeEvent(IndexedContainer source, int addedItemIndex) { super(source); + this.addedItemIndex = addedItemIndex; } /** @@ -751,6 +753,16 @@ public class IndexedContainer implements Container, Container.Indexed, return (Container) getSource(); } + /** + * Iff one item is added, gives its index. + * + * @return -1 if either multiple items are changed or some other change + * than add is done. + */ + public int getAddedItemIndex() { + return addedItemIndex; + } + } /** @@ -916,12 +928,15 @@ public class IndexedContainer implements Container, Container.Indexed, /** * Sends Item set change event to all registered interested listeners. + * + * @param addedItemIndex + * index of new item if change event was an item addition */ - private void fireContentsChange() { + private void fireContentsChange(int addedItemIndex) { if (itemSetChangeListeners != null) { final Object[] l = itemSetChangeListeners.toArray(); final Container.ItemSetChangeEvent event = new IndexedContainer.ItemSetChangeEvent( - this); + this, addedItemIndex); for (int i = 0; i < l.length; i++) { ((Container.ItemSetChangeListener) l[i]) .containerItemSetChange(event); @@ -1391,7 +1406,7 @@ public class IndexedContainer implements Container, Container.Indexed, if (filteredItemIds != null) { updateContainerFiltering(); } else { - fireContentsChange(); + fireContentsChange(-1); } // Remove temporary references @@ -1713,7 +1728,7 @@ public class IndexedContainer implements Container, Container.Indexed, filteredItemIds = null; if (filters != null) { filters = null; - fireContentsChange(); + fireContentsChange(-1); } return; } @@ -1733,7 +1748,7 @@ public class IndexedContainer implements Container, Container.Indexed, } } - fireContentsChange(); + fireContentsChange(-1); } private boolean passesFilters(Item item) {