田源
2024-03-07 4b4083fd73dc27ece42f4835483565eef0e4f608
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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<TreePath> twos = new ArrayList<TreePath>();
        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;
    }
}