package org.jabref.gui.groups; import java.util.List; import org.jabref.gui.undo.AbstractUndoableJabRefEdit; import org.jabref.logic.l10n.Localization; import org.jabref.model.groups.AbstractGroup; import org.jabref.model.groups.GroupTreeNode; class UndoableModifyGroup extends AbstractUndoableJabRefEdit { private final GroupSelector groupSelector; private final AbstractGroup m_oldGroupBackup; private final AbstractGroup m_newGroupBackup; private final GroupTreeNode m_groupsRootHandle; private final List<Integer> m_pathToNode; /** * @param node * The node which still contains the old group. * @param newGroup * The new group to replace the one currently stored in <b>node * </b>. */ public UndoableModifyGroup(GroupSelector gs, GroupTreeNodeViewModel groupsRoot, GroupTreeNodeViewModel node, AbstractGroup newGroup) { groupSelector = gs; m_oldGroupBackup = node.getNode().getGroup().deepCopy(); m_newGroupBackup = newGroup.deepCopy(); m_pathToNode = node.getNode().getIndexedPathFromRoot(); m_groupsRootHandle = groupsRoot.getNode(); } @Override public String getPresentationName() { return Localization.lang("modify group"); } @Override public void undo() { super.undo(); //TODO: NULL m_groupsRootHandle.getDescendant(m_pathToNode).get().setGroup( m_oldGroupBackup.deepCopy()); groupSelector.revalidateGroups(); } @Override public void redo() { super.redo(); m_groupsRootHandle.getDescendant(m_pathToNode).get().setGroup( m_newGroupBackup.deepCopy()); groupSelector.revalidateGroups(); } }