package com.vci.client.oq.ui.export; import java.awt.Color; import java.awt.Font; 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.common.providers.ServiceProvider; import com.vci.client.omd.btm.ui.BtmClient; import com.vci.client.oq.QTClient; import com.vci.client.oq.QTDClient; import com.vci.client.portal.UI.dialog.VCIGuideStepPanel; import com.vci.client.ui.swing.components.VCIJOptionPane; import com.vci.corba.omd.qtm.QTInfo; /** * Action导出步骤1界面 * @Title :ExpActionStep1Panel.java * @Description : * @Copyright :宏博远达科技有限公司 * @Author :平台与规划部/ZhongGY/E-mail:zhonggy@vci-tech.com * @Date :2015-6-5 * @Version :1 * @Other :产生注释:Alt+Shift+J */ public class QTExpQTStep1Panel extends VCIGuideStepPanel { private static final long serialVersionUID = 1L; private QTExportTree exportTree ; private JTextField txtDirectory; private JButton btnSelDirectory; private String exportFilePath = "c"+File.pathSeparator; private JScrollPane scrollPane = new JScrollPane(); public QTExpQTStep1Panel() { 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(Color.BLACK); 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) { QTExpQTStep1Panel.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(); } public Map getCommonMap(){ return this.getGuidCommonShareData(); } @Override public void initUI() { Object shareTreeData = getCommonMap().get("exportTree"); if(shareTreeData!=null){ shareTreeData = null; } if (shareTreeData == null || !(shareTreeData instanceof QTExportTree)) { exportTree = new QTExportTree(); getCommonMap().put("exportTree", exportTree); scrollPane.setViewportView(exportTree); exportTree.init(); } initData(); } @Override //执行“导出”树的初始化,并添加到scrollPane中 public void initData() { } private void openFileChoser() { JFileChooser jf = new JFileChooser(); jf.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); jf.removeChoosableFileFilter(jf.getFileFilter()); jf.setFileFilter(new FileFilter() { public String getDescription() { return "文件夹"; } public boolean accept(File f) { return (f.isDirectory()); } }); jf.setDialogTitle("选择导出目录"); int showOpenDialog = jf.showOpenDialog(LogonApplication.frame); if (showOpenDialog == JFileChooser.APPROVE_OPTION) { File selectedFile = jf.getSelectedFile(); exportFilePath = selectedFile.getAbsolutePath(); this.getCommonMap().put("exportFilePath", exportFilePath); txtDirectory.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 12)); txtDirectory.setForeground(Color.black); txtDirectory.setText(exportFilePath); } } @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 (exportTree == null) { //TODO:提示 VCIJOptionPane.showMessage(this, "树不存在!"); return false; } TreePath[] selecPaths = exportTree.getSelectionPaths(); Map allQTs = new HashMap(); if (selecPaths == null || selecPaths.length ==0) { //TODO:提示 VCIJOptionPane.showMessage(this, "您没有选择数据!"); return false; } else { List selectedQTs = new ArrayList(); // 判断selecPaths中是否存在查询模板,不存在也直接提示并退出 TreePath[] treePath = ((QTExportTree) exportTree) .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 = ServiceProvider.getOMDService().getQTDService().getAllQTs(); List list = new ArrayList(); for (QTInfo qtWrapper : qts) { if (!BtmClient.getService().getBtmItemByName(qtWrapper.btmName).oid.equals("")) { list.add(qtWrapper); } ; } qts = list.toArray(new QTInfo[list.size()]); for (QTInfo qtWrapper : qts) { Object obj2[] = { "", "", "", "" }; obj2[0] = index; obj2[1] = "成功"; obj2[2] = qtWrapper.qtName; obj2[3] = qtWrapper.btmName; /* tblModel.addRow(obj2); */ selectedQTs.add(obj2); allQTs.put(qtWrapper.qtName, qtWrapper); index++; } } } if (obj instanceof QTExportQTNode) { // 递归所有父节点添加到exportBeans中 Object obj2[] = { "", "", "", "" }; obj2[0] = index; obj2[1] = "成功"; obj2[2] = ((QTExportQTNode) obj).getBean().qtName; obj2[3] = ((QTExportQTNode) obj).getBean().btmName; /* tblModel.addRow(obj2); */ selectedQTs.add(obj2); allQTs.put(((QTExportQTNode) obj).getBean().qtName, ((QTExportQTNode) obj).getBean()); index++; // this.tableLog.addRow(bean.getLogRowObjcets()); } else if (obj instanceof QTExportBTMNode) { if(node.isLeaf()){ continue; } qtwrappers.clear(); List qts2 = getQtwrapper(node); QTExportQTNode[] qts = (QTExportQTNode[]) qts2.toArray(new QTExportQTNode[qts2.size()]); /*QTInfo[] qtWrappers = QTClient.getService() .getQTS(((QTExportBTMNode) obj) .getBean().name);*/ /*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++; }*/ for (QTExportQTNode qtWrapper : qts) { Object obj2[] = { "", "", "", "" }; obj2[0] = index; obj2[1] = "成功"; obj2[2] = qtWrapper.getBean().qtName; obj2[3] = qtWrapper.getBean().btmName; allQTs.put(qtWrapper.getBean().qtName, qtWrapper.getBean()); /*tblModel.addRow(obj2);*/ selectedQTs.add(obj2); index++; } } } } catch (Exception e) { e.printStackTrace(); } } if(selectedQTs.size()==0){ //TODO:提示 VCIJOptionPane.showMessage(this, "您没有选择查询模版!"); return false; } this.getCommonMap().put("selectedQTs",selectedQTs); } String exportFilePath = (String)this.getCommonMap().get("exportFilePath"); 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; }*/ this.getCommonMap().put("exportData", exportData); //刷新导出数据 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 QTExpQTStep2Panel(); nextStepUI.setPreStepUI(this); nextStepUI.setOwnParent(this.getOwnParent()); super.setNextStepUI(nextStepUI); } return super.getNextStepUI() ; } }