package gov.nasa.arc.mct.fastplot.settings; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import java.util.ArrayList; import java.util.List; import javax.swing.JPanel; public abstract class PlotSettingsSubPanel extends JPanel implements ActionListener, FocusListener { private static final long serialVersionUID = -8067855151177076767L; private List<Runnable> callbacks = new ArrayList<Runnable>(); public abstract void populate(PlotConfiguration settings); public abstract void reset(PlotConfiguration settings, boolean hard); public abstract boolean isDirty(); public abstract boolean isValidated(); public void addCallback(Runnable callback) { callbacks.add(callback); } public void removeCallback(Runnable callback) { callbacks.remove(callback); } protected void fireCallbacks() { for (Runnable callback : callbacks) { callback.run(); } } /* (non-Javadoc) * @see java.awt.event.FocusListener#focusGained(java.awt.event.FocusEvent) */ @Override public void focusGained(FocusEvent e) { } /* (non-Javadoc) * @see java.awt.event.FocusListener#focusLost(java.awt.event.FocusEvent) */ @Override public void focusLost(FocusEvent e) { fireCallbacks(); } /* (non-Javadoc) * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) */ @Override public void actionPerformed(ActionEvent e) { fireCallbacks(); } }