package com.vci.client.auth2.action; import java.awt.Dimension; import java.util.ArrayList; import java.util.List; import javax.swing.JOptionPane; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreePath; import com.vci.client.auth2.view.AbstractUIFunclet; import com.vci.client.omd.btm.ui.BtmTree; import com.vci.client.omd.btm.ui.ResourceTree; import com.vci.client.ui.util.PostorderEnumeration; public class ExpandAction extends Action { /** * */ private static final long serialVersionUID = 5391391037588855918L; private int level; public ExpandAction(String name) { super(name); setSize(new Dimension(5,5)); } @Override public void execute() { AbstractUIFunclet funclet = getFunclet(); BtmTree resourceTree = funclet.getResourceTree(); DefaultTreeModel model = (DefaultTreeModel) resourceTree.getModel(); model.reload(); DefaultMutableTreeNode root = (DefaultMutableTreeNode) model.getRoot(); if (root.getDepth() < level) { JOptionPane.showMessageDialog( com.vci.client.LogonApplication.frame, "类型树的深度小于" + level, "提示", JOptionPane.INFORMATION_MESSAGE); return; } PostorderEnumeration enumeration = new PostorderEnumeration(root); List twos = new ArrayList(); while (enumeration.hasMoreElements()) { DefaultMutableTreeNode element = (DefaultMutableTreeNode) enumeration .nextElement(); if (element.getLevel() == level) { twos.add(new TreePath(element.getPath())); } } for (TreePath path : twos) { resourceTree.setSelectionPath(path); } // resourceTree.setSelectionPaths(twos.toArray(new // TreePath[twos.size()])); } public int getLevel() { return level; } public void setLevel(int level) { this.level = level; } }