package com.vci.client.oq.ui.qtimport; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.SystemColor; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.util.ArrayList; import java.util.Enumeration; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.filechooser.FileFilter; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreePath; import com.vci.client.LogonApplication; import com.vci.client.oq.ui.export.QTExportBTMNode; import com.vci.client.oq.ui.export.QTExportQTNode; import com.vci.client.portal.UI.dialog.VCIGuideStepPanel; import com.vci.client.ui.swing.components.VCIJOptionPane; import com.vci.corba.omd.qtm.QTD; import com.vci.corba.omd.qtm.QTInfo; public class QTImpQTStep1Panel extends VCIGuideStepPanel{ private static final long serialVersionUID = 1L; private QTImportTree importTree ; private JTextField txtDirectory; private JButton btnSelDirectory; private String filePath = "c"+File.pathSeparator; private JScrollPane scrollPane = new JScrollPane(); public QTImpQTStep1Panel() { GridBagLayout gridBagLayout = new GridBagLayout(); gridBagLayout.columnWidths = new int[]{0, 0, 0, 0}; gridBagLayout.rowHeights = new int[]{0, 30, 0}; gridBagLayout.columnWeights = new double[]{0.0, 1.0, 0.0, Double.MIN_VALUE}; gridBagLayout.rowWeights = new double[]{1.0, 0.0, Double.MIN_VALUE}; setLayout(gridBagLayout); JLabel label_2 = new JLabel(" "); GridBagConstraints gbc_label_2 = new GridBagConstraints(); gbc_label_2.insets = new Insets(0, 0, 5, 5); gbc_label_2.gridx = 0; gbc_label_2.gridy = 0; add(label_2, gbc_label_2); // JScrollPane scrollPane = new JScrollPane(); GridBagConstraints gbc_scrollPane = new GridBagConstraints(); gbc_scrollPane.fill = GridBagConstraints.BOTH; gbc_scrollPane.insets = new Insets(0, 0, 5, 5); gbc_scrollPane.gridx = 1; gbc_scrollPane.gridy = 0; add(scrollPane, gbc_scrollPane); JLabel label = new JLabel(" "); GridBagConstraints gbc_label = new GridBagConstraints(); gbc_label.insets = new Insets(0, 0, 5, 0); gbc_label.gridx = 2; gbc_label.gridy = 0; add(label, gbc_label); JPanel panel = new JPanel(); GridBagConstraints gbc_panel = new GridBagConstraints(); gbc_panel.insets = new Insets(0, 0, 0, 5); gbc_panel.fill = GridBagConstraints.BOTH; gbc_panel.gridx = 1; gbc_panel.gridy = 1; add(panel, gbc_panel); GridBagLayout gbl_panel = new GridBagLayout(); gbl_panel.columnWidths = new int[]{0, 0, 0, 0}; gbl_panel.rowHeights = new int[]{0, 0}; gbl_panel.columnWeights = new double[]{0.0, 1.0, 0.0, Double.MIN_VALUE}; gbl_panel.rowWeights = new double[]{0.0, Double.MIN_VALUE}; panel.setLayout(gbl_panel); JLabel label_3 = new JLabel("导出文件:"); GridBagConstraints gbc_label_3 = new GridBagConstraints(); gbc_label_3.insets = new Insets(0, 0, 0, 5); gbc_label_3.anchor = GridBagConstraints.EAST; gbc_label_3.gridx = 0; gbc_label_3.gridy = 0; panel.add(label_3, gbc_label_3); txtDirectory = new JTextField(); txtDirectory.setForeground(SystemColor.controlText); txtDirectory.setText("请选择导入目录..."); txtDirectory.setEditable(false); txtDirectory.setBackground(SystemColor.control); GridBagConstraints gbc_txtDirectory = new GridBagConstraints(); gbc_txtDirectory.insets = new Insets(0, 0, 0, 5); gbc_txtDirectory.fill = GridBagConstraints.HORIZONTAL; gbc_txtDirectory.gridx = 1; gbc_txtDirectory.gridy = 0; panel.add(txtDirectory, gbc_txtDirectory); txtDirectory.setColumns(10); btnSelDirectory = new JButton("..."); btnSelDirectory.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { QTImpQTStep1Panel.this.selectDirectory(e); } }); GridBagConstraints gbc_btnSelDirectory = new GridBagConstraints(); gbc_btnSelDirectory.anchor = GridBagConstraints.EAST; gbc_btnSelDirectory.gridx = 2; gbc_btnSelDirectory.gridy = 0; panel.add(btnSelDirectory, gbc_btnSelDirectory); } /** * 选择目录 * @Title :selectDirectory * @Description : * @param e */ public void selectDirectory(ActionEvent e) { //TODO:给txtDirectory赋值 this.openFileChoser(); } @Override public void initUI() { //可不处理,默认加载即可 QTImportTree shareTreeData = (QTImportTree)getGuidCommonShareData().get("importTree"); if(shareTreeData!=null && shareTreeData instanceof QTImportTree){ /*shareTreeData = null; System.gc();*/ } if (shareTreeData == null || !(shareTreeData instanceof QTImportTree)) { importTree = new QTImportTree(); getGuidCommonShareData().put("importTree", importTree); // scrollPane.setViewportView(importTree); // exportTree.init(); } initData(); if(this.filePath!=null){ renderUIByObjectFile(filePath); } } private void renderUIByObjectFile(String filePath2) { // TODO Auto-generated method stub this.getGuidCommonShareData().put("filePath", filePath); //设置面板显示信息 //txtDirectory.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 12)); //txtDirectory.setForeground(Color.red); txtDirectory.setText(filePath); importTree = (QTImportTree) getGuidCommonShareData().get("importTree"); importTree.initTree(filePath); scrollPane.setViewportView(importTree); } public void setFilePath(String filePath){ this.filePath = filePath; } @Override //执行“导出”树的初始化,并添加到scrollPane中 public void initData() { // TODO:主要处理结构树的加载(包括树结构勾选逻辑) // 初始化树 } //面板初始化 private void openFileChoser() { JFileChooser jf = new JFileChooser(); jf.setFileSelectionMode(JFileChooser.FILES_ONLY); jf.removeChoosableFileFilter(jf.getFileFilter()); jf.setFileFilter(new FileFilter() { public String getDescription() { return "文件夹"; } public boolean accept(File f) { return (f.isDirectory() || f.getName().endsWith(".xls")); } }); jf.setDialogTitle("选择查询模板导出文件"); int showOpenDialog = jf.showOpenDialog(LogonApplication.frame); if (showOpenDialog == JFileChooser.APPROVE_OPTION) { File selectedFile = jf.getSelectedFile(); filePath = selectedFile.getAbsolutePath(); /*String path = selectedFile.getPath();*/ renderUIByObjectFile(filePath); } } @Override public String getStepName() { // String firstStepName = null; // if((firstStepName = (String)this.getCommonMap().get("firstStepName") )!= null){ // return firstStepName; // } return "第一步:查询模板选择"; } @Override public boolean isPreBtnVisible() { //第一步没有“上一步” return false; } @Override public String getPreBtnText() { return null; } @Override public boolean doPreBtnAction() { return false; } @Override public boolean isNextBtnVisible() { return true; } @Override public String getNextBtnText() { return "导入"; } /** * 导出的主要处理入口 */ @Override public boolean doNextBtnAction() { // 判断当前是否选择正确(如果没有正确选择到模板那么直接提示并终止下一步) try { if (importTree == null) { //TODO:提示 VCIJOptionPane.showMessage(this, "树不存在!"); return false; } TreePath[] treePath = ((QTImportTree) importTree) .getTreeManager().getSelectionModel() .getSelectionPaths(); Map allQTs = new HashMap(); if (treePath == null || treePath.length ==0) { //TODO:提示 VCIJOptionPane.showMessage(this, "您没有选择数据!"); return false; } else { List selectedQTs = new ArrayList(); // 判断selecPaths中是否存在查询模板,不存在也直接提示并退出 // TreePath[] treePath = ((QTImportTree) importTree) // .getTreeManager().getSelectionModel() // .getSelectionPaths(); // 循环填充列表数据 if (treePath != null) { try { int index = 1; for (int i = 0; i < treePath.length; i++) { DefaultMutableTreeNode node = (DefaultMutableTreeNode) treePath[i] .getLastPathComponent(); Object obj = node.getUserObject(); if (obj instanceof String) {// 如果是root节点,则保存所有模块 返回 String nodeName = (String) obj; if ("业务类型".equals(nodeName)) { /*QTInfo[] qts = QTClient.getService() .getAllQTS();*/ qtwrappers.clear(); List qts2 = getQtwrapper(node); QTExportQTNode[] qts = (QTExportQTNode[]) qts2.toArray(new QTExportQTNode[qts2.size()]); for (QTExportQTNode qtWrapper : qts) { Object obj2[] = { "", "", "", "" }; obj2[0] = index; obj2[1] = qtWrapper.getMessage(); obj2[2] = qtWrapper.getBean().qtName; obj2[3] = qtWrapper.getBean().btmName; /* tblModel.addRow(obj2); */ if(qtWrapper.getMessage().equals("【查询模板不存在,可导入】")){ obj2[1] = "【导入成功】"; allQTs.put(qtWrapper.getBean().qtName, qtWrapper.getBean()); } selectedQTs.add(obj2); index++; } } } if (obj instanceof QTExportQTNode) { // 递归所有父节点添加到exportBeans中 Object obj2[] = { "", "", "", "" }; obj2[0] = index; obj2[1] = ((QTExportQTNode) obj).getMessage(); obj2[2] = ((QTExportQTNode) obj).getBean().qtName; obj2[3] = ((QTExportQTNode) obj).getBean().btmName; /* tblModel.addRow(obj2); */ selectedQTs.add(obj2); if(((QTExportQTNode) obj).getMessage().equals("【查询模板不存在,可导入】")){ allQTs.put(((QTExportQTNode) obj).getBean().qtName, ((QTExportQTNode) obj).getBean()); } index++; // this.tableLog.addRow(bean.getLogRowObjcets()); } else if (obj instanceof QTExportBTMNode) { if(node.isLeaf()){ continue; } // QTInfo[] qtWrappers = QTClient.getService() // .getQTS(((QTExportBTMNode) obj) // .getBean().name); @SuppressWarnings("unchecked") Enumeration enumeration = node.children(); System.out.println(enumeration); while (enumeration.hasMoreElements()) { DefaultMutableTreeNode defaultMutableTreeNode = enumeration .nextElement(); Object obj2[] = { "", "", "", "" }; obj2[0] = index; obj2[1] = ((QTExportQTNode) (defaultMutableTreeNode .getUserObject())).getMessage(); obj2[2] = (((QTExportQTNode) (defaultMutableTreeNode .getUserObject())).getBean()).qtName; obj2[3] = (((QTExportQTNode) (defaultMutableTreeNode .getUserObject())).getBean()).btmName; selectedQTs.add(obj2); if(((QTExportQTNode)(defaultMutableTreeNode.getUserObject())).getMessage().equals("【查询模板不存在,可导入】")){ allQTs.put( (((QTExportQTNode) (defaultMutableTreeNode .getUserObject())) .getBean()).qtName, ((QTExportQTNode) (defaultMutableTreeNode .getUserObject())) .getBean()); } index++; } // for (QTInfo qtWrapper : qtWrappers) { // Object obj2[] = { "", "", "", "" }; // obj2[0] = index; // obj2[1] = "成功"; // obj2[2] = qtWrapper.qtName; // obj2[3] = qtWrapper.btmName; //// allQTs.put(qtWrapper.qtName, qtWrapper); // /* tblModel.addRow(obj2); */ // selectedQTs.add(obj2); // index++; // } } } } catch (Exception e) { e.printStackTrace(); } } if(selectedQTs.size()==0){ //TODO:提示 VCIJOptionPane.showMessage(this, "您没有选择查询模版!"); return false; } this.getGuidCommonShareData().put("selectedQTs",selectedQTs); this.getGuidCommonShareData().put("selectedQTDs",importTree.getNorepQTDs()); this.getGuidCommonShareData().put("importData", allQTs); //刷新导出数据 @SuppressWarnings("unchecked") Map norepQTDs = (Map)this.getGuidCommonShareData().get("selectedQTDs"); System.out.println(norepQTDs); } String exportFilePath = (String)this.getGuidCommonShareData().get("filePath"); if (exportFilePath == null || exportFilePath.trim().equals("")) { //TODO:提示 VCIJOptionPane.showMessage(this, "您没有选择导入目录!"); return false; } // QTExportData exportData = new QTExportData(); // exportData.setAllQTs(allQTs); /*if(!exportData.initData(this.getCommonMap())){ //TODO:提示 return false; }*/ VCIGuideStepPanel nextStepUI = getNextStepUI(); nextStepUI.initUI(); return true; } catch (Throwable e) { //TODO:提示 return false; } } List qtwrappers = new ArrayList(); //选择根节点时递归寻找查询模板对象 private List getQtwrapper(DefaultMutableTreeNode node) { // TODO Auto-generated method stub @SuppressWarnings("unchecked") Enumeration enumeration = node.children(); while(enumeration.hasMoreElements()){ DefaultMutableTreeNode defaultMutableTreeNode = enumeration.nextElement(); if(!defaultMutableTreeNode.isLeaf()){ getQtwrapper(defaultMutableTreeNode); }else{ qtwrappers.add((((QTExportQTNode)(defaultMutableTreeNode.getUserObject())))); } } return qtwrappers; } @Override public boolean isCancelBtnVisible() { return true; } @Override public String getcancelBtnText() { return "取消"; } String dialogProcess = ""; //[第X步/共X步] public String getDialogProcess() { dialogProcess = "[第1步/共2步]"; return dialogProcess; } public VCIGuideStepPanel getNextStepUI() { if (super.getNextStepUI() == null) { VCIGuideStepPanel nextStepUI = new QTImpQTStep2Panel(); nextStepUI.setPreStepUI(this); nextStepUI.setOwnParent(this.getOwnParent()); super.setNextStepUI(nextStepUI); } return super.getNextStepUI() ; } }