20 package net.sf.gridarta.gui.undo;
22 import java.util.IdentityHashMap;
24 import javax.swing.Action;
41 import net.
sf.japi.swing.action.ActionBuilder;
42 import net.
sf.japi.swing.action.ActionBuilderFactory;
43 import net.
sf.japi.swing.action.ActionMethod;
44 import org.jetbrains.annotations.NotNull;
45 import org.jetbrains.annotations.Nullable;
57 private static final ActionBuilder
ACTION_BUILDER = ActionBuilderFactory.getInstance().getActionBuilder(
"net.sf.gridarta");
99 mapModel = mapControl ==
null ? null : mapControl.getMapModel();
104 public void mapCreated(@NotNull
final MapControl<G, A, R> mapControl,
final boolean interactive) {
124 public void preBeginTransaction() {
129 public void beginTransaction(@NotNull
final String
name) {
137 assert savedUndoState !=
null;
139 assert savedUndoModel !=
null;
147 savedUndoModel.
finish(savedUndoState);
156 public void postEndTransaction() {
174 assert undoModel !=
null;
179 mapManager.addMapManagerListener(mapManagerListener);
187 final boolean undoEnabled =
doUndo(
false);
188 aUndo.setEnabled(undoEnabled);
191 assert undoModel !=
null;
199 final boolean redoEnabled =
doRedo(
false);
200 aRedo.setEnabled(redoEnabled);
203 assert redoModel !=
null;
256 private boolean doUndo(
final boolean performAction) {
258 if (tmpMapModel ==
null) {
263 if (undoModel ==
null) {
288 private boolean doRedo(
final boolean performAction) {
290 if (tmpMapModel ==
null) {
295 if (undoModel ==
null) {
316 public void setAction(@NotNull
final Action action, @NotNull
final String
name) {
317 if (
name.equals(
"undo")) {
319 }
else if (
name.equals(
"redo")) {
322 throw new IllegalArgumentException(
"unsupported action name: " +
name);