@Override public void redo() { super.redo(); final GroupTreeNode subtreeRoot = m_groupRoot.getNode(m_subtreeRootPath); subtreeRoot.removeAllChildren(); for (int i = 0; i < m_modifiedSubtree.size(); ++i) { subtreeRoot.add((GroupTreeNode) m_modifiedSubtree.elementAt(i)); } if (m_revalidate) { m_groupSelector.revalidateGroups(); } }
@Override public void undo() { super.undo(); // remember modified children for redo m_modifiedSubtree.clear(); // get node to edit final GroupTreeNode subtreeRoot = m_groupRoot.getNode(m_subtreeRootPath); for (int i = 0; i < subtreeRoot.getChildCount(); ++i) { m_modifiedSubtree.add(subtreeRoot.getChildAt(i)); } // keep subtree handle, but restore everything else from backup subtreeRoot.removeAllChildren(); for (int i = 0; i < m_subtreeBackup.getChildCount(); ++i) { subtreeRoot.add(((GroupTreeNode) m_subtreeBackup.getChildAt(i)).deepCopy()); } if (m_revalidate) { m_groupSelector.revalidateGroups(); } }