org.eclipse.ui.internal.Model Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of workbench Show documentation
Show all versions of workbench Show documentation
This plug-in contains the bulk of the Workbench implementation, and depends on JFace, SWT, and Core Runtime. It cannot be used independently from org.eclipse.ui. Workbench client plug-ins should not depend directly on this plug-in.
The newest version!
/*******************************************************************************
* Copyright (c) 2004, 2006 IBM Corporation and others.
* 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ui.internal;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* Represents an object with state that will notifies a set of listeners
* whenever its state changes
*/
public class Model {
/**
* Current state of the model
*/
private Object state;
/**
* Set of objects that will be notified about state changes
*/
private List views = new ArrayList(1);
/**
* Creates a new model with the given initial state.
*
* @param initialState
*/
public Model(Object initialState) {
state = initialState;
}
/**
* Returns the current state of the model.
*
* @return the current model state
*/
public Object getState() {
return state;
}
/**
* Sets the current state of the model.
*
* @param newState the new state of the model
* @param toOmit change listener that should be omitted from change notifications (or null if all
* listeners should be notified).
*/
public void setState(Object newState, IChangeListener toOmit) {
if (areEqual(newState, state)) {
return;
}
state = newState;
Iterator iter = views.iterator();
while (iter.hasNext()) {
IChangeListener next = (IChangeListener) iter.next();
if (next != toOmit) {
next.update(true);
}
}
}
private boolean areEqual(Object o1, Object o2) {
if (o1 == null) {
return o2 == null;
}
if (o2 == null) {
return false;
}
return o1.equals(o2);
}
/**
* Adds the given listener to the set of listeners that will be
* notified when the state changes.
*
* @param toAdd
*/
public void addChangeListener(IChangeListener changeListener) {
changeListener.update(false);
views.add(changeListener);
}
/**
* Stops this model from sending change events from the given listener.
*
* @param toRemove
*/
public void removeChangeListener(IChangeListener changeListener) {
views.remove(changeListener);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy