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_);
|
}
|
}
|
}
|
}
|