package org.freeplane.plugin.workspace.actions;
import java.awt.event.ActionEvent;
import java.util.Enumeration;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
import org.freeplane.plugin.workspace.WorkspaceController;
import org.freeplane.plugin.workspace.components.IWorkspaceView;
import org.freeplane.plugin.workspace.model.WorkspaceTreeModel;
public class WorkspaceCollapseAction extends AWorkspaceAction {
private static final long serialVersionUID = 1L;
public WorkspaceCollapseAction() {
super("workspace.action.all.collapse");
}
public void actionPerformed(final ActionEvent e) {
collapseAll(getNodeFromActionEvent(e).getModel());
}
private static void collapseAll(WorkspaceTreeModel model) {
TreeNode root = (TreeNode) model.getRoot();
IWorkspaceView view = WorkspaceController.getCurrentModeExtension().getView();
TreePath rootPath = new TreePath(root);
for (Enumeration<?> e=root.children(); e.hasMoreElements();) {
TreeNode n = (TreeNode) e.nextElement();
TreePath path = rootPath.pathByAddingChild(n);
collapseAll(view, model, path);
}
}
private static void collapseAll(IWorkspaceView view, WorkspaceTreeModel model, TreePath parent) {
TreeNode node = (TreeNode) parent.getLastPathComponent();
if (node.getChildCount() >= 0) {
for (Enumeration<?> e=node.children(); e.hasMoreElements();) {
TreeNode n = (TreeNode) e.nextElement();
TreePath path = parent.pathByAddingChild(n);
collapseAll(view, model, path);
}
}
view.collapsePath(parent);
}
}