package com.revolsys.swing.map.form;
import java.lang.ref.Reference;
import java.lang.ref.WeakReference;
import com.revolsys.io.BaseCloseable;
import com.revolsys.swing.undo.UndoManager;
public class RecordLayerFormUndoManager extends UndoManager {
private static final long serialVersionUID = 1L;
private final Reference<LayerRecordForm> form;
public RecordLayerFormUndoManager(final LayerRecordForm form) {
this.form = new WeakReference<>(form);
}
@Override
public void redo() {
final LayerRecordForm form = this.form.get();
if (form != null) {
final boolean validationEnabled = form.isFieldValidationEnabled();
try (
final BaseCloseable c = form.setFieldValidationEnabled(false)) {
super.redo();
if (validationEnabled) {
form.validateFields(form.getFieldsToValidate());
}
}
}
}
@Override
public void undo() {
final LayerRecordForm form = this.form.get();
if (form != null) {
final boolean validationEnabled = form.isFieldValidationEnabled();
try (
final BaseCloseable c = form.setFieldValidationEnabled(false)) {
super.undo();
if (validationEnabled) {
form.validateFields(form.getFieldsToValidate());
}
}
}
}
}