package com.link_intersystems.swing;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.Collection;
import java.util.HashSet;
import javax.swing.Action;
public class ProgressActionMediator implements PropertyChangeListener {
Collection<Action> disabledActionsWhileRunning = new HashSet<Action>();
Collection<Action> enabledActionsWhileRunning = new HashSet<Action>();
public ProgressActionMediator(ProgressAction progressAction) {
progressAction.addPropertyChangeListener(this);
}
public void addDisabledActionWhileRunning(Action action) {
disabledActionsWhileRunning.add(action);
}
public void addEnabledActionWhileRunning(Action action) {
enabledActionsWhileRunning.add(action);
}
@Override
public void propertyChange(PropertyChangeEvent evt) {
if (ProgressAction.PROP_RUNNING.equals(evt.getPropertyName())) {
Boolean running = (Boolean) evt.getNewValue();
for (Action action : disabledActionsWhileRunning) {
action.setEnabled(!running);
}
for (Action action : enabledActionsWhileRunning) {
action.setEnabled(running);
}
}
}
}