package org.geosdi.geoplatform.gui.client.widget.wfs.buttonbar.undoredo.mediator; import com.google.common.collect.Maps; import org.geosdi.geoplatform.gui.client.widget.wfs.buttonbar.undoredo.button.WFSUndoRedoButton; import org.geosdi.geoplatform.gui.client.widget.wfs.map.control.edit.undoredo.WFSUndoRedoEditSupport; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; /** * @author Giuseppe La Scaleia - CNR IMAA geoSDI Group * @email giuseppe.lascaleia@geosdi.org */ public class BaseUndoRedoMediator implements WFSUndoRedoMediator { private static final Logger logger = Logger.getLogger("BaseUndoRedoMediator"); // private final Map<String, WFSUndoRedoButton> undoRedoButtonRepo = Maps.newHashMap(); private WFSUndoRedoEditSupport wfsUndoRedoEditSupport; /** * @param button * @return {@link WFSUndoRedoMediator} */ @Override public <UndoRedo extends WFSUndoRedoButton> WFSUndoRedoMediator bind(UndoRedo button) { this.undoRedoButtonRepo.put(button.getItemId(), button); return this; } @Override public void undo() { if (this.wfsUndoRedoEditSupport != null) this.wfsUndoRedoEditSupport.undo(); } @Override public void redo() { if (this.wfsUndoRedoEditSupport != null) this.wfsUndoRedoEditSupport.redo(); } /** * @param undoRedo */ @Override public <UndoRedo extends WFSUndoRedoEditSupport> void enableUndoRedoSupport(UndoRedo undoRedo) { logger.log(Level.FINE, "#################################EXECUTE enableUndoRedoSupport"); this.wfsUndoRedoEditSupport = undoRedo; for (Map.Entry<String, WFSUndoRedoButton> entry : this.undoRedoButtonRepo.entrySet()) { entry.getValue().setEnabled(Boolean.TRUE); } } @Override public void disableUndoRedoSupport() { for (Map.Entry<String, WFSUndoRedoButton> entry : this.undoRedoButtonRepo.entrySet()) { entry.getValue().setEnabled(Boolean.FALSE); } } }