Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/model/value/ElementPropertyValueModelAdapter.java')
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/model/value/ElementPropertyValueModelAdapter.java130
1 files changed, 0 insertions, 130 deletions
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/model/value/ElementPropertyValueModelAdapter.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/model/value/ElementPropertyValueModelAdapter.java
deleted file mode 100644
index 0f88a5676f..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/model/value/ElementPropertyValueModelAdapter.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011, 2012 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.value;
-
-import org.eclipse.jpt.common.utility.Filter;
-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.value.CollectionValueModel;
-
-/**
- * Adapt an element in a collection value model to a property value model.
- * The property model's value is determined by whether the collection model
- * contains the value: If the collection model contains the value,
- * the property model's value is <em>that</em> element; otherwise, the property
- * model's value is <code>null</code>. A {@link #predicate} is used to determine
- * whether the collection model contains the relevant value.
- * <p>
- * This is useful for a client (e.g. a UI widget) that is longer-living than its
- * underlying model. Obviously, the client must be prepared to handle a value of
- * <code>null</code>.
- *
- * @param <V> the type of the both the model's value and
- * the wrapped collection value model's elements
- */
-public class ElementPropertyValueModelAdapter<V>
- extends CollectionPropertyValueModelAdapter<V, V>
-{
- /**
- * A predicate used to determine whether an element in the wrapped
- * collection model is the model's value.
- */
- protected final Filter<V> predicate;
-
-
- /**
- * Construct a property value model whose value depends on whether the
- * specified collection value model contains the value. The specified
- * filter is used to determine whether an element in the specified
- * collection model is the property value.
- */
- public ElementPropertyValueModelAdapter(CollectionValueModel<? extends V> collectionModel, Filter<V> predicate) {
- super(collectionModel);
- if (predicate == null) {
- throw new NullPointerException();
- }
- this.predicate = predicate;
- }
-
- /**
- * If the collection model contains the property model's {@link #value},
- * return that element; otherwise return <code>null</code>.
- */
- @Override
- protected V buildValue() {
- for (V each : this.collectionModel) {
- if (this.predicate.accept(each)) {
- return each;
- }
- }
- return null;
- }
-
- /**
- * Check whether the wrapped collection model now contains the
- * {@link #value}.
- */
- @Override
- protected void itemsAdded(Iterable<V> items) {
- if (this.value == null) {
- this.itemsAdded_(items);
- }
- }
-
- protected void itemsAdded_(Iterable<V> items) {
- for (V each : items) {
- if (this.predicate.accept(each)) {
- this.firePropertyChanged(VALUE, null, this.value = each);
- return;
- }
- }
- }
-
- /**
- * Check whether the wrapped collection model no longer contains the
- * {@link #value}.
- */
- @Override
- protected void itemsRemoved(Iterable<V> items) {
- if (this.value != null) {
- this.itemsRemoved_(items);
- }
- }
-
- protected void itemsRemoved_(Iterable<V> items) {
- for (V each : items) {
- if (this.valuesAreEqual(each, this.value)) {
- V old = this.value;
- this.firePropertyChanged(VALUE, old, this.value = null);
- return;
- }
- }
- }
-
- /**
- * The {@link #value} must now be <code>null</code>.
- */
- @Override
- protected void collectionCleared(CollectionClearEvent event) {
- if (this.value != null) {
- V old = this.value;
- this.firePropertyChanged(VALUE, old, this.value = null);
- }
- }
-
- /**
- * Re-calculate the {@link #value}.
- */
- @Override
- protected void collectionChanged(CollectionChangeEvent event) {
- V old = this.value;
- this.firePropertyChanged(VALUE, old, this.value = this.buildValue());
- }
-}

Back to the top