package com.vci.client.omd.btm.ui; import java.util.List; import java.util.ArrayList; import java.util.Arrays; import java.awt.BorderLayout; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.border.EmptyBorder; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreePath; import javax.swing.JTree; import com.vci.client.LogonApplication; import com.vci.client.omd.provider.BtmProvider; import com.vci.client.ui.swing.VCIOptionPane; import com.vci.client.ui.tree.VCIBaseTreeModel; import com.vci.client.ui.tree.VCIBaseTreeNode; import com.vci.corba.common.VCIError; import com.vci.corba.omd.atm.AttribItem; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; @SuppressWarnings("serial") public class AttrTreeDialog extends JDialog { private final JPanel contentPanel = new JPanel(); private JButton okButton; private JButton cancelButton; /** * 业务对象名称 */ private String btName; /** * 属性树 */ private JTree tree; private List selectAttribItems = new ArrayList(); public AttribItem[] getSelectAttribItems() { return selectAttribItems.toArray(new AttribItem[0]); } public void setSelectAttribItem(AttribItem[] attribItems) { this.selectAttribItems = Arrays.asList(attribItems); } /** * 属性树 * @param selectTreeNodeobject TODO */ public AttrTreeDialog(String btName, Object selectTreeNodeobject) { super(LogonApplication.frame,true); this.btName = btName; initContent(); this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); this.setLocationRelativeTo(null); this.setVisible(true); } private void initContent() { setBounds(100, 100, 374, 593); getContentPane().setLayout(new BorderLayout()); contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); getContentPane().add(contentPanel, BorderLayout.CENTER); contentPanel.setLayout(new BorderLayout(0, 0)); { JScrollPane js = new JScrollPane(); tree = new JTree(); try { tree.setModel(createTreeModel()); } catch (VCIError e) { e.printStackTrace(); } contentPanel.setLayout(new BorderLayout()); js.setViewportView(tree); contentPanel.add(js, BorderLayout.CENTER); } { JPanel buttonPane = new JPanel(); buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT)); getContentPane().add(buttonPane, BorderLayout.SOUTH); { okButton = new JButton("确定"); buttonPane.add(okButton); } { cancelButton = new JButton("取消"); buttonPane.add(cancelButton); } } initActionListener(); } private void initActionListener() { okButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (tree.getSelectionCount() == 0) { VCIOptionPane.showMessage(LogonApplication.frame, "请选择属性节点"); return; } for (TreePath tp : tree.getSelectionPaths()) { VCIBaseTreeNode node = (VCIBaseTreeNode) tp.getLastPathComponent(); Object obj = node.getObj(); // if(obj instanceof String){ // if(String.valueOf(obj).equals("root")){ // VCIOptionPane.showMessage(LogonApplication.frame, "请选择属性节点"); // return; // }else{ // selectAttribItems.add(new AttribItem() {name=(String)obj}); // } // } if(obj instanceof AttribItem){ selectAttribItems.add((AttribItem) obj); } } // VCIBaseTreeNode lastSelectedPathComponent = (VCIBaseTreeNode) tree.getLastSelectedPathComponent(); // if(lastSelectedPathComponent==null){ // VCIOptionPane.showMessage(LogonApplication.frame, "请选择属性节点"); // return; // } // Object obj = lastSelectedPathComponent.getObj(); // if(obj instanceof String){ // if(String.valueOf(obj).equals("root")){ // VCIOptionPane.showMessage(LogonApplication.frame, "请选择属性节点"); // return; // }else{ // selectAttribItems.clear(); // } // } // if(obj instanceof AttribItem){ // selectAttribItems.add((AttribItem) obj); // } dispose(); } }); cancelButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { selectAttribItems.clear(); dispose(); } }); } private DefaultTreeModel createTreeModel() throws VCIError { AttribItem[] btAbItems = BtmProvider.getInstance().getBtAbItems(btName); String[] sysAbItems = BtmProvider.getInstance().getSysAttributes(); VCIBaseTreeNode rootNode = new VCIBaseTreeNode("属性信息","root"); VCIBaseTreeModel treeModel = new VCIBaseTreeModel(rootNode); for(int i=0;i