refactor(dialog): 优化 CreateTempDrawingDialog 类

- 移除了未使用的导入语句和注释掉的代码
- 添加了打印 rMap 集合的 printRMap 方法
- 修改了 LOV 值获取和处理逻辑
- 优化了异常处理- 调整了组件初始化和事件处理的实现
mian
熊朝柱 1 month ago
parent f2841be489
commit 82985f1ff1

@ -43,12 +43,6 @@ import com.teamcenter.rac.util.PropertyLayout;
import com.teamcenter.rac.util.UIUtilities;
import com.teamcenter.schemas.soa._2006_03.exceptions.ServiceException;
import com.teamcenter.services.rac.core.DataManagementService;
//导入类
//import com.teamcenter.services.rac.core.DataManagementService;
//import com.teamcenter.services.rac.core._2008_06.DataManagement.CreateIn;
//import com.teamcenter.services.rac.core._2008_06.DataManagement.CreateInput;
//import com.teamcenter.services.rac.core._2008_06.DataManagement.CreateOut;
//import com.teamcenter.services.rac.core._2008_06.DataManagement.CreateResponse;
import com.teamcenter.services.rac.core._2008_06.DataManagement.CreateIn;
import com.teamcenter.services.rac.core._2008_06.DataManagement.CreateInput;
import com.teamcenter.services.rac.core._2008_06.DataManagement.CreateOut;
@ -109,6 +103,18 @@ public class CreateTempDrawingDialog extends JFrame implements ActionListener{
*/
private static Map<String, Map<String, String>> rMap = new HashMap<String, Map<String,String>>();
public static void printRMap() {
System.out.println("begin 打印rMap集合");
for (Map.Entry<String, Map<String, String>> outerEntry : rMap.entrySet()) {
String key = outerEntry.getKey();
Map<String, String> innerMap = outerEntry.getValue();
System.out.println("Key: " + key);
for (Map.Entry<String, String> innerEntry : innerMap.entrySet()) {
System.out.println(">>> Inner Key: " + innerEntry.getKey() + ", Value: " + innerEntry.getValue());
}
}
}
/**
*
@ -136,7 +142,6 @@ public class CreateTempDrawingDialog extends JFrame implements ActionListener{
}
initUI();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
@ -435,28 +440,10 @@ public class CreateTempDrawingDialog extends JFrame implements ActionListener{
if (!setFormProperty(itemRev,formList)) {
System.out.println("表单属性设置失败!");
}
// itemRev.lock();
// try {
// itemRev.setStringProperty("sb6_ifls", "是");
// } catch (Exception e) {
// System.out.println("itemRev处理异常");
// e.printStackTrace();
// }finally {
// itemRev.save();
// itemRev.unlock();
// }
}
else if (obj instanceof TCComponentForm) {
form = (TCComponentForm) obj;
/*
* form.lock(); try { if (formList.size()>0) { System.out.println("开始处理表单数据");
* for (String[] forms : formList) { if (forms.length == 3) { String tNameString
* = forms[0]; String tValueString = forms[1]; String tTypeString = forms[2];
*
* setTCPropertyValue(form,tNameString,tValueString); } } } } catch (Exception
* e) { System.out.println("表单处理异常:"); e.printStackTrace(); }finally {
* form.save(); form.unlock(); }
*/
}
}
@ -547,7 +534,6 @@ public class CreateTempDrawingDialog extends JFrame implements ActionListener{
form.unlock();
}
} catch (TCException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
@ -611,7 +597,6 @@ public class CreateTempDrawingDialog extends JFrame implements ActionListener{
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@ -674,7 +659,6 @@ public class CreateTempDrawingDialog extends JFrame implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
Object s = e.getSource();
try {
if (s.equals(this.okButton)) {
@ -685,7 +669,6 @@ public class CreateTempDrawingDialog extends JFrame implements ActionListener{
try {
buildDrawingObjTypeFrame();
} catch (Exception e2) {
// TODO: handle exception
e2.printStackTrace();
}
@ -704,7 +687,6 @@ public class CreateTempDrawingDialog extends JFrame implements ActionListener{
try {
createItem();
} catch (Exception e2) {
// TODO: handle exception
e2.printStackTrace();
}
@ -715,7 +697,7 @@ public class CreateTempDrawingDialog extends JFrame implements ActionListener{
} catch (Exception e2) {
// TODO: handle exception
e2.printStackTrace();
}
@ -761,8 +743,17 @@ public class CreateTempDrawingDialog extends JFrame implements ActionListener{
return ((JTextField) component).getText();
} else if (component instanceof JComboBox) {
System.out.println("JComboBox");
JComboBox<String> comboBox = (JComboBox<String>) component;
return (String)comboBox.getSelectedItem();
String returnValue = null;
// JComboBox<String> comboBox = (JComboBox<String>) component;
// return (String)comboBox.getSelectedItem();
JTreeComboBox treeComboBox = (JTreeComboBox ) component;
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) treeComboBox.getSelectedItem();
if (selectedNode != null) {
Object userObject = selectedNode.getUserObject();
returnValue = userObject.toString();
}
return returnValue;
} else if (component instanceof DateButton) {
System.out.println("DateButton");
DateButton dateButton = (DateButton) component;
@ -808,10 +799,10 @@ public class CreateTempDrawingDialog extends JFrame implements ActionListener{
this.idTextField = new JTextField(idValue);
}
this.revLabel = new JLabel("版本");
// String[] revs = {"S01"};//版本下拉框数组
//参考编码器获取新的版本
String newRev = tccomponentitemtype.getNewRev(null);
String[] revs = {newRev};
String[] revs = {"DX01"};//版本下拉框数组
// //todo 参考编码器获取新的版本
// String newRev = tccomponentitemtype.getNewRev(null);
// String[] revs = {newRev};
this.revComboBox = new JComboBox<String>(revs);
// this.revComboBox.setEditable(true);
@ -937,7 +928,7 @@ public class CreateTempDrawingDialog extends JFrame implements ActionListener{
centerPanel1.add(dateButton, gbcPropCombo);
propComponentMap.put(validPropName, dateButton);
} else if (typeValue.equals("lov")) {
//TODO 根据冒号后面的LOV名称获取多个lov值封装成数组添加到propComboBox中
// 根据冒号后面的LOV名称获取多个lov值封装成数组添加到propComboBox中
if (lovName == null) {
System.out.println("未获取到属性["+name+"]配置的lov名称请检查配置!");
return null;
@ -945,6 +936,12 @@ public class CreateTempDrawingDialog extends JFrame implements ActionListener{
rMap.clear();
Map<String, String> lovMap = getLOVDisplay_value(tcSession, lovName);
System.out.println("开始打印第一层lov");
for (String displayValue : lovMap.keySet()){
System.out.println(" lovMap:"+displayValue+"--"+lovMap.get(displayValue));
}
printRMap();
String[] displayLovName = lovMap.keySet().toArray(new String[0]);//lov显示值
LovProperty lovProperty = new LovProperty();//自定义的lov类型的属性类
lovProperty.setPropName(name);
@ -955,7 +952,13 @@ public class CreateTempDrawingDialog extends JFrame implements ActionListener{
// JComboBox<String> propComboBox = new JComboBox<String>(displayLovName);
DefaultMutableTreeNode root = generateLovTreeNode(lovMap,rMap);
JTreeComboBox propComboBox = new JTreeComboBox(root);
JTreeComboBox propComboBox = null;
if(root != null) {
propComboBox = new JTreeComboBox(root);
}else {
System.out.println("绘制多层lov失败");
return null;
}
@ -1099,16 +1102,16 @@ public class CreateTempDrawingDialog extends JFrame implements ActionListener{
* TC LOV-
* @param seesion
* @param lovProp lov /
* @return
* @return lov<->
* @throws TCException
*/
public static Map<String, String> getLOVDisplay_value(TCSession seesion,String lovProp) throws TCException
{
System.out.println("getLOVDisplay_value方法入参lov名称="+lovProp);
Map<String, String> Display_values = new HashMap<String, String>();
TCComponentListOfValues unitLov = TCLOVUtil.findLOVByName(seesion, lovProp);
if(unitLov != null)
{
if(unitLov != null){
String[] realval = unitLov.getListOfValues().getStringListOfValues();
String value="";
@ -1120,8 +1123,13 @@ public class CreateTempDrawingDialog extends JFrame implements ActionListener{
Map<String, String> lovDisplay_value = getLOVDisplay_value(seesion, realval[i]);
}
}else {
System.out.println("未找到LOV名称=["+lovProp+"]的lov对象");
}
if (!Display_values.isEmpty()){
rMap.put(lovProp, Display_values);
}
return Display_values;
}

@ -0,0 +1,186 @@
package cn.net.connor.createTempDrawings.utils;
import javax.swing.*;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.plaf.basic.BasicComboBoxUI;
import javax.swing.plaf.basic.BasicComboPopup;
import javax.swing.plaf.basic.ComboPopup;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;
import java.awt.*;
import java.awt.event.*;
public class JTreeComboBox extends JComboBox<Object> {
private JTree tree;
private DefaultTreeModel treeModel;
private boolean suppressEvents = false;
public JTreeComboBox(DefaultMutableTreeNode root) {
System.out.println("JTreeComboBox构造函数被调用root是否为null: " + (root == null));
// 初始化树模型
treeModel = new DefaultTreeModel(root);
tree = new JTree(treeModel);
System.out.println("树对象已初始化: " + (tree != null));
// 设置自定义UI
setUI(new TreeComboBoxUI());
System.out.println("自定义UI已设置");
// 设置树属性
tree.setRootVisible(true);
tree.setShowsRootHandles(true);
tree.setCellRenderer(new TreeCellRenderer());
// 添加选择监听器
tree.getSelectionModel().addTreeSelectionListener(new TreeSelectionListener() {
@Override
public void valueChanged(TreeSelectionEvent e) {
if (!suppressEvents) {
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
if (selectedNode != null) {
setSelectedItem(selectedNode);
hidePopup();
}
}
}
});
// 处理鼠标点击事件
tree.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
TreePath path = tree.getPathForLocation(e.getX(), e.getY());
if (path != null) {
tree.setSelectionPath(path);
DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent();
if (node != null) {
if (tree.isExpanded(path)) {
tree.collapsePath(path);
} else {
tree.expandPath(path);
}
}
}
}
});
// 处理键盘事件
tree.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_SPACE || e.getKeyCode() == KeyEvent.VK_ENTER) {
TreePath selectionPath = tree.getSelectionPath();
if (selectionPath != null) {
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) selectionPath.getLastPathComponent();
if (selectedNode != null) {
setSelectedItem(selectedNode);
hidePopup();
e.consume();
}
}
} else if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
hidePopup();
e.consume();
}
}
});
// 初始选择根节点
setSelectedItem(root);
System.out.println("JTreeComboBox初始化完成");
}
@Override
public void setSelectedItem(Object anObject) {
suppressEvents = true;
super.setSelectedItem(anObject);
suppressEvents = false;
// 更新树的选择状态
if (anObject instanceof DefaultMutableTreeNode) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) anObject;
TreePath path = new TreePath(node.getPath());
tree.setSelectionPath(path);
}
}
public JTree getTree() {
return tree;
}
private class TreeComboBoxUI extends BasicComboBoxUI {
@Override
protected ComboPopup createPopup() {
System.out.println("创建弹出框树对象是否为null: " + (tree == null));
return new TreeComboPopup(comboBox, tree);
}
@Override
protected ListCellRenderer<Object> createRenderer() {
return new ListCellRenderer<Object>() {
private final DefaultListCellRenderer renderer = new DefaultListCellRenderer();
@Override
public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
if (value instanceof DefaultMutableTreeNode) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
value = node.getUserObject();
}
return renderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
}
};
}
}
private static class TreeComboPopup extends BasicComboPopup {
private JTree tree;
public TreeComboPopup(JComboBox<?> comboBox, JTree tree) {
super(comboBox);
this.tree = tree;
System.out.println("TreeComboPopup构造函数被调用树对象是否为null: " + (tree == null));
removeAll();
setLayout(new BorderLayout());
// 添加滚动面板包含树
JScrollPane scrollPane = new JScrollPane(tree);
scrollPane.setBorder(null);
add(scrollPane, BorderLayout.CENTER);
// 设置弹出框大小
Dimension preferredSize = tree.getPreferredSize();
preferredSize.width = Math.max(preferredSize.width, comboBox.getWidth());
preferredSize.height = Math.min(preferredSize.height, 200);
setPreferredSize(preferredSize);
}
@Override
protected void configureList() {
// 不使用默认的列表
}
@Override
public void show() {
super.show();
// 展开根节点
tree.expandPath(new TreePath(((DefaultMutableTreeNode) tree.getModel().getRoot()).getPath()));
}
}
private static class TreeCellRenderer extends DefaultTreeCellRenderer {
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
if (value instanceof DefaultMutableTreeNode) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
value = node.getUserObject();
}
return super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
}
}
}
Loading…
Cancel
Save