diff options
Diffstat (limited to 'common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/model/AbstractModel.java')
-rw-r--r-- | common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/model/AbstractModel.java | 1007 |
1 files changed, 0 insertions, 1007 deletions
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/model/AbstractModel.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/model/AbstractModel.java deleted file mode 100644 index e880beb71f..0000000000 --- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/model/AbstractModel.java +++ /dev/null @@ -1,1007 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2010 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.common.utility.internal.model; - -import java.util.Collection; -import java.util.Iterator; -import java.util.List; - -import org.eclipse.jpt.common.utility.internal.StringTools; -import org.eclipse.jpt.common.utility.model.Model; -import org.eclipse.jpt.common.utility.model.event.CollectionAddEvent; -import org.eclipse.jpt.common.utility.model.event.CollectionChangeEvent; -import org.eclipse.jpt.common.utility.model.event.CollectionClearEvent; -import org.eclipse.jpt.common.utility.model.event.CollectionRemoveEvent; -import org.eclipse.jpt.common.utility.model.event.ListAddEvent; -import org.eclipse.jpt.common.utility.model.event.ListChangeEvent; -import org.eclipse.jpt.common.utility.model.event.ListClearEvent; -import org.eclipse.jpt.common.utility.model.event.ListMoveEvent; -import org.eclipse.jpt.common.utility.model.event.ListRemoveEvent; -import org.eclipse.jpt.common.utility.model.event.ListReplaceEvent; -import org.eclipse.jpt.common.utility.model.event.PropertyChangeEvent; -import org.eclipse.jpt.common.utility.model.event.StateChangeEvent; -import org.eclipse.jpt.common.utility.model.event.TreeAddEvent; -import org.eclipse.jpt.common.utility.model.event.TreeChangeEvent; -import org.eclipse.jpt.common.utility.model.event.TreeClearEvent; -import org.eclipse.jpt.common.utility.model.event.TreeRemoveEvent; -import org.eclipse.jpt.common.utility.model.listener.ChangeListener; -import org.eclipse.jpt.common.utility.model.listener.CollectionChangeListener; -import org.eclipse.jpt.common.utility.model.listener.ListChangeListener; -import org.eclipse.jpt.common.utility.model.listener.PropertyChangeListener; -import org.eclipse.jpt.common.utility.model.listener.StateChangeListener; -import org.eclipse.jpt.common.utility.model.listener.TreeChangeListener; - -/** - * Reasonable implementation of the {@link Model} protocol - * with numerous convenience methods. - * - * @see ChangeSupport - */ -public abstract class AbstractModel - implements Model -{ - /** - * Delegate state/property/collection/list/tree change support to this - * helper object. The change support object is <em>lazily-initialized</em>; - * so it may be <code>null</code>. The method {@link #getChangeSupport()} - * will initialize this field if it is <code>null</code>. - * <p> - * <strong>NB:</strong> We instantiate this when we fire events, even when - * we do not have any listeners (which is be implied if this is <code>null</code>). - * This allows the change support to have behavior tied to events even when - * we have no listeners. - * - * @see AspectChangeSupport#aspectChanged(String) - */ - protected ChangeSupport changeSupport; - - - // ********** constructors/initialization ********** - - /** - * Default constructor. - */ - protected AbstractModel() { - super(); - } - - /** - * This accessor will build the change support when required. - * This only helps reduce the footprint of a model that neither has any - * listeners added to it nor ever changes (fires any events). - */ - protected synchronized ChangeSupport getChangeSupport() { - if (this.changeSupport == null) { - this.changeSupport = this.buildChangeSupport(); - } - return this.changeSupport; - } - - /** - * Allow subclasses to tweak the change support used. - */ - protected ChangeSupport buildChangeSupport() { - return new ChangeSupport(this); - } - - - // ********** change support ********** - - /** - * @see ChangeSupport#addChangeListener(ChangeListener) - */ - public void addChangeListener(ChangeListener listener) { - this.getChangeSupport().addChangeListener(listener); - } - - /** - * @see ChangeSupport#removeChangeListener(ChangeListener) - */ - public void removeChangeListener(ChangeListener listener) { - this.getChangeSupport().removeChangeListener(listener); - } - - /** - * @see ChangeSupport#hasAnyChangeListeners() - */ - public boolean hasAnyChangeListeners() { - return (this.changeSupport != null) && this.changeSupport.hasAnyChangeListeners(); - } - - /** - * Return whether the model has no change listeners. - */ - public boolean hasNoChangeListeners() { - return ! this.hasAnyChangeListeners(); - } - - - // ********** state change support ********** - - /** - * @see ChangeSupport#addStateChangeListener(StateChangeListener) - */ - public void addStateChangeListener(StateChangeListener listener) { - this.getChangeSupport().addStateChangeListener(listener); - } - - /** - * @see ChangeSupport#removeStateChangeListener(StateChangeListener) - */ - public void removeStateChangeListener(StateChangeListener listener) { - this.getChangeSupport().removeStateChangeListener(listener); - } - - /** - * @see ChangeSupport#hasAnyStateChangeListeners() - */ - public boolean hasAnyStateChangeListeners() { - return (this.changeSupport != null) && this.changeSupport.hasAnyStateChangeListeners(); - } - - /** - * Return whether the model has no state change listeners. - */ - public boolean hasNoStateChangeListeners() { - return ! this.hasAnyStateChangeListeners(); - } - - /** - * @see ChangeSupport#fireStateChanged(StateChangeEvent) - */ - protected final void fireStateChanged(StateChangeEvent event) { - this.getChangeSupport().fireStateChanged(event); - } - - /** - * @see ChangeSupport#fireStateChanged() - */ - protected final void fireStateChanged() { - this.getChangeSupport().fireStateChanged(); - } - - - // ********** property change support ********** - - /** - * @see ChangeSupport#addPropertyChangeListener(String, PropertyChangeListener) - */ - public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) { - this.getChangeSupport().addPropertyChangeListener(propertyName, listener); - } - - /** - * @see ChangeSupport#removePropertyChangeListener(String, PropertyChangeListener) - */ - public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) { - this.getChangeSupport().removePropertyChangeListener(propertyName, listener); - } - - /** - * @see ChangeSupport#hasAnyPropertyChangeListeners(String) - */ - public boolean hasAnyPropertyChangeListeners(String propertyName) { - return (this.changeSupport != null) && this.changeSupport.hasAnyPropertyChangeListeners(propertyName); - } - - /** - * Return whether the model has no property change listeners that will - * be notified when the specified property has changed. - */ - public boolean hasNoPropertyChangeListeners(String propertyName) { - return ! this.hasAnyPropertyChangeListeners(propertyName); - } - - /** - * @see ChangeSupport#firePropertyChanged(PropertyChangeEvent) - */ - protected final boolean firePropertyChanged(PropertyChangeEvent event) { - return this.getChangeSupport().firePropertyChanged(event); - } - - /** - * @see ChangeSupport#firePropertyChanged(String, Object, Object) - */ - protected final boolean firePropertyChanged(String propertyName, Object oldValue, Object newValue) { - return this.getChangeSupport().firePropertyChanged(propertyName, oldValue, newValue); - } - - /** - * @see ChangeSupport#firePropertyChanged(String, int, int) - */ - protected final boolean firePropertyChanged(String propertyName, int oldValue, int newValue) { - return this.getChangeSupport().firePropertyChanged(propertyName, oldValue, newValue); - } - - /** - * @see ChangeSupport#firePropertyChanged(String, boolean, boolean) - */ - protected final boolean firePropertyChanged(String propertyName, boolean oldValue, boolean newValue) { - return this.getChangeSupport().firePropertyChanged(propertyName, oldValue, newValue); - } - - /** - * Implied <code>null</code> "old" value. - * @see #firePropertyChanged(String, Object, Object) - */ - protected final boolean firePropertyChanged(String propertyName, Object newValue) { - return this.firePropertyChanged(propertyName, null, newValue); - } - - - // ********** collection change support ********** - - /** - * @see ChangeSupport#addCollectionChangeListener(String, CollectionChangeListener) - */ - public void addCollectionChangeListener(String collectionName, CollectionChangeListener listener) { - this.getChangeSupport().addCollectionChangeListener(collectionName, listener); - } - - /** - * @see ChangeSupport#removeCollectionChangeListener(String, CollectionChangeListener) - */ - public void removeCollectionChangeListener(String collectionName, CollectionChangeListener listener) { - this.getChangeSupport().removeCollectionChangeListener(collectionName, listener); - } - - /** - * @see ChangeSupport#hasAnyCollectionChangeListeners(String) - */ - public boolean hasAnyCollectionChangeListeners(String collectionName) { - return (this.changeSupport != null) && this.changeSupport.hasAnyCollectionChangeListeners(collectionName); - } - - /** - * Return whether the model has no collection change listeners that will - * be notified when the specified collection has changed. - */ - public boolean hasNoCollectionChangeListeners(String collectionName) { - return ! this.hasAnyCollectionChangeListeners(collectionName); - } - - /** - * @see ChangeSupport#fireItemsAdded(CollectionAddEvent) - */ - protected final boolean fireItemsAdded(CollectionAddEvent event) { - return this.getChangeSupport().fireItemsAdded(event); - } - - /** - * @see ChangeSupport#fireItemsAdded(String, Collection) - */ - protected final boolean fireItemsAdded(String collectionName, Collection<?> addedItems) { - return this.getChangeSupport().fireItemsAdded(collectionName, addedItems); - } - - /** - * @see ChangeSupport#fireItemAdded(String, Object) - */ - protected final void fireItemAdded(String collectionName, Object addedItem) { - this.getChangeSupport().fireItemAdded(collectionName, addedItem); - } - - /** - * @see ChangeSupport#fireItemsRemoved(CollectionRemoveEvent) - */ - protected final boolean fireItemsRemoved(CollectionRemoveEvent event) { - return this.getChangeSupport().fireItemsRemoved(event); - } - - /** - * @see ChangeSupport#fireItemsRemoved(String, Collection) - */ - protected final boolean fireItemsRemoved(String collectionName, Collection<?> removedItems) { - return this.getChangeSupport().fireItemsRemoved(collectionName, removedItems); - } - - /** - * @see ChangeSupport#fireItemRemoved(String, Object) - */ - protected final void fireItemRemoved(String collectionName, Object removedItem) { - this.getChangeSupport().fireItemRemoved(collectionName, removedItem); - } - - /** - * @see ChangeSupport#fireCollectionCleared(CollectionClearEvent) - */ - protected final void fireCollectionCleared(CollectionClearEvent event) { - this.getChangeSupport().fireCollectionCleared(event); - } - - /** - * @see ChangeSupport#fireCollectionCleared(String) - */ - protected final void fireCollectionCleared(String collectionName) { - this.getChangeSupport().fireCollectionCleared(collectionName); - } - - protected final void fireCollectionChanged(CollectionChangeEvent event) { - this.getChangeSupport().fireCollectionChanged(event); - } - - protected final void fireCollectionChanged(String collectionName, Collection<?> collection) { - this.getChangeSupport().fireCollectionChanged(collectionName, collection); - } - - /** - * @see ChangeSupport#addItemToCollection(Object, Collection, String) - */ - protected <E> boolean addItemToCollection(E item, Collection<E> collection, String collectionName) { - return this.getChangeSupport().addItemToCollection(item, collection, collectionName); - } - - /** - * @see ChangeSupport#addItemsToCollection(Object[], Collection, String) - */ - protected <E> boolean addItemsToCollection(E[] items, Collection<E> collection, String collectionName) { - return this.getChangeSupport().addItemsToCollection(items, collection, collectionName); - } - - /** - * @see ChangeSupport#addItemsToCollection(Collection, Collection, String) - */ - protected <E> boolean addItemsToCollection(Collection<? extends E> items, Collection<E> collection, String collectionName) { - return this.getChangeSupport().addItemsToCollection(items, collection, collectionName); - } - - /** - * @see ChangeSupport#addItemsToCollection(Iterable, Collection, String) - */ - protected <E> boolean addItemsToCollection(Iterable<? extends E> items, Collection<E> collection, String collectionName) { - return this.getChangeSupport().addItemsToCollection(items, collection, collectionName); - } - - /** - * @see ChangeSupport#addItemsToCollection(Iterator, Collection, String) - */ - protected <E> boolean addItemsToCollection(Iterator<? extends E> items, Collection<E> collection, String collectionName) { - return this.getChangeSupport().addItemsToCollection(items, collection, collectionName); - } - - /** - * @see ChangeSupport#removeItemFromCollection(Object, Collection, String) - */ - protected boolean removeItemFromCollection(Object item, Collection<?> collection, String collectionName) { - return this.getChangeSupport().removeItemFromCollection(item, collection, collectionName); - } - - /** - * @see ChangeSupport#removeItemsFromCollection(Object[], Collection, String) - */ - protected boolean removeItemsFromCollection(Object[] items, Collection<?> collection, String collectionName) { - return this.getChangeSupport().removeItemsFromCollection(items, collection, collectionName); - } - - /** - * @see ChangeSupport#removeItemsFromCollection(Collection, Collection, String) - */ - protected boolean removeItemsFromCollection(Collection<?> items, Collection<?> collection, String collectionName) { - return this.getChangeSupport().removeItemsFromCollection(items, collection, collectionName); - } - - /** - * @see ChangeSupport#removeItemsFromCollection(Iterable, Collection, String) - */ - protected boolean removeItemsFromCollection(Iterable<?> items, Collection<?> collection, String collectionName) { - return this.getChangeSupport().removeItemsFromCollection(items, collection, collectionName); - } - - /** - * @see ChangeSupport#removeItemsFromCollection(Iterator, Collection, String) - */ - protected boolean removeItemsFromCollection(Iterator<?> items, Collection<?> collection, String collectionName) { - return this.getChangeSupport().removeItemsFromCollection(items, collection, collectionName); - } - - /** - * @see ChangeSupport#retainItemsInCollection(Object[], Collection, String) - */ - protected boolean retainItemsInCollection(Object[] items, Collection<?> collection, String collectionName) { - return this.getChangeSupport().retainItemsInCollection(items, collection, collectionName); - } - - /** - * @see ChangeSupport#retainItemsInCollection(Collection, Collection, String) - */ - protected boolean retainItemsInCollection(Collection<?> items, Collection<?> collection, String collectionName) { - return this.getChangeSupport().retainItemsInCollection(items, collection, collectionName); - } - - /** - * @see ChangeSupport#retainItemsInCollection(Iterable, Collection, String) - */ - protected boolean retainItemsInCollection(Iterable<?> items, Collection<?> collection, String collectionName) { - return this.getChangeSupport().retainItemsInCollection(items, collection, collectionName); - } - - /** - * @see ChangeSupport#retainItemsInCollection(Iterator, Collection, String) - */ - protected boolean retainItemsInCollection(Iterator<?> items, Collection<?> collection, String collectionName) { - return this.getChangeSupport().retainItemsInCollection(items, collection, collectionName); - } - - /** - * @see ChangeSupport#clearCollection(Collection, String) - */ - protected boolean clearCollection(Collection<?> collection, String collectionName) { - return this.getChangeSupport().clearCollection(collection, collectionName); - } - - /** - * @see ChangeSupport#synchronizeCollection(Collection, Collection, String) - */ - protected <E> boolean synchronizeCollection(Collection<E> newCollection, Collection<E> collection, String collectionName) { - return this.getChangeSupport().synchronizeCollection(newCollection, collection, collectionName); - } - - /** - * @see ChangeSupport#synchronizeCollection(Iterable, Collection, String) - */ - protected <E> boolean synchronizeCollection(Iterable<E> newCollection, Collection<E> collection, String collectionName) { - return this.getChangeSupport().synchronizeCollection(newCollection, collection, collectionName); - } - - /** - * @see ChangeSupport#synchronizeCollection(Iterator, Collection, String) - */ - protected <E> boolean synchronizeCollection(Iterator<E> newCollection, Collection<E> collection, String collectionName) { - return this.getChangeSupport().synchronizeCollection(newCollection, collection, collectionName); - } - - - // ********** list change support ********** - - /** - * @see ChangeSupport#addListChangeListener(String, ListChangeListener) - */ - public void addListChangeListener(String listName, ListChangeListener listener) { - this.getChangeSupport().addListChangeListener(listName, listener); - } - - /** - * @see ChangeSupport#removeListChangeListener(String, ListChangeListener) - */ - public void removeListChangeListener(String listName, ListChangeListener listener) { - this.getChangeSupport().removeListChangeListener(listName, listener); - } - - /** - * @see ChangeSupport#hasAnyListChangeListeners(String) - */ - public boolean hasAnyListChangeListeners(String listName) { - return (this.changeSupport != null) && this.changeSupport.hasAnyListChangeListeners(listName); - } - - /** - * Return whether the model has no list change listeners that will - * be notified when the specified list has changed. - */ - public boolean hasNoListChangeListeners(String listName) { - return ! this.hasAnyListChangeListeners(listName); - } - - /** - * @see ChangeSupport#fireItemsAdded(ListAddEvent) - */ - protected final boolean fireItemsAdded(ListAddEvent event) { - return this.getChangeSupport().fireItemsAdded(event); - } - - /** - * @see ChangeSupport#fireItemsAdded(String, int, List) - */ - protected final boolean fireItemsAdded(String listName, int index, List<?> addedItems) { - return this.getChangeSupport().fireItemsAdded(listName, index, addedItems); - } - - /** - * @see ChangeSupport#fireItemAdded(String, int, Object) - */ - protected final void fireItemAdded(String listName, int index, Object addedItem) { - this.getChangeSupport().fireItemAdded(listName, index, addedItem); - } - - /** - * @see ChangeSupport#fireItemsRemoved(ListRemoveEvent) - */ - protected final boolean fireItemsRemoved(ListRemoveEvent event) { - return this.getChangeSupport().fireItemsRemoved(event); - } - - /** - * @see ChangeSupport#fireItemsRemoved(String, int, List) - */ - protected final boolean fireItemsRemoved(String listName, int index, List<?> removedItems) { - return this.getChangeSupport().fireItemsRemoved(listName, index, removedItems); - } - - /** - * @see ChangeSupport#fireItemRemoved(String, int, Object) - */ - protected final void fireItemRemoved(String listName, int index, Object removedItem) { - this.getChangeSupport().fireItemRemoved(listName, index, removedItem); - } - - /** - * @see ChangeSupport#fireItemsReplaced(ListReplaceEvent) - */ - protected final boolean fireItemsReplaced(ListReplaceEvent event) { - return this.getChangeSupport().fireItemsReplaced(event); - } - - /** - * @see ChangeSupport#fireItemsReplaced(String, int, List, List) - */ - protected final <E> boolean fireItemsReplaced(String listName, int index, List<? extends E> newItems, List<E> replacedItems) { - return this.getChangeSupport().fireItemsReplaced(listName, index, newItems, replacedItems); - } - - /** - * @see ChangeSupport#fireItemReplaced(String, int, Object, Object) - */ - protected final boolean fireItemReplaced(String listName, int index, Object newItem, Object replacedItem) { - return this.getChangeSupport().fireItemReplaced(listName, index, newItem, replacedItem); - } - - /** - * @see ChangeSupport#fireItemsMoved(ListMoveEvent) - */ - protected final boolean fireItemsMoved(ListMoveEvent event) { - return this.getChangeSupport().fireItemsMoved(event); - } - - /** - * @see ChangeSupport#fireItemsMoved(String, int, int, int) - */ - protected final <E> boolean fireItemsMoved(String listName, int targetIndex, int sourceIndex, int length) { - return this.getChangeSupport().fireItemsMoved(listName, targetIndex, sourceIndex, length); - } - - /** - * @see ChangeSupport#fireItemMoved(String, int, int) - */ - protected final boolean fireItemMoved(String listName, int targetIndex, int sourceIndex) { - return this.getChangeSupport().fireItemMoved(listName, targetIndex, sourceIndex); - } - - /** - * @see ChangeSupport#fireListCleared(ListClearEvent) - */ - protected final void fireListCleared(ListClearEvent event) { - this.getChangeSupport().fireListCleared(event); - } - - /** - * @see ChangeSupport#fireListCleared(String) - */ - protected final void fireListCleared(String listName) { - this.getChangeSupport().fireListCleared(listName); - } - - protected final void fireListChanged(ListChangeEvent event) { - this.getChangeSupport().fireListChanged(event); - } - - protected final void fireListChanged(String listName, List<?> list) { - this.getChangeSupport().fireListChanged(listName, list); - } - - /** - * @see ChangeSupport#addItemToList(int, Object, List, String) - */ - protected <E> void addItemToList(int index, E item, List<E> list, String listName) { - this.getChangeSupport().addItemToList(index, item, list, listName); - } - - /** - * @see ChangeSupport#addItemToList(Object, List, String) - */ - protected <E> boolean addItemToList(E item, List<E> list, String listName) { - return this.getChangeSupport().addItemToList(item, list, listName); - } - - /** - * @see ChangeSupport#addItemsToList(int, Object[], List, String) - */ - protected <E> boolean addItemsToList(int index, E[] items, List<E> list, String listName) { - return this.getChangeSupport().addItemsToList(index, items, list, listName); - } - - /** - * @see ChangeSupport#addItemsToList(int, Collection, List, String) - */ - protected <E> boolean addItemsToList(int index, Collection<? extends E> items, List<E> list, String listName) { - return this.getChangeSupport().addItemsToList(index, items, list, listName); - } - - /** - * @see ChangeSupport#addItemsToList(int, Iterable, List, String) - */ - protected <E> boolean addItemsToList(int index, Iterable<? extends E> items, List<E> list, String listName) { - return this.getChangeSupport().addItemsToList(index, items, list, listName); - } - - /** - * @see ChangeSupport#addItemsToList(int, Iterator, List, String) - */ - protected <E> boolean addItemsToList(int index, Iterator<? extends E> items, List<E> list, String listName) { - return this.getChangeSupport().addItemsToList(index, items, list, listName); - } - - /** - * @see ChangeSupport#addItemsToList(Object[], List, String) - */ - protected <E> boolean addItemsToList(E[] items, List<E> list, String listName) { - return this.getChangeSupport().addItemsToList(items, list, listName); - } - - /** - * @see ChangeSupport#addItemsToList(Collection, List, String) - */ - protected <E> boolean addItemsToList(Collection<? extends E> items, List<E> list, String listName) { - return this.getChangeSupport().addItemsToList(items, list, listName); - } - - /** - * @see ChangeSupport#addItemsToList(Iterable, List, String) - */ - protected <E> boolean addItemsToList(Iterable<? extends E> items, List<E> list, String listName) { - return this.getChangeSupport().addItemsToList(items, list, listName); - } - - /** - * @see ChangeSupport#addItemsToList(Iterator, List, String) - */ - protected <E> boolean addItemsToList(Iterator<? extends E> items, List<E> list, String listName) { - return this.getChangeSupport().addItemsToList(items, list, listName); - } - - /** - * @see ChangeSupport#removeItemFromList(int, List, String) - */ - protected <E> E removeItemFromList(int index, List<E> list, String listName) { - return this.getChangeSupport().removeItemFromList(index, list, listName); - } - - /** - * @see ChangeSupport#removeItemFromList(Object, List, String) - */ - protected boolean removeItemFromList(Object item, List<?> list, String listName) { - return this.getChangeSupport().removeItemFromList(item, list, listName); - } - - /** - * @see ChangeSupport#removeRangeFromList(int, int, List, String) - */ - protected <E> List<E> removeRangeFromList(int beginIndex, int endIndex, List<E> list, String listName) { - return this.getChangeSupport().removeRangeFromList(beginIndex, endIndex, list, listName); - } - - /** - * @see ChangeSupport#removeItemsFromList(int, List, String) - */ - protected <E> List<E> removeItemsFromList(int index, List<E> list, String listName) { - return this.getChangeSupport().removeItemsFromList(index, list, listName); - } - - /** - * @see ChangeSupport#removeItemsFromList(int, int, List, String) - */ - protected <E> List<E> removeItemsFromList(int index, int length, List<E> list, String listName) { - return this.getChangeSupport().removeItemsFromList(index, length, list, listName); - } - - /** - * @see ChangeSupport#removeItemsFromList(Object[], List, String) - */ - protected boolean removeItemsFromList(Object[] items, List<?> list, String listName) { - return this.getChangeSupport().removeItemsFromList(items, list, listName); - } - - /** - * @see ChangeSupport#removeItemsFromList(Collection, List, String) - */ - protected boolean removeItemsFromList(Collection<?> items, List<?> list, String listName) { - return this.getChangeSupport().removeItemsFromList(items, list, listName); - } - - /** - * @see ChangeSupport#removeItemsFromList(Iterable, List, String) - */ - protected boolean removeItemsFromList(Iterable<?> items, List<?> list, String listName) { - return this.getChangeSupport().removeItemsFromList(items, list, listName); - } - - /** - * @see ChangeSupport#removeItemsFromList(Iterator, List, String) - */ - protected boolean removeItemsFromList(Iterator<?> items, List<?> list, String listName) { - return this.getChangeSupport().removeItemsFromList(items, list, listName); - } - - /** - * @see ChangeSupport#retainItemsInList(Object[], List, String) - */ - protected boolean retainItemsInList(Object[] items, List<?> list, String listName) { - return this.getChangeSupport().retainItemsInList(items, list, listName); - } - - /** - * @see ChangeSupport#retainItemsInList(Collection, List, String) - */ - protected boolean retainItemsInList(Collection<?> items, List<?> list, String listName) { - return this.getChangeSupport().retainItemsInList(items, list, listName); - } - - /** - * @see ChangeSupport#retainItemsInList(Iterable, List, String) - */ - protected boolean retainItemsInList(Iterable<?> items, List<?> list, String listName) { - return this.getChangeSupport().retainItemsInList(items, list, listName); - } - - /** - * @see ChangeSupport#retainItemsInList(Iterator, List, String) - */ - protected boolean retainItemsInList(Iterator<?> items, List<?> list, String listName) { - return this.getChangeSupport().retainItemsInList(items, list, listName); - } - - /** - * @see ChangeSupport#setItemInList(int, Object, List, String) - */ - protected <E> E setItemInList(int index, E item, List<E> list, String listName) { - return this.getChangeSupport().setItemInList(index, item, list, listName); - } - - /** - * @see ChangeSupport#replaceItemInList(Object, Object, List, String) - */ - protected <E> int replaceItemInList(E oldItem, E newItem, List<E> list, String listName) { - return this.getChangeSupport().replaceItemInList(oldItem, newItem, list, listName); - } - - /** - * @see ChangeSupport#setItemsInList(int, Object[], List, String) - */ - protected <E> List<E> setItemsInList(int index, E[] items, List<E> list, String listName) { - return this.getChangeSupport().setItemsInList(index, items, list, listName); - } - - /** - * @see ChangeSupport#setItemsInList(int, List, List, String) - */ - protected <E> List<E> setItemsInList(int index, List<? extends E> items, List<E> list, String listName) { - return this.getChangeSupport().setItemsInList(index, items, list, listName); - } - - /** - * @see ChangeSupport#moveItemsInList(int, int, int, List, String) - */ - protected <E> void moveItemsInList(int targetIndex, int sourceIndex, int length, List<E> list, String listName) { - this.getChangeSupport().moveItemsInList(targetIndex, sourceIndex, length, list, listName); - } - - /** - * @see ChangeSupport#moveItemInList(int, int, List, String) - */ - protected <E> void moveItemInList(int targetIndex, int sourceIndex, List<E> list, String listName) { - this.getChangeSupport().moveItemInList(targetIndex, sourceIndex, list, listName); - } - - /** - * @see ChangeSupport#moveItemInList(int, Object, List, String) - */ - protected <E> void moveItemInList(int targetIndex, E item, List<E> list, String listName) { - this.getChangeSupport().moveItemInList(targetIndex, item, list, listName); - } - - /** - * @see ChangeSupport#clearList(List, String) - */ - protected boolean clearList(List<?> list, String listName) { - return this.getChangeSupport().clearList(list, listName); - } - - /** - * @see ChangeSupport#synchronizeList(List, List, String) - */ - protected <E> boolean synchronizeList(List<? extends E> newList, List<E> list, String listName) { - return this.getChangeSupport().synchronizeList(newList, list, listName); - } - - /** - * @see ChangeSupport#synchronizeList(Iterable, List, String) - */ - protected <E> boolean synchronizeList(Iterable<? extends E> newList, List<E> list, String listName) { - return this.getChangeSupport().synchronizeList(newList, list, listName); - } - - /** - * @see ChangeSupport#synchronizeList(Iterator, List, String) - */ - protected <E> boolean synchronizeList(Iterator<? extends E> newList, List<E> list, String listName) { - return this.getChangeSupport().synchronizeList(newList, list, listName); - } - - - // ********** tree change support ********** - - /** - * @see ChangeSupport#addTreeChangeListener(String, TreeChangeListener) - */ - public void addTreeChangeListener(String treeName, TreeChangeListener listener) { - this.getChangeSupport().addTreeChangeListener(treeName, listener); - } - - /** - * @see ChangeSupport#removeTreeChangeListener(String, TreeChangeListener) - */ - public void removeTreeChangeListener(String treeName, TreeChangeListener listener) { - this.getChangeSupport().removeTreeChangeListener(treeName, listener); - } - - /** - * @see ChangeSupport#hasAnyTreeChangeListeners(String) - */ - public boolean hasAnyTreeChangeListeners(String treeName) { - return (this.changeSupport != null) && this.changeSupport.hasAnyTreeChangeListeners(treeName); - } - - /** - * Return whether the model has no tree change listeners that will - * be notified when the specified tree has changed. - */ - public boolean hasNoTreeChangeListeners(String treeName) { - return ! this.hasAnyTreeChangeListeners(treeName); - } - - /** - * @see ChangeSupport#fireNodeAdded(TreeAddEvent) - */ - protected final void fireNodeAdded(TreeAddEvent event) { - this.getChangeSupport().fireNodeAdded(event); - } - - /** - * @see ChangeSupport#fireNodeAdded(String, List) - */ - protected final void fireNodeAdded(String treeName, List<?> path) { - this.getChangeSupport().fireNodeAdded(treeName, path); - } - - /** - * @see ChangeSupport#fireNodeRemoved(TreeRemoveEvent) - */ - protected final void fireNodeRemoved(TreeRemoveEvent event) { - this.getChangeSupport().fireNodeRemoved(event); - } - - /** - * @see ChangeSupport#fireNodeRemoved(String, List) - */ - protected final void fireNodeRemoved(String treeName, List<?> path) { - this.getChangeSupport().fireNodeRemoved(treeName, path); - } - - /** - * @see ChangeSupport#fireTreeCleared(TreeClearEvent) - */ - protected final void fireTreeCleared(TreeClearEvent event) { - this.getChangeSupport().fireTreeCleared(event); - } - - /** - * @see ChangeSupport#fireTreeCleared(String) - */ - protected final void fireTreeCleared(String treeName) { - this.getChangeSupport().fireTreeCleared(treeName); - } - - /** - * @see ChangeSupport#fireTreeChanged(TreeChangeEvent) - */ - protected final void fireTreeChanged(TreeChangeEvent event) { - this.getChangeSupport().fireTreeChanged(event); - } - - /** - * @see ChangeSupport#fireTreeChanged(String, Collection) - */ - protected final void fireTreeChanged(String treeName, Collection<?> nodes) { - this.getChangeSupport().fireTreeChanged(treeName, nodes); - } - - - // ********** convenience methods ********** - - /** - * Return whether the specified values are equal, with the appropriate <code>null</code> checks. - * Convenience method for checking whether an attribute value has changed. - * <p> - * <em>Do not</em> use this to determine whether to fire a change notification, - * {@link ChangeSupport} already does that. - */ - protected final boolean valuesAreEqual(Object value1, Object value2) { - return this.getChangeSupport().valuesAreEqual(value1, value2); - } - - /** - * @see #valuesAreEqual(Object, Object) - */ - protected final boolean attributeValueHasNotChanged(Object oldValue, Object newValue) { - return this.valuesAreEqual(oldValue, newValue); - } - - - /** - * <em>Do not</em> use this to determine whether to fire a change notification, - * {@link ChangeSupport} already does that. - * <p> - * For example, after firing the change notification, you can use this method - * to decide if some other, related, piece of state needs to be synchronized - * with the state that just changed. - * - * @see ChangeSupport#valuesAreDifferent(Object, Object) - */ - protected final boolean valuesAreDifferent(Object value1, Object value2) { - return this.getChangeSupport().valuesAreDifferent(value1, value2); - } - - /** - * @see #valuesAreDifferent(Object, Object) - */ - protected final boolean attributeValueHasChanged(Object oldValue, Object newValue) { - return this.valuesAreDifferent(oldValue, newValue); - } - - - // ********** Object overrides ********** - - /** - * Although cloning models is usually not a Good Idea, - * we should at least support it properly. - */ - @Override - protected AbstractModel clone() throws CloneNotSupportedException { - AbstractModel clone = (AbstractModel) super.clone(); - // clear out change support - models do not share listeners - clone.changeSupport = null; - return clone; - } - - /** - * e.g. <code>"ClassName[00-F3-EE-42](add'l info)"</code> - */ - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - StringTools.buildSimpleToStringOn(this, sb); - sb.append('('); - int len = sb.length(); - this.toString(sb); - if (sb.length() == len) { - sb.deleteCharAt(len - 1); - } else { - sb.append(')'); - } - return sb.toString(); - } - - /** - * This method is public so one model can call a nested abstract model's - * <code>#toString(StringBuilder)</code>. - */ - public void toString(@SuppressWarnings("unused") StringBuilder sb) { - // subclasses should override this to do something a bit more helpful - } -} |