/**
* This file is protected by Copyright.
* Please refer to the COPYRIGHT file distributed with this source distribution.
*
* This file is part of REDHAWK IDE.
*
* 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.
*
*/
package gov.redhawk.model.sca.services;
import gov.redhawk.sca.util.PropertyChangeSupport;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
/**
* @since 14.0
*
*/
public abstract class AbstractDataProvider implements IScaDataProvider {
private final PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
private boolean disposed;
private boolean enabled;
private IStatus status;
/**
* {@inheritDoc}
*/
@Override
public void addPropertyChangeListener(PropertyChangeListener listener) {
propertyChangeSupport.addPropertyChangeListener(listener);
}
/**
* @return
* @see java.beans.PropertyChangeSupport#getPropertyChangeListeners()
* @since 19.0
*/
public PropertyChangeListener[] getPropertyChangeListeners() {
return propertyChangeSupport.getPropertyChangeListeners();
}
/**
* {@inheritDoc}
*/
@Override
public void removePropertyChangeListener(PropertyChangeListener listener) {
propertyChangeSupport.removePropertyChangeListener(listener);
}
/**
* {@inheritDoc}
*/
@Override
public void dispose() {
boolean oldDisposed = disposed;
this.disposed = true;
propertyChangeSupport.firePropertyChange(IScaDataProvider.DISPOSED_PROPERTY, oldDisposed, disposed);
}
protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
propertyChangeSupport.firePropertyChange(propertyName, oldValue, newValue);
}
protected void firePropertyChange(String propertyName, boolean oldValue, boolean newValue) {
propertyChangeSupport.firePropertyChange(propertyName, oldValue, newValue);
}
protected void firePropertyChange(PropertyChangeEvent evt) {
propertyChangeSupport.firePropertyChange(evt);
}
/**
* {@inheritDoc}
*/
@Override
public boolean isDisposed() {
return disposed;
}
/**
* {@inheritDoc}
*/
@Override
public void setEnabled(boolean enabled) {
if (this.enabled == enabled) {
return;
}
boolean oldValue = this.enabled;
this.enabled = enabled;
propertyChangeSupport.firePropertyChange(IScaDataProvider.ENABLED_PROPERTY, oldValue, isEnabled());
}
protected void setStatus(IStatus status) {
if (this.status != null && (status == null || (status.getSeverity() == this.status.getSeverity()))) {
return;
}
IStatus oldValue = this.status;
this.status = status;
firePropertyChange(STATUS_PROPERTY, oldValue, this.status);
}
@Override
public IStatus getStatus() {
return this.status;
}
/**
* {@inheritDoc}
*/
@Override
public boolean isEnabled() {
return enabled && !isDisposed();
}
@Override
public IStatus refresh(IProgressMonitor monitor) {
return Status.OK_STATUS;
}
}