/** * Adds the specified layer at the end of the list * * @param layer a {@link Layer} */ public void addLast(Layer<?> layer) { int indexAdded = layers.size(); layers.add(layer); ListDataEvent event = new ListDataEvent(this, ListDataEvent.INTERVAL_ADDED, indexAdded, indexAdded); notifyListeners(event); }
@Override public void clear() { int lastIndex = layers.size() - 1; layers.clear(); ListDataEvent event = new ListDataEvent(this, ListDataEvent.INTERVAL_REMOVED, 0, lastIndex); notifyListeners(event); }
/** * Adds the specified layer at the beginning of the list because layers are stacked. They are also * painted in reverse order * * @param layer a {@link Layer} * @return true */ @Override public boolean add(Layer<?> layer) { int indexAdded = layers.size(); layers.addFirst(layer); ListDataEvent event = new ListDataEvent(this, ListDataEvent.CONTENTS_CHANGED, 0, indexAdded); notifyListeners(event); return true; }
@Override public boolean addAll(Collection<? extends Layer<?>> layers) { int indexFirstAdded = this.layers.size(); int indexLastAdded = indexFirstAdded + layers.size(); boolean listChanged = this.layers.addAll(layers); if (listChanged) { ListDataEvent event = new ListDataEvent(this, ListDataEvent.INTERVAL_ADDED, indexFirstAdded, indexLastAdded); notifyListeners(event); } return listChanged; }
@Override public boolean retainAll(Collection<?> c) { int sizeBeforeChanges = layers.size(); boolean listChanged = layers.retainAll(c); if (listChanged) { ListDataEvent event = new ListDataEvent(this, ListDataEvent.CONTENTS_CHANGED, 0, sizeBeforeChanges - 1); notifyListeners(event); return true; } else { return false; } }
@Override public boolean remove(Object o) { int indexRemoved = layers.indexOf(o); if (indexRemoved != -1) { layers.remove(o); ListDataEvent event = new ListDataEvent(this, ListDataEvent.INTERVAL_REMOVED, indexRemoved, indexRemoved); notifyListeners(event); return true; } else { return false; } }