diff options
Diffstat (limited to 'common/plugins/org.eclipse.jpt.common.ui/src/org/eclipse/jpt/common/ui/internal/utility/swt/MultiControlBooleanStateController.java')
-rw-r--r-- | common/plugins/org.eclipse.jpt.common.ui/src/org/eclipse/jpt/common/ui/internal/utility/swt/MultiControlBooleanStateController.java | 160 |
1 files changed, 0 insertions, 160 deletions
diff --git a/common/plugins/org.eclipse.jpt.common.ui/src/org/eclipse/jpt/common/ui/internal/utility/swt/MultiControlBooleanStateController.java b/common/plugins/org.eclipse.jpt.common.ui/src/org/eclipse/jpt/common/ui/internal/utility/swt/MultiControlBooleanStateController.java deleted file mode 100644 index 0c48ad96b5..0000000000 --- a/common/plugins/org.eclipse.jpt.common.ui/src/org/eclipse/jpt/common/ui/internal/utility/swt/MultiControlBooleanStateController.java +++ /dev/null @@ -1,160 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 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.ui.internal.utility.swt; - -import java.util.HashSet; -import org.eclipse.jpt.common.utility.internal.iterables.SnapshotCloneIterable; -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.listener.CollectionChangeAdapter; -import org.eclipse.jpt.common.utility.model.listener.CollectionChangeListener; -import org.eclipse.jpt.common.utility.model.value.CollectionValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.swt.widgets.Control; - -/** - * This controller enables a boolean model to control either the - * <em>enabled</em> or <em>visible</em> properties of a set of SWT controls; - * i.e. the controls' properties are kept in synch with the boolean model, - * but <em>not</em> vice-versa. - * - * @see PropertyValueModel - * @see CollectionValueModel - * @see Control#setEnabled(boolean) - * @see Control#setVisible(boolean) - */ -final class MultiControlBooleanStateController - extends BooleanStateController -{ - /** - * The set of controls whose state is kept in sync with the boolean model. - */ - private final CollectionValueModel<? extends Control> controlsModel; - - /** - * A listener that allows clients to add/remove controls. - */ - private final CollectionChangeListener controlsListener; - - /** - * Cache of controls. - */ - private final HashSet<Control> controls = new HashSet<Control>(); - - - // ********** constructor ********** - - /** - * Constructor - the boolean model, the controls model, and the adapter are required. - */ - MultiControlBooleanStateController( - PropertyValueModel<Boolean> booleanModel, - CollectionValueModel<? extends Control> controlsModel, - boolean defaultValue, - Adapter adapter - ) { - super(booleanModel, defaultValue, adapter); - if (controlsModel == null) { - throw new NullPointerException(); - } - this.controlsModel = controlsModel; - this.controlsListener = this.buildControlsListener(); - this.addControls(controlsModel); - } - - - // ********** initialization ********** - - private CollectionChangeListener buildControlsListener() { - return new ControlsListener(); - } - - /* CU private */ class ControlsListener - extends CollectionChangeAdapter - { - @Override - @SuppressWarnings("unchecked") - public void itemsAdded(CollectionAddEvent event) { - MultiControlBooleanStateController.this.addControls((Iterable<? extends Control>) event.getItems()); - } - @Override - @SuppressWarnings("unchecked") - public void itemsRemoved(CollectionRemoveEvent event) { - MultiControlBooleanStateController.this.removeControls((Iterable<? extends Control>) event.getItems()); - } - @Override - public void collectionCleared(CollectionClearEvent event) { - MultiControlBooleanStateController.this.clearControls(); - } - @Override - @SuppressWarnings("unchecked") - public void collectionChanged(CollectionChangeEvent event) { - MultiControlBooleanStateController.this.clearControls(); - MultiControlBooleanStateController.this.addControls((Iterable<? extends Control>) event.getCollection()); - } - } - - - // ********** controls ********** - - @Override - void setControlState(boolean controlState) { - for (Control control : this.controls) { - this.setControlState(control, controlState); - } - } - - /* CU private */ void addControls(Iterable<? extends Control> controls_) { - for (Control control : controls_) { - this.addControl(control); - } - } - - private void addControl(Control control) { - if (this.controls.isEmpty()) { - this.engageBooleanModel(); - this.controlsModel.addCollectionChangeListener(CollectionValueModel.VALUES, this.controlsListener); - } - if (this.controls.add(control)) { - this.engageControl(control); - // wait until the models are engaged to get the boolean value... :-) - this.setControlState(control, this.getBooleanValue()); - } else { - throw new IllegalArgumentException("duplicate control: " + control); //$NON-NLS-1$ - } - } - - /* CU private */ void clearControls() { - this.removeControls(new SnapshotCloneIterable<Control>(this.controls)); - } - - /* CU private */ void removeControls(Iterable<? extends Control> controls_) { - for (Control control : controls_) { - this.disengageControl(control); - this.removeControl(control); - } - } - - private void removeControl(Control control) { - this.controls.remove(control); - if (this.controls.isEmpty()) { - this.controlsModel.removeCollectionChangeListener(CollectionValueModel.VALUES, this.controlsListener); - this.disengageBooleanModel(); - } - } - - @Override - void controlDisposed(Control control) { - super.controlDisposed(control); - this.removeControl(control); - } -} |