package com.link_intersystems.swing;

import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;

import javax.swing.SwingWorker;
import javax.swing.SwingWorker.StateValue;

public class SwingWorkerPropertyChangeAdapter implements PropertyChangeListener {

	@Override
	public void propertyChange(PropertyChangeEvent evt) {
		String propertyName = evt.getPropertyName();
		if ("state".equals(propertyName)) {
			StateValue state = (StateValue) evt.getNewValue();
			switch (state) {
			case PENDING:
			case STARTED:
				started();
				break;
			case DONE:
				SwingWorker<?, ?> future = (SwingWorker<?, ?>) evt.getSource();
				boolean cancelled = future.isCancelled();
				done(cancelled);
			}
		}
	}

	protected void started() {
	}

	protected void done(boolean cancelled) {
	}

}