package com.onaro.sanscreen.client.view.task.actions.util; import com.onaro.util.ListenerList; import javax.swing.*; public abstract class AbstractField { private ListenerList listeners = new ListenerList(); /** * Gets the component for this field. * @return the component for this field. */ abstract public JComponent getComponent(); /** * Gets the label of this field. * @return the label for this field. */ abstract public String getLabel(); /** * Registers a listener for changes in this field. * * @param listener the listener */ public void addFieldChangedListener(FieldChangedListener listener) { listeners.addListener(FieldChangedListener.class, listener); } /** * Removes a listener for changes to this field. * * @param listener the listener */ public void removeFieldChangedListener(FieldChangedListener listener) { listeners.removeListener(FieldChangedListener.class, listener); } protected void fireFieldChanged() { listeners.fireEvent(FieldChangedListener.class, new FieldChangedEvent(this, getLabel())); } }