ludc
2025-01-16 986aa62ed00bee39363bab41b4eeb8259d446efd
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package com.vci.client.omd.btm.ui;
 
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
 
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeSelectionModel;
 
import com.vci.client.common.providers.ServiceProvider;
import com.vci.client.omd.btm.wrapper.BtmItemWrapper;
import com.vci.client.omd.ui.OmdTreeCellRenderer;
import com.vci.corba.omd.btm.BtmItem;
 
public class ResourceTree extends JTree {
 
    /**
     * 
     */
    private static final long serialVersionUID = 4957161428498834276L;
    private BtmItem[] btmArray;
    private HashMap<String, ArrayList<BtmItem>> btmListMap;
    private static DefaultMutableTreeNode btmRootNode = new DefaultMutableTreeNode("业务类型树");;
 
    public ResourceTree() {
        super(btmRootNode, false);
        this.setAutoscrolls(true);
 
        this.setCellRenderer(new OmdTreeCellRenderer());
 
        // 设置单选模式
        this.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
        initOrUpdate();
        this.setOpaque(false);
    }
 
    @SuppressWarnings("rawtypes")
    public void initOrUpdate() {
        try {
            btmArray = ServiceProvider.getOMDService().getBTMService().getAllBtmItem("");
            btmListMap = new HashMap<String, ArrayList<BtmItem>>();
            BtmItem btItem = null;
            btmRootNode = (DefaultMutableTreeNode) this.getModel().getRoot();
            if (!btmRootNode.isLeaf()) {
                btmRootNode.removeAllChildren();
            }
            for (int i = 0; i < btmArray.length; i++) {
                btItem = btmArray[i];
                if (btItem.fName.equals("")) {
                    btmRootNode.add(new DefaultMutableTreeNode(new BtmItemWrapper(btItem)));
                } else {
                    if (btmListMap.get(btItem.fName) == null) {
                        ArrayList<BtmItem> btList = new ArrayList<BtmItem>();
                        btList.add(btItem);
                        btmListMap.put(btItem.fName, btList);
                    } else {
                        btmListMap.get(btItem.fName).add(btItem);
                    }
                }
            }
            for (Enumeration e = btmRootNode.children(); e.hasMoreElements();) {
                DefaultMutableTreeNode node = (DefaultMutableTreeNode) e.nextElement();
                if (node.isLeaf()) {
                    addBtmNodeToTree(node);
                }
            }
            this.updateUI();
        } catch (Throwable e) {
            e.printStackTrace();
        }
    }
 
    /**
     * 由叶子节点去btmListMap中查找子节点
     * 
     * @param node
     */
    private void addBtmNodeToTree(DefaultMutableTreeNode node) {
        BtmItem btmItem = ((BtmItemWrapper) node.getUserObject()).btmItem;
        if (btmListMap.get(btmItem.name) == null) {
            return;
        } else {
            ArrayList<BtmItem> btmList = null;
            BtmItem btmItem_ = null;
            DefaultMutableTreeNode node_ = null;
            btmList = btmListMap.get(btmItem.name);
            for (int i = 0; i < btmList.size(); i++) {
                btmItem_ = btmList.get(i);
                node_ = new DefaultMutableTreeNode(new BtmItemWrapper(btmItem_));
                node.add(node_);
                addBtmNodeToTree(node_);
            }
        }
    }
}