package net.codjo.dataprocess.gui.util.std; import java.util.HashMap; import java.util.Map; import java.util.Observer; import javax.swing.event.InternalFrameAdapter; import javax.swing.event.InternalFrameEvent; /** * */ public abstract class AbstractRequestTableLoader implements Observer { protected AbstractListWindow abstractListWindow; private Map<Object, Object> properties = new HashMap<Object, Object>(); protected void init(AbstractListWindow listWindow) { this.abstractListWindow = listWindow; initObserver(); } protected void initObserver() { if (abstractListWindow == null) { throw new NullPointerException(getClass().getName() + " n'a pas �t� initialis� correctement. Veuilliez appeler init() auparavent."); } abstractListWindow.getCtxt().addObserver(this); abstractListWindow.addInternalFrameListener(new CleanUpListener(this)); } abstract protected void refreshTable(); public void putProperty(Object key, Object value) { properties.put(key, value); } public boolean hasProperty(Object key) { return properties.containsKey(key); } public Object getProperty(Object key) { return properties.get(key); } private class CleanUpListener extends InternalFrameAdapter { private Observer observer; CleanUpListener(Observer observer) { this.observer = observer; } @Override public void internalFrameClosed(InternalFrameEvent event) { if (observer != null) { abstractListWindow.getCtxt().removeObserver(observer); } } @Override public void internalFrameClosing(InternalFrameEvent event) { } } }