dangsn
2023-08-02 54f35ae7866dac5c497372b68d03309c7eae9424
Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeReferTreePanel.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,203 @@
package com.vci.ubcs.codeapply;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.vci.base.ui.swing.VCIOptionPane;
import com.vci.base.ui.swing.components.VCIJPanel;
import com.vci.base.ui.tree.VCIBaseTree;
import com.vci.base.ui.tree.VCIBaseTreeModel;
import com.vci.base.ui.tree.VCIBaseTreeNode;
import com.vci.ubcs.codeapply.object.*;
import com.vci.ubcs.codeapply.utils.ConfigUtils;
import com.vci.ubcs.codeapply.utils.HttpUtil;
import com.vci.ubcs.starter.web.pagemodel.Tree;
import org.apache.commons.collections4.CollectionUtils;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeExpansionListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.TreePath;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public abstract class CodeReferTreePanel extends VCIJPanel {
   private VCIBaseTree tree = null;
   private VCIBaseTreeModel treeModel = null;
   private VCIBaseTreeNode rootNode = null;
   private ReferTreObject referTreObject;
   private UIFormRefer uiFormRefer;
   public CodeReferTreePanel(UIFormRefer uiFormRefer) {
      this.uiFormRefer=uiFormRefer;
   }
   public void buildTreePanel(){
      initComponents();
   }
   private String url= ConfigUtils.getConfigValue("410.code.url","http://127.0.0.1:36014/codeApplySwingController");
   private void initComponents(){
      List<Tree> treeList=new ArrayList<>();
      ObjectMapper objectMapper = new ObjectMapper();
      if(uiFormRefer!=null){
         try {
            /**系统只加载代码项  å¦‚æžœlibName不为空,直接获取对应的代码项**/
            Map<String,String> condtionMap=new HashMap<>();
            condtionMap.put("referType",StringUtils.isBlank(uiFormRefer.getReferType())?"":uiFormRefer.getReferType());
            condtionMap.put("parentUsedField",StringUtils.isBlank(uiFormRefer.getParentUsedField())?"":uiFormRefer.getParentUsedField());
            condtionMap.put("valueField",StringUtils.isBlank(uiFormRefer.getValueField())?"":uiFormRefer.getValueField());
            condtionMap.put("parentValue",StringUtils.isBlank(uiFormRefer.getParentValue())?"":uiFormRefer.getParentValue());
            condtionMap.put("parentFieldName",StringUtils.isBlank(uiFormRefer.getParentFieldName())?"":uiFormRefer.getParentFieldName());
            condtionMap.put("textField",StringUtils.isBlank(uiFormRefer.getTextField())?"":uiFormRefer.getTextField());
            condtionMap.put("muti",uiFormRefer.isMuti()?"true":"false");
            condtionMap.put("queryAllLevel", StringUtils.isBlank(uiFormRefer.getLoadType())?"false":"true");//queryAllLevel
            //condtionMap.put("parentOid",null);
            R r= HttpUtil.sendGet(url+"/defaultReferTree",condtionMap,new HashMap<>());
            if(r.isSuccess()){
               Object object= r.getData();
               if(object!=null) {
//                  ObjectMapper objectMapper = new ObjectMapper();
                     treeList = objectMapper.readValue(object.toString(), new com.fasterxml.jackson.core.type.TypeReference<List<Tree>>() {});
                     treeList=treeList;
               }
            }else{
               VCIOptionPane.showMessage(this,r.getMsg());
            }
         } catch (JsonProcessingException e) {
            e.printStackTrace();
         }
      }
      rootNode = new VCIBaseTreeNode("参照", "参照");
      treeModel = new VCIBaseTreeModel(rootNode);
      tree = new VCIBaseTree(treeModel, new CodeLibTreeCellRenderer());
      addChildrenToParentTreeNode(rootNode,treeList);
      inittreeActions();
   }
   private void initTreeData() {
   }
   /*private void loadTreeData(VCIBaseTreeNode rootNode){
      CodeClassify currentObj = (CodeClassify) rootNode.getObj();
      String parentId = currentObj.getOid();
      CodeClassify[] libs = {};
      libs = getChildRMTypeObjects(parentId);
      for(CodeClassify obj : libs) {
         VCIBaseTreeNode node = new VCIBaseTreeNode(obj.getName(), obj);
         rootNode.add(node);
         node.setLeaf(false);
         node.setExpand(false);
      }
      rootNode.setLeaf(libs.length == 0);
      rootNode.setExpand(true);
      tree.setSelectionPath(new TreePath(selNode));
      tree.updateUI();
   }*/
   /**
    * å±•开树
    * <p>Description: </p>
    *
    * @author ligang
    * @time 2013-5-8
    * @param parentNode
    */
   private void addChildrenToParentTreeNode(VCIBaseTreeNode parentNode, List<Tree>children){
      parentNode.setLeaf(children.size() == 0);
      parentNode.setExpand(true);
      for(Tree obj : children) {
         VCIBaseTreeNode node = new VCIBaseTreeNode(obj.getName(), obj);
         List<Tree>newChildren = obj.getChildren();
         treeModel.insertNodeInto(node, parentNode, parentNode.getChildCount());
         if(!CollectionUtils.isEmpty(newChildren)) {
            node.setExpand(true);
            node.setLeaf(false);
            addChildrenToParentTreeNode(node, newChildren);
         }else{
            node.setExpand(true);
            node.setLeaf(true);
         }
      }
      if(tree != null){
         //tree.expandPath(new TreePath(selNode.getPath()));
         //tree.setSelectionPath(new TreePath(selNode.getPath()));
         tree.updateUI();
      }
   }
   private void inittreeActions(){
      tree.addTreeSelectionListener(new TreeSelectionListener() {
         @Override
         public void valueChanged(TreeSelectionEvent e) {
            if(!e.isAddedPath()) return;
            leftTree_valueChanged(e);
         }
      });
      tree.addTreeExpansionListener(new TreeExpansionListener() {
         @Override
         public void treeExpanded(TreeExpansionEvent e) {
            tree_treeExpanded_local(e);
         }
         @Override
         public void treeCollapsed(TreeExpansionEvent e) {
         }
      });
   }
   private void leftTree_valueChanged(TreeSelectionEvent e) {
      tree_valueChanged(e);
   }
   /**
    * é€‰æ‹©äº†æ ‘节点的事件处理
    * <p>Description: </p>
    *
    * @author xchao
    * @time 2012-5-26
    * @param e
    */
   public abstract void tree_valueChanged(TreeSelectionEvent e);
   /**
    * å±•开事件
    * @param e
    */
   private void tree_treeExpanded_local(TreeExpansionEvent e) {
      TreePath treePath = e.getPath();
      VCIBaseTreeNode treeNode = (VCIBaseTreeNode)treePath.getLastPathComponent();
      if(treeNode.isExpand()) return;
      if(!(treeNode.getObj() instanceof Tree)) return;
      Tree tree = (Tree)treeNode.getObj();
      List<Tree> childs = new ArrayList<>();
      //childs = getChildRMTypeObjects(rmTypeObject.getOid());
      addRMTypeObjectsToParentTreeNode(childs, treeNode);
      treeNode.setExpand(true);
      treeNode.setLeaf(treeModel.getChildCount(treeNode) == 0);
   }
   private void addRMTypeObjectsToParentTreeNode(List<Tree> objs, VCIBaseTreeNode parentNode){
      for(Tree obj : objs){
         VCIBaseTreeNode node = new VCIBaseTreeNode(obj.getName(), obj);
         treeModel.insertNodeInto(node, parentNode, treeModel.getChildCount(parentNode));
      }
   }
   public VCIBaseTree getTree() {
      return tree;
   }
   public void setTree(VCIBaseTree tree) {
      this.tree = tree;
   }
   public VCIBaseTreeModel getTreeModel() {
      return treeModel;
   }
   public void setTreeModel(VCIBaseTreeModel treeModel) {
      this.treeModel = treeModel;
   }
}