package org.jabref.gui.groups; import java.util.List; import java.util.Objects; import org.jabref.gui.undo.AbstractUndoableJabRefEdit; import org.jabref.logic.l10n.Localization; import org.jabref.model.groups.GroupTreeNode; /** * @author jzieren * */ class UndoableMoveGroup extends AbstractUndoableJabRefEdit { private final GroupTreeNodeViewModel root; private final List<Integer> pathToNewParent; private final int newChildIndex; private final List<Integer> pathToOldParent; private final int oldChildIndex; public UndoableMoveGroup(GroupTreeNodeViewModel root, MoveGroupChange moveChange) { this.root = Objects.requireNonNull(root); Objects.requireNonNull(moveChange); pathToOldParent = moveChange.getOldParent().getIndexedPathFromRoot(); pathToNewParent = moveChange.getNewParent().getIndexedPathFromRoot(); oldChildIndex = moveChange.getOldChildIndex(); newChildIndex = moveChange.getNewChildIndex(); } @Override public String getPresentationName() { return Localization.lang("move group"); } @Override public void undo() { super.undo(); GroupTreeNode newParent = root.getNode().getDescendant(pathToNewParent).get(); //TODO: NULL GroupTreeNode node = newParent.getChildAt(newChildIndex).get(); //TODO: Null //TODO: NULL node.moveTo(root.getNode().getDescendant(pathToOldParent).get(), oldChildIndex); } @Override public void redo() { super.redo(); GroupTreeNode oldParent = root.getNode().getDescendant(pathToOldParent).get(); //TODO: NULL GroupTreeNode node = oldParent.getChildAt(oldChildIndex).get(); //TODO:Null //TODO: NULL node.moveTo(root.getNode().getDescendant(pathToNewParent).get(), newChildIndex); } }