All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ca.odell.glazedlists.impl.ReadOnlyList Maven / Gradle / Ivy

The newest version!
/* Glazed Lists                                                 (c) 2003-2006 */
/* http://publicobject.com/glazedlists/                      publicobject.com,*/
/*                                                     O'Dell Engineering Ltd.*/
package ca.odell.glazedlists.impl;

// standard collections
import ca.odell.glazedlists.EventList;
import ca.odell.glazedlists.TransformedList;
import ca.odell.glazedlists.event.ListEvent;

import java.util.Collection;
import java.util.List;

/**
 * An {@link EventList} that does not allow writing operations.
 *
 * 

The {@link ReadOnlyList} is useful for programming defensively. A * {@link ReadOnlyList} is useful to supply an unknown class read-only access * to your {@link EventList}. * *

The {@link ReadOnlyList} provides an up-to-date view of its source * {@link EventList} so changes to the source {@link EventList} will still be * reflected. For a static copy of any {@link EventList} it is necessary to copy * the contents of that {@link EventList} into any {@link List}. * *

{@link ReadOnlyList} does not alter the runtime performance * characteristics of the source {@link EventList}. * *

Warning: This class is * thread ready but not thread safe. See {@link EventList} for an example * of thread safe code. * * @see TransformedList * * @author Jesse Wilson */ public final class ReadOnlyList extends TransformedList { /** * Creates a {@link ReadOnlyList} to provide a view of an {@link EventList} * that does not allow write operations. */ public ReadOnlyList(EventList source) { super(source); source.addListEventListener(this); } /** * @return false; ReadOnlyList is... ahem... readonly */ @Override protected boolean isWritable() { return false; } /** {@inheritDoc} */ @Override public void listChanged(ListEvent listChanges) { // just pass on the changes updates.forwardEvent(listChanges); } // // All accessor methods must call to the source list so as not to // disturb the performance characteristics of the source list algorithms. // /** {@inheritDoc} */ @Override public boolean contains(Object object) { return source.contains(object); } /** {@inheritDoc} */ @Override public Object[] toArray() { return source.toArray(); } /** {@inheritDoc} */ @Override public T[] toArray(T[] array) { return source.toArray(array); } /** {@inheritDoc} */ @Override public boolean containsAll(Collection values) { return source.containsAll(values); } /** {@inheritDoc} */ @Override public int indexOf(Object object) { return source.indexOf(object); } /** {@inheritDoc} */ @Override public int lastIndexOf(Object object) { return source.lastIndexOf(object); } /** {@inheritDoc} */ @Override public boolean equals(Object object) { return source.equals(object); } /** {@inheritDoc} */ @Override public int hashCode() { return source.hashCode(); } // // All mutator methods should throw an UnsupportedOperationException with // a descriptive message explaining why mutations are disallowed. // /** @throws UnsupportedOperationException since ReadOnlyList cannot be modified */ @Override public boolean add(E value) { throw new UnsupportedOperationException("ReadOnlyList cannot be modified"); } /** @throws UnsupportedOperationException since ReadOnlyList cannot be modified */ @Override public void add(int index, E value) { throw new UnsupportedOperationException("ReadOnlyList cannot be modified"); } /** @throws UnsupportedOperationException since ReadOnlyList cannot be modified */ @Override public boolean addAll(Collection values) { throw new UnsupportedOperationException("ReadOnlyList cannot be modified"); } /** @throws UnsupportedOperationException since ReadOnlyList cannot be modified */ @Override public boolean addAll(int index, Collection values) { throw new UnsupportedOperationException("ReadOnlyList cannot be modified"); } /** @throws UnsupportedOperationException since ReadOnlyList cannot be modified */ @Override public void clear() { throw new UnsupportedOperationException("ReadOnlyList cannot be modified"); } /** @throws UnsupportedOperationException since ReadOnlyList cannot be modified */ @Override public boolean remove(Object toRemove) { throw new UnsupportedOperationException("ReadOnlyList cannot be modified"); } /** @throws UnsupportedOperationException since ReadOnlyList cannot be modified */ @Override public E remove(int index) { throw new UnsupportedOperationException("ReadOnlyList cannot be modified"); } /** @throws UnsupportedOperationException since ReadOnlyList cannot be modified */ @Override public boolean removeAll(Collection collection) { throw new UnsupportedOperationException("ReadOnlyList cannot be modified"); } /** @throws UnsupportedOperationException since ReadOnlyList cannot be modified */ @Override public boolean retainAll(Collection values) { throw new UnsupportedOperationException("ReadOnlyList cannot be modified"); } /** @throws UnsupportedOperationException since ReadOnlyList cannot be modified */ @Override public E set(int index, E value) { throw new UnsupportedOperationException("ReadOnlyList cannot be modified"); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy