@Override public void removeRange( final int fromIndex, final int toIndex ) { super.removeRange( fromIndex, toIndex ); fireIntervalRemoved( fromIndex, toIndex); }
@Override public T remove( final int index ) { final T result = super.remove( index ); fireIntervalRemoved( index, index ); return result; }
@Override public void clear() { final int oldSize = size(); super.clear(); if ( oldSize > 0 ) { fireIntervalRemoved( 0, oldSize - 1 ); } }
@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 ); } }