xiejun
2023-08-24 b28da4c353e50fc2491c733889fef5f79e5926f2
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
package com.vci.rmip.code.client.codeapply.Apply410;
 
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.rmip.code.client.codeapply.Apply410.object.R;
import com.vci.rmip.code.client.codeapply.Apply410.object.ReferTreObject;
import com.vci.rmip.code.client.codeapply.Apply410.object.TokenUserObject;
import com.vci.rmip.code.client.codeapply.Apply410.object.UIFormRefer;
import com.vci.rmip.code.client.codeapply.Apply410.utils.ConfigUtils;
import com.vci.rmip.code.client.codeapply.Apply410.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;
    private TokenUserObject tokenUserObject;
    public CodeReferTreePanel(UIFormRefer uiFormRefer ,TokenUserObject tokenUserObject) {
        this.uiFormRefer=uiFormRefer;
        this.tokenUserObject=tokenUserObject;
    }
 
    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);
                Map<String,String> headerMap=new HashMap<>();
                headerMap.put("Blade-Auth",this.tokenUserObject.getAccess_token());
 
                R r= HttpUtil.sendGet(url+"/defaultReferTree",condtionMap,headerMap);
                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;
    }
}