package com.vci.client.omd.btm.ui;
|
|
import java.util.ArrayList;
|
import java.util.Collections;
|
import java.util.Enumeration;
|
import java.util.HashMap;
|
import javax.swing.JTree;
|
import javax.swing.tree.DefaultMutableTreeNode;
|
import javax.swing.tree.DefaultTreeModel;
|
import javax.swing.tree.TreePath;
|
import javax.swing.tree.TreeSelectionModel;
|
|
import com.vci.corba.omd.btm.BtmItem;
|
import com.vci.client.omd.btm.wrapper.BtmItemWrapper;
|
import com.vci.client.omd.ui.OmdTreeCellRenderer;
|
import com.vci.corba.common.VCIError;
|
import com.vci.omd.utils.BTComparator;
|
|
public class BtmTree extends JTree{
|
|
/**
|
*
|
*/
|
private static final long serialVersionUID = 4957161428498834276L;
|
private BtmItem[] btmArray;
|
private HashMap<String, ArrayList<BtmItem>> btmListMap;
|
private DefaultMutableTreeNode btmRootNode = new DefaultMutableTreeNode("业务类型");
|
|
public BtmTree(){
|
super();
|
DefaultTreeModel dtm = new DefaultTreeModel(btmRootNode);
|
this.setModel(dtm);
|
setAutoscrolls(true);
|
|
//设置单选模式
|
getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
|
setOpaque(true);
|
initOrUpdate();
|
setCellRenderer(new OmdTreeCellRenderer());
|
}
|
|
public void initOrUpdate(){
|
try {
|
btmArray = BtmClient.getService().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);
|
}
|
}
|
}
|
//也许这段可以加到上面的if中
|
for(Enumeration e = btmRootNode.children(); e.hasMoreElements();){
|
DefaultMutableTreeNode node = (DefaultMutableTreeNode) e.nextElement();
|
if(node.isLeaf()){
|
addBtmNodeToTree(node);
|
}
|
}
|
|
this.updateUI();
|
|
this.expandPath(new TreePath(btmRootNode));
|
} catch (VCIError e) {
|
e.printStackTrace();
|
}catch(Exception 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);
|
Collections.sort(btmList, new BTComparator());
|
for(int i = 0; i < btmList.size(); i++){
|
btmItem_ = btmList.get(i);
|
node_ = new DefaultMutableTreeNode(new BtmItemWrapper(btmItem_));
|
node.add(node_);
|
addBtmNodeToTree(node_);
|
}
|
}
|
}
|
}
|