@Override public void add( final int index, final T element ) { super.add( index, element ); fireIntervalAdded( index, index ); }
@Override public boolean addAll( final int index, final Collection<? extends T> collection ) { final boolean result = super.addAll( index, collection ); if ( result ) { fireIntervalAdded( index, index + collection.size() - 1 ); } return result; }
@Override public boolean add( final T t ) { final int oldSize = size(); super.add( t ); fireIntervalAdded( oldSize, oldSize ); return true; }
@Override public boolean addAll( final Collection<? extends T> collection ) { final boolean result = super.addAll( collection ); if ( result ) { fireIntervalAdded( size() - collection.size(), size() - 1 ); } return result; }
@Override public void setAll( final List<? extends T> ts ) { final int removed = size(); /* * Avoid calling 'super.setAll', because that method calls 'set', 'add' * and 'remove', which are overridden to fire events. Use bulk methods * from 'ArrayList' instead. */ super.clear(); super.addAll( ts ); final int added = size(); final int changed = Math.min( added, removed ); if ( changed > 0 ) { fireContentsChanged( 0, changed - 1 ); } if ( added > removed ) { fireIntervalAdded( removed, added - 1 ); } else if ( removed > added ) { fireIntervalRemoved( added, removed - 1 ); } }