package org.jabref.gui.undo; import org.jabref.gui.BasePanel; import org.jabref.logic.l10n.Localization; import org.jabref.model.entry.BibtexString; import org.jabref.model.strings.StringUtil; public class UndoableStringChange extends AbstractUndoableJabRefEdit { private final BibtexString string; private final String oldValue; private final String newValue; private final boolean nameChange; private final BasePanel panel; public UndoableStringChange(BasePanel panel, BibtexString string, boolean nameChange, String oldValue, String newValue) { this.string = string; this.oldValue = oldValue; this.newValue = newValue; this.nameChange = nameChange; this.panel = panel; } @Override public String getPresentationName() { return (nameChange ? Localization.lang("change string name %0 to %1", StringUtil.boldHTML(oldValue), StringUtil.boldHTML(newValue)) : Localization.lang("change string content %0 to %1", StringUtil.boldHTML(oldValue), StringUtil.boldHTML(newValue))); } @Override public void undo() { super.undo(); // Revert the change. panel.assureStringDialogNotEditing(); if (nameChange) { string.setName(oldValue); } else { string.setContent(oldValue); } panel.updateStringDialog(); } @Override public void redo() { super.redo(); // Redo the change. panel.assureStringDialogNotEditing(); if (nameChange) { string.setName(newValue); } else { string.setContent(newValue); } panel.updateStringDialog(); } }