package com.vci.client.oq.ui;
|
|
import java.awt.BorderLayout;
|
import java.awt.Color;
|
import java.awt.Dialog;
|
import java.awt.Dimension;
|
import java.awt.FlowLayout;
|
import java.awt.GridBagConstraints;
|
import java.awt.GridBagLayout;
|
import java.awt.Toolkit;
|
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionListener;
|
import java.awt.event.ItemEvent;
|
import java.awt.event.ItemListener;
|
import java.io.File;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
import javax.swing.BorderFactory;
|
import javax.swing.ButtonGroup;
|
import javax.swing.JButton;
|
import javax.swing.JCheckBox;
|
import javax.swing.JComboBox;
|
import javax.swing.JFileChooser;
|
import javax.swing.JLabel;
|
import javax.swing.JOptionPane;
|
import javax.swing.JPanel;
|
import javax.swing.JRadioButton;
|
import javax.swing.JScrollPane;
|
import javax.swing.JSplitPane;
|
import javax.swing.JTextField;
|
import javax.swing.event.ListSelectionEvent;
|
import javax.swing.event.ListSelectionListener;
|
import javax.swing.event.TreeSelectionEvent;
|
import javax.swing.event.TreeSelectionListener;
|
import javax.swing.filechooser.FileFilter;
|
import javax.swing.table.JTableHeader;
|
import javax.swing.table.TableColumn;
|
import javax.swing.tree.DefaultMutableTreeNode;
|
import javax.swing.tree.DefaultTreeModel;
|
import javax.swing.tree.TreeNode;
|
import javax.swing.tree.TreePath;
|
|
import org.dom4j.Document;
|
import org.dom4j.DocumentException;
|
import org.dom4j.DocumentHelper;
|
import org.jdesktop.swingx.JXTable;
|
import org.jdesktop.swingx.decorator.HighlighterFactory;
|
|
import com.vci.corba.omd.ltm.LinkType;
|
import com.vci.corba.omd.qtm.QTInfo;
|
import com.vci.client.LogonApplication;
|
import com.vci.client.common.oq.OQTool;
|
import com.vci.client.omd.linktype.LinkTypeStart;
|
import com.vci.client.omd.linktype.LinkTypeTree;
|
import com.vci.client.omd.linktype.LinkTypeWrapper;
|
import com.vci.client.oq.QTClient;
|
import com.vci.client.oq.QTDClient;
|
import com.vci.client.oq.ui.linkqtexport.LinkQTExpQTStep1Panel;
|
import com.vci.client.oq.ui.linkqtimport.LinkQTImpQTStep1Panel;
|
import com.vci.client.oq.wrapper.QTWrapper_;
|
import com.vci.client.portal.UI.dialog.VCICommonGuideDialog;
|
import com.vci.client.ui.swing.VCIOptionPane;
|
import com.vci.client.ui.table.CheckBoxEditor;
|
import com.vci.client.ui.table.CheckBoxRenderer;
|
import com.vci.client.ui.util.PostorderEnumeration;
|
import com.vci.common.qt.object.OrderInfo;
|
import com.vci.common.qt.object.QTConstants;
|
import com.vci.common.qt.object.QueryTemplate;
|
import com.vci.corba.common.VCIError;
|
|
public class QTPanelForLink extends JPanel{
|
|
/**
|
*
|
*/
|
private static final long serialVersionUID = -5604511526824134217L;
|
private static QTPanelForLink qtPanelForLink = null;
|
/**
|
* add by caill
|
* 添加定位框和定位按钮,并添加left 和leftTopPanel容器
|
* */
|
private JTextField textField=new JTextField(20);
|
private JButton sel=new JButton("定位");
|
private JPanel left=new JPanel();
|
private JPanel leftTopPanel=new JPanel();
|
|
private JPanel northPanel;
|
private JButton btnSave, btnDelete;
|
private JSplitPane centerPanel;
|
private JPanel cp_treePanel, cp_mainPanel;
|
private static LinkTypeTree linkTypeTree;
|
private JPanel cpm_southPanel;
|
private ConditionPanelForLink cpm_centerPanel;
|
private JXTable qtTable;
|
private TableModelWithCheckBox tableModel;
|
private final int TABLE_HEADER_HEIGHT = 25;
|
private final int ROW_HEIGHT = 30;
|
private JScrollPane scrollPane;
|
private static LinkType selectedLinkType = null;
|
private JPanel cpm_northPanel;
|
private JComboBox combRelaType, combVersion;
|
private JRadioButton rdPositive, rdOpposite;
|
private ButtonGroup directionGroup;
|
private JTextField tfLevel;
|
private JComboBox orderInfoComb;
|
private JButton orderSetBtn;
|
private List<OrderInfo> tempOrderInfoList = null;
|
private JCheckBox isLeafQueryCheck;
|
//add by guo
|
private JButton selectNode;
|
private String selectedObjectName;
|
private int type1;
|
private boolean isDialog = false;
|
private static Dialog parentDialog;
|
|
public static void setParentDialog(Dialog parentDialog) {
|
QTPanelForLink.parentDialog = parentDialog;
|
}
|
|
public String getSelectedObjectName() {
|
return selectedObjectName;
|
}
|
|
public void setSelectedObjectName(String selectedObjectName) {
|
this.selectedObjectName = selectedObjectName;
|
}
|
private static final String All_TYPE = "所有类型";
|
private static final String[] tableHeader = {"", "查询方案", "创建人", "创建时间"};
|
private QTPanelForLink(){
|
initUI();
|
selectNode.setVisible(false);
|
updateCombRelaType();
|
updateCombVersion();
|
addListener();
|
initQTTable();
|
initOrderInfoComb(null);
|
}
|
|
static void initVars(){
|
qtPanelForLink = null;
|
linkTypeTree = null;
|
selectedLinkType = null;
|
parentDialog = null;
|
}
|
|
public static void cleanInstance(){
|
initVars();
|
qtPanelForLink = null;
|
}
|
|
public static QTPanelForLink getInstance(){
|
if(qtPanelForLink == null){
|
qtPanelForLink = new QTPanelForLink();
|
}
|
linkTypeTree.initOrUpdate();
|
qtPanelForLink.updateUI();
|
return qtPanelForLink;
|
}
|
//add by guo
|
private QTPanelForLink(LinkType selectedLinkType){
|
initUI();
|
updateCombRelaType();
|
updateCombVersion();
|
addListener();
|
initQTTable();
|
initOrderInfoComb(null);
|
}
|
public static QTPanelForLink getInstance(Object selectNodeObject, boolean isDialog, Dialog parentDialog, int type1) {
|
if (qtPanelForLink == null) {
|
try {
|
LinkType treeNode = LinkTypeStart.getService().getLinkType(selectNodeObject.toString());
|
selectedLinkType = treeNode;
|
} catch (VCIError e) {
|
e.printStackTrace();
|
}
|
qtPanelForLink = new QTPanelForLink(selectedLinkType);
|
}
|
DefaultMutableTreeNode tree = (DefaultMutableTreeNode)linkTypeTree.getModel().getRoot();
|
int length = tree.getChildCount();
|
for (int i = 0; i < length; ++i) {
|
DefaultMutableTreeNode element = (DefaultMutableTreeNode)tree.getChildAt(i);
|
if (selectNodeObject.toString().equals(element.toString())) {
|
TreeNode[] path = element.getPath();
|
TreePath treepath = new TreePath(path);
|
linkTypeTree.setSelectionPath(treepath);
|
break;
|
}
|
}
|
setParentDialog(parentDialog);
|
qtPanelForLink.updateUI();
|
return qtPanelForLink;
|
}
|
|
private void initUI(){
|
this.setBackground(Color.WHITE);
|
this.setLayout(new BorderLayout(0, 0));
|
northPanel = new JPanel();
|
this.add(northPanel, BorderLayout.NORTH);
|
cp_treePanel = new JPanel();
|
cp_mainPanel = new JPanel();
|
//add by caill
|
//为链接类型树添加公用定位框和定位按钮,并添加left和leftTopPanel容器
|
//搜索框的设置
|
GridBagConstraints gbc = new GridBagConstraints();
|
gbc.gridx = 0;
|
gbc.gridy = 0;
|
gbc.weightx = 0.7;
|
gbc.weighty = 0;
|
gbc.fill = GridBagConstraints.HORIZONTAL;
|
leftTopPanel.setLayout(new GridBagLayout());
|
leftTopPanel.add(textField,gbc);
|
leftTopPanel.add(sel);
|
left.setLayout(new BorderLayout());
|
left.add(leftTopPanel,BorderLayout.NORTH);
|
left.add(new JScrollPane(cp_treePanel),BorderLayout.CENTER);
|
centerPanel = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, left, cp_mainPanel);
|
//add by caill end
|
//centerPanel = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, new JScrollPane(cp_treePanel), cp_mainPanel);
|
centerPanel.setDividerLocation(Toolkit.getDefaultToolkit().getScreenSize().width/5);
|
centerPanel.setOneTouchExpandable(true);
|
this.add(centerPanel, BorderLayout.CENTER);
|
//add by caill start
|
//为定位按钮增添点击事件
|
sel.addActionListener(new ActionListener() {
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
//e.getSource();
|
String test = textField.getText().trim();
|
DefaultTreeModel model = (DefaultTreeModel)linkTypeTree.getModel();
|
//model.reload();
|
TreeNode root = (TreeNode) model.getRoot();
|
PostorderEnumeration enumeration = new PostorderEnumeration(
|
root);
|
while (enumeration.hasMoreElements()) {
|
DefaultMutableTreeNode element = (DefaultMutableTreeNode) enumeration
|
.nextElement();
|
if (element.getUserObject() instanceof LinkTypeWrapper) {
|
LinkTypeWrapper wrapper = (LinkTypeWrapper) element
|
.getUserObject();
|
|
if (wrapper != null && wrapper.linkType!=null
|
&& wrapper.linkType.name.equals(test)) {
|
TreeNode[] path = element.getPath();
|
TreePath treePath = new TreePath(path);
|
linkTypeTree.setSelectionPath(treePath);
|
return;
|
}
|
;
|
}
|
}
|
if (test.equals("")) {
|
JOptionPane.showMessageDialog(
|
com.vci.client.LogonApplication.frame,
|
"请输入链接类型", "提示", JOptionPane.INFORMATION_MESSAGE);
|
} else {
|
JOptionPane.showMessageDialog(
|
com.vci.client.LogonApplication.frame,
|
"{ " + test + " }链接类型不存在", "提示",
|
JOptionPane.INFORMATION_MESSAGE);
|
}
|
}
|
|
});
|
//为定位框增加键盘事件
|
textField.addActionListener(new ActionListener() {
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
|
JTextField text = (JTextField) e.getSource();
|
String test = text.getText().trim();
|
DefaultTreeModel model = (DefaultTreeModel)linkTypeTree.getModel();
|
//model.reload();
|
TreeNode root = (TreeNode) model.getRoot();
|
PostorderEnumeration enumeration = new PostorderEnumeration(
|
root);
|
while (enumeration.hasMoreElements()) {
|
DefaultMutableTreeNode element = (DefaultMutableTreeNode) enumeration
|
.nextElement();
|
if (element.getUserObject() instanceof LinkTypeWrapper) {
|
LinkTypeWrapper wrapper = (LinkTypeWrapper) element
|
.getUserObject();
|
|
if (wrapper != null && wrapper.linkType!=null
|
&& wrapper.linkType.name.equals(test)) {
|
TreeNode[] path = element.getPath();
|
TreePath treePath = new TreePath(path);
|
linkTypeTree.setSelectionPath(treePath);
|
return;
|
}
|
;
|
}
|
}
|
if (test.equals("")) {
|
JOptionPane.showMessageDialog(
|
com.vci.client.LogonApplication.frame,
|
"请输入链接类型", "提示", JOptionPane.INFORMATION_MESSAGE);
|
} else {
|
JOptionPane.showMessageDialog(
|
com.vci.client.LogonApplication.frame,
|
"{ " + test + " }链接类型不存在", "提示",
|
JOptionPane.INFORMATION_MESSAGE);
|
}
|
|
|
}
|
|
});
|
//add by caill end
|
btnSave = new JButton("保存");
|
btnDelete = new JButton("删除");
|
selectNode = new JButton("选择");
|
JButton expBtn = new JButton("导出");
|
expBtn.addActionListener(new ActionListener() {
|
private VCICommonGuideDialog dialog = null;
|
public void actionPerformed(ActionEvent e) {
|
//MOdify by ZhongGY,直接利用公共向导执行Action导出(测试向导窗口)
|
if (dialog == null) {
|
dialog = new VCICommonGuideDialog("选择链接类型查询模板导出文件",-1,-1);
|
LinkQTExpQTStep1Panel step1Panel = new LinkQTExpQTStep1Panel();
|
dialog.addStepUI(step1Panel);
|
}
|
dialog.setVisible(true);
|
}
|
});
|
JButton impBtn = new JButton("导入");
|
impBtn.addActionListener(new ActionListener() {
|
private VCICommonGuideDialog dialog = null;
|
private LinkQTImpQTStep1Panel step1Panel = null;
|
public void actionPerformed(ActionEvent e) {
|
//MOdify by ZhongGY,直接利用公共向导执行Action导出(测试向导窗口)
|
if (dialog == null) {
|
dialog = new VCICommonGuideDialog("链接类型查询模板导入",-1,-1);
|
step1Panel = new LinkQTImpQTStep1Panel();
|
dialog.addStepUI(step1Panel);
|
}
|
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(".vciqtf"));
|
}
|
});
|
jf.setDialogTitle("选择查询模板导出文件");
|
int showOpenDialog = jf.showOpenDialog(LogonApplication.frame);
|
|
if (showOpenDialog == JFileChooser.CANCEL_OPTION) {
|
return;
|
}
|
if (showOpenDialog == JFileChooser.APPROVE_OPTION) {
|
File selectedFile = jf.getSelectedFile();
|
String filePath = selectedFile.getAbsolutePath();
|
step1Panel.setFilePath(filePath);
|
|
}
|
dialog.setVisible(true);
|
}
|
});
|
northPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
|
northPanel.add(btnSave);
|
northPanel.add(btnDelete);
|
northPanel.add(selectNode);
|
northPanel.add(expBtn);
|
northPanel.add(impBtn);
|
|
//设置cp_treePanel
|
cp_treePanel.setLayout(new GridBagLayout());
|
GridBagConstraints g = new GridBagConstraints();
|
g.gridx = 0;
|
g.gridy = 0;
|
g.weightx = 1.0;
|
g.weighty = 1.0;
|
g.fill = GridBagConstraints.BOTH;
|
linkTypeTree = new LinkTypeTree();
|
cp_treePanel.add(linkTypeTree, g);
|
|
cp_mainPanel.setLayout(new BorderLayout());
|
cpm_northPanel = new JPanel();
|
cpm_northPanel.setBorder(BorderFactory.createTitledBorder("基本设置"));
|
cpm_northPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
|
cp_mainPanel.add(new JScrollPane(cpm_northPanel), BorderLayout.NORTH);
|
rdPositive = new JRadioButton("正向");
|
rdOpposite = new JRadioButton("反向");
|
rdPositive.setSelected(true);
|
directionGroup = new ButtonGroup();
|
directionGroup.add(rdPositive);
|
directionGroup.add(rdOpposite);
|
cpm_northPanel.add(new JLabel("方向:"));
|
cpm_northPanel.add(rdPositive);
|
cpm_northPanel.add(rdOpposite);
|
cpm_northPanel.add(new JLabel(" "));
|
cpm_northPanel.add(new JLabel("业务类型:"));
|
combRelaType = new JComboBox();
|
combRelaType.addItem("所有类型");
|
combRelaType.addItem("btma");
|
combRelaType.addItem("btmb");
|
combRelaType.setPreferredSize(new Dimension(150, 23));
|
cpm_northPanel.add(combRelaType);
|
cpm_northPanel.add(new JLabel(" "));
|
cpm_northPanel.add(new JLabel("版本版次:"));
|
combVersion = new JComboBox();
|
combVersion.setPreferredSize(new Dimension(150, 23));
|
cpm_northPanel.add(combVersion);
|
isLeafQueryCheck = new JCheckBox("查询是否有下级");
|
cpm_northPanel.add(new JLabel(" "));
|
cpm_northPanel.add(isLeafQueryCheck);
|
cpm_northPanel.add(new JLabel(" "));
|
cpm_northPanel.add(new JLabel("子节点层次数:"));
|
tfLevel = new JTextField(5);
|
cpm_northPanel.add(tfLevel);
|
cpm_northPanel.add(new JLabel("已有排序"));
|
orderInfoComb = new JComboBox();
|
orderInfoComb.setPreferredSize(new Dimension(200, 23));
|
cpm_northPanel.add(orderInfoComb);
|
orderSetBtn = new JButton("设置排序");
|
cpm_northPanel.add(orderSetBtn);
|
|
cpm_southPanel = new JPanel();
|
|
String ltName = null;
|
if(selectedLinkType != null){
|
ltName = selectedLinkType.name;
|
}
|
cpm_centerPanel = new ConditionPanelForLink(ltName, getSelectedBtm(), getDirection());
|
//TODO NORTH <----> CENTER
|
JSplitPane splitP = new JSplitPane(JSplitPane.VERTICAL_SPLIT, cpm_centerPanel, cpm_southPanel);
|
splitP.setDividerLocation(Toolkit.getDefaultToolkit().getScreenSize().height / 3);
|
splitP.setOneTouchExpandable(true);
|
cp_mainPanel.add(splitP, BorderLayout.CENTER);
|
|
cpm_southPanel.setBorder(BorderFactory.createTitledBorder("查询模板列表"));
|
cpm_southPanel.setAutoscrolls(true);
|
cpm_southPanel.setLayout(new BorderLayout(5, 5));
|
scrollPane = new JScrollPane();
|
cpm_southPanel.add(scrollPane, BorderLayout.CENTER);
|
tableModel = new TableModelWithCheckBox(tableHeader);
|
qtTable = new JXTable(tableModel);
|
TableColumn column = qtTable.getColumn(0);
|
column.setCellEditor(new CheckBoxEditor(new JCheckBox()));
|
column.setCellRenderer(new CheckBoxRenderer());
|
column.setMaxWidth(30);
|
column.setMinWidth(30);
|
|
qtTable.setRowHeight(ROW_HEIGHT);
|
qtTable.setHorizontalScrollEnabled(true);
|
qtTable.setHighlighters(HighlighterFactory.createAlternateStriping());
|
//排序后,引起其他页面的数据不显示
|
qtTable.setSortable(true);
|
//设置表头高度
|
JTableHeader tableHeader = qtTable.getTableHeader();
|
Dimension size = tableHeader.getPreferredSize();
|
size.height = TABLE_HEADER_HEIGHT;
|
tableHeader.setPreferredSize(size);
|
scrollPane.setViewportView(qtTable);
|
}
|
|
private void addListener(){
|
rdPositive.addItemListener(new ItemListener() {
|
|
@Override
|
public void itemStateChanged(ItemEvent e) {
|
updateCombRelaType();
|
updateCombVersion();
|
}
|
});
|
rdOpposite.addItemListener(new ItemListener() {
|
|
@Override
|
public void itemStateChanged(ItemEvent e) {
|
updateCombRelaType();
|
updateCombVersion();
|
}
|
});
|
linkTypeTree.getSelectionModel().addTreeSelectionListener(new TreeSelectionListener() {
|
@Override
|
public void valueChanged(TreeSelectionEvent e) {
|
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) linkTypeTree.getLastSelectedPathComponent();
|
if(selectedNode == null){
|
selectedLinkType = null;
|
}
|
if(selectedNode.getUserObject() instanceof LinkTypeWrapper){
|
selectedLinkType = ((LinkTypeWrapper)selectedNode.getUserObject()).linkType;
|
}else{
|
selectedLinkType = null;
|
}
|
initQTTable();
|
updateCombRelaType();
|
initOrderInfoComb(null);
|
}
|
});
|
|
combRelaType.addItemListener(new ItemListener() {
|
|
@Override
|
public void itemStateChanged(ItemEvent e) {
|
if(combRelaType.getItemCount() > 0){
|
cpm_centerPanel.updateUI(selectedLinkType.name, getSelectedBtm(), getDirection());
|
}
|
}
|
});
|
|
//保存查询模板
|
btnSave.addActionListener(new ActionListener() {
|
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
if(selectedLinkType == null){
|
JOptionPane.showMessageDialog(northPanel, "请选择业务类型和查询模板定义来创建查询模板", "请选择业务类型", JOptionPane.ERROR_MESSAGE);
|
return;
|
}
|
//保存之前带出已选择的qtName
|
QueryTemplate selectedQT = getSelectedQT();
|
String oldQtName = null;
|
if(selectedQT != null){
|
oldQtName = selectedQT.getId();
|
}
|
SaveQTDialog dialog = new SaveQTDialog(oldQtName);
|
|
dialog.setVisible(true);
|
if(dialog.getDisposeFlag() == 0){
|
return;
|
}
|
|
String qtName = dialog.getQTName();
|
if(isExists(qtName)){
|
int result = JOptionPane.showConfirmDialog(northPanel, "该查询模板名已经存在,是否覆盖?", "覆盖确认", JOptionPane.YES_NO_OPTION);
|
if ( JOptionPane.YES_OPTION != result )
|
return;
|
}
|
QueryTemplate qt = cpm_centerPanel.getQT();
|
String checkInfo = OQTool.checkQT(qt);
|
if(!checkInfo.equals("OK")){
|
JOptionPane.showMessageDialog(northPanel, checkInfo, checkInfo, JOptionPane.ERROR_MESSAGE);
|
return;
|
}
|
qt.setId(qtName);
|
//设置排序信息
|
qt.setOrderInfoList(tempOrderInfoList);
|
boolean saveFlag = false;
|
QTInfo qtWrapper = new QTInfo();
|
qtWrapper.qtName = qt.getId();
|
qtWrapper.btmName = qt.getLinkType();
|
qtWrapper.creator = LogonApplication.userObject.getUserName();
|
qtWrapper.createTime = System.currentTimeMillis();
|
Document doc = cpm_centerPanel.getSeniorTreeDoc();
|
if(doc == null){
|
qtWrapper.qtUIText = "";
|
}else{
|
qtWrapper.qtUIText = doc.asXML();
|
}
|
qtWrapper.levelFlag = cpm_centerPanel.getRadioFlag();
|
//TODO
|
qtWrapper.qtText = OQTool.qtTOXMl(qt).asXML();
|
try {
|
saveFlag = QTDClient.getService().saveQT(qtWrapper);
|
} catch (VCIError e1) {
|
// TODO Auto-generated catch block
|
e1.printStackTrace();
|
}
|
if(saveFlag){
|
JOptionPane.showMessageDialog(northPanel, "保存查询模板成功", "保存成功", JOptionPane.INFORMATION_MESSAGE);
|
initQTTable();
|
}else{
|
JOptionPane.showMessageDialog(northPanel, "保存查询模板失败", "保存失败", JOptionPane.INFORMATION_MESSAGE);
|
}
|
|
}
|
});
|
|
qtTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
|
|
@Override
|
public void valueChanged(ListSelectionEvent e) {
|
updateQTInfo();
|
initOrderInfoComb(null);
|
}
|
});
|
|
btnDelete.addActionListener(new ActionListener() {
|
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
int count = qtTable.getRowCount();
|
if(count == 0){
|
JOptionPane.showMessageDialog(getInstance(), "请选择查询模板!", "提示", JOptionPane.INFORMATION_MESSAGE);
|
return;
|
}
|
Object[] options = { "Yes", "No" };
|
int option = JOptionPane
|
.showOptionDialog(getInstance(), "确认是否删除选择的查询模板"
|
, "查询模板删除",
|
JOptionPane.YES_NO_OPTION,
|
JOptionPane.QUESTION_MESSAGE, null, options,
|
options[1]);
|
// int option = JOptionPane.showConfirmDialog(getInstance(), "是否确认删除", "删除确认", JOptionPane.YES_NO_CANCEL_OPTION);
|
if(option != JOptionPane.YES_OPTION){
|
return;
|
}
|
boolean flag = deleteQTS();
|
if(flag){
|
JOptionPane.showMessageDialog(northPanel, "删除查询模板成功", "删除成功", JOptionPane.INFORMATION_MESSAGE);
|
initQTTable();
|
}else{
|
JOptionPane.showMessageDialog(northPanel, "删除查询模板失败", "删除失败", JOptionPane.INFORMATION_MESSAGE);
|
}
|
}
|
});
|
|
orderSetBtn.addActionListener(new ActionListener() {
|
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
QueryTemplate qt = getSelectedQT();
|
if(qt == null){
|
if(selectedLinkType == null){
|
JOptionPane.showMessageDialog(QTPanelForLink.getInstance(), "请选定业务类型或查询模板设定排序", "未选中业务类型或查询模板", JOptionPane.WARNING_MESSAGE);
|
return;
|
}
|
OrderSetDialog dialog = new OrderSetDialog(selectedLinkType, getSelectedBtm(), getDirection());
|
dialog.setVisible(true);
|
initOrderInfoComb(dialog.getTempOrderInfoList());
|
}else{
|
OrderSetDialog dialog = new OrderSetDialog(qt);
|
dialog.setVisible(true);
|
initOrderInfoComb(qt.getOrderInfoList());
|
}
|
}
|
});
|
//add by guo
|
selectNode.addActionListener(new ActionListener() {
|
@Override
|
public void actionPerformed(ActionEvent arg0) {
|
int count = qtTable.getRowCount();
|
int num = 0;
|
for (int i = 0; i < count; i++){
|
JCheckBox chb = (JCheckBox) qtTable.getValueAt(i, 0);
|
if (chb.isSelected()){
|
num += 1;
|
if (num > 1){
|
VCIOptionPane.showMessageDialog(null, "只能选择一个对象!");
|
return;
|
} else {
|
QTInfo qtWrapper = ((QTWrapper_)qtTable.getValueAt(i, 1)).qtWrapper;
|
String selected = qtWrapper.qtName;
|
setSelectedObjectName(selected);
|
}
|
}
|
}
|
if (num == 0){
|
VCIOptionPane.showMessageDialog(null, "请选择一个对象!");
|
return;
|
}
|
parentDialog.dispose();
|
}
|
});
|
}
|
|
private void initQTTable(){
|
qtTable.removeAll();
|
if(selectedLinkType != null){
|
QTInfo[] qtWrappers = null;
|
try {
|
qtWrappers = QTDClient.getService().getObjTypeQTs(selectedLinkType.name);
|
} catch (VCIError e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
if(qtWrappers == null){
|
return;
|
}
|
tableModel.setRowCount(qtWrappers.length);
|
//重新设置table的Cell的可编辑性
|
tableModel.setInitFlag(false);
|
for(int i = 0; i < qtWrappers.length; i++){
|
QTInfo qtWrapper = qtWrappers[i];
|
JCheckBox chBox = new JCheckBox();
|
qtTable.setValueAt(chBox, i, 0);
|
qtTable.setValueAt(new QTWrapper_(qtWrapper), i, 1);
|
qtTable.setValueAt(qtWrapper.creator, i, 2);
|
qtTable.setValueAt(qtWrapper.createTime, i, 3);
|
}
|
tableModel.setInitFlag(true);
|
updateQTInfo();
|
}
|
qtTable.updateUI();
|
}
|
|
/**
|
* 检查查询模板名字是否可用
|
* @param name
|
* @return
|
*/
|
private boolean isExists(String name){
|
boolean flag = true;
|
try {
|
flag = QTDClient.getService().isExistsQT(name);
|
} catch (VCIError e) {
|
e.printStackTrace();
|
}
|
return flag;
|
}
|
|
/**
|
* 删除选择的查询模板
|
* @return
|
*/
|
private boolean deleteQTS(){
|
boolean flag = false;
|
List<String> list = new ArrayList<String>();
|
int count = qtTable.getRowCount();
|
for(int i = 0; i < count; i++){
|
JCheckBox chb = (JCheckBox) qtTable.getValueAt(i, 0);
|
if(chb.isSelected()){
|
QTInfo qtWrapper = ((QTWrapper_)qtTable.getValueAt(i, 1)).qtWrapper;
|
list.add(qtWrapper.qtName);
|
}
|
}
|
try {
|
flag = QTDClient.getService().deleteQTs(list.toArray(new String[0]));
|
} catch (VCIError e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
return flag;
|
}
|
|
/**
|
* 更新查询模板的信息
|
*/
|
private void updateQTInfo(){
|
|
int row = qtTable.getSelectedRow();
|
if(row < 0){
|
return;
|
}
|
|
QTInfo qtWrapper = ((QTWrapper_) qtTable.getValueAt(row, 1)).qtWrapper;
|
try {
|
QueryTemplate qt = OQTool.getQTByDoc(DocumentHelper.parseText(qtWrapper.qtText), qtWrapper.qtName);
|
setQTBasicUI(qt);
|
} catch (VCIError e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
} catch (DocumentException e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
cpm_centerPanel.setQTUI(qtWrapper);
|
}
|
/**
|
* 更新链接类型关联的业务类型下拉列表
|
*/
|
private void updateCombRelaType(){
|
try{
|
combRelaType.removeAllItems();
|
if(selectedLinkType == null || selectedLinkType.equals("")){
|
return;
|
}
|
String[] btmNames = null;
|
if(rdPositive.isSelected()){
|
btmNames = selectedLinkType.btmItemsTo;
|
}else if(rdOpposite.isSelected()){
|
btmNames = selectedLinkType.btmItemsFrom;
|
}
|
if(btmNames == null || btmNames.length < 0){
|
return;
|
}
|
for(int i = 0; i < btmNames.length; i++){
|
combRelaType.addItem(btmNames[i]);
|
}
|
combRelaType.addItem(All_TYPE);
|
}catch(Exception e){
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
* 更新版本版次的下拉列表
|
*/
|
private void updateCombVersion(){
|
combVersion.removeAllItems();
|
// if(rdPositive.isSelected()){
|
combVersion.addItem("当前版本当前版次");
|
combVersion.addItem("当前版本最新版次");
|
combVersion.addItem("最新版本最新版次");
|
combVersion.addItem("已发布的最新版本");
|
// }else if(rdOpposite.isSelected()){
|
// combVersion.addItem("当前版次");
|
// combVersion.addItem("当前版本");
|
// combVersion.addItem("当前命名对象");
|
// }
|
}
|
|
/**
|
* 从业务类型下拉列表获取选择的业务类型
|
* @return
|
*/
|
private String getSelectedBtm(){
|
String btmName = null;
|
if(selectedLinkType == null){
|
return btmName;
|
}
|
Object obj = combRelaType.getSelectedItem();
|
if(obj == null){
|
return btmName;
|
}
|
if(obj.equals(All_TYPE)){
|
if(rdPositive.isSelected()){
|
btmName = selectedLinkType.primitivesTo;
|
}else{
|
btmName = selectedLinkType.primitivesFrom;
|
}
|
}else{
|
btmName = (String) obj;
|
}
|
return btmName;
|
}
|
|
/**
|
* 返回查询的方向
|
* @return
|
*/
|
public String getDirection(){
|
String direction = null;
|
if(rdPositive.isSelected()){
|
direction = QTConstants.DIRECTION_POSITIVE;
|
}else{
|
direction = QTConstants.DIRECTION_OPPOSITE;
|
}
|
return direction;
|
}
|
/**
|
* 返回查询的版本
|
* @return
|
*/
|
public int getVersion(){
|
int version = 0;
|
String v = (String) combVersion.getSelectedItem();
|
if(v.equals("当前版本当前版次")){
|
version = 1;
|
}else if(v.equals("当前版本最新版次")){
|
version = 2;
|
}else if(v.equals("最新版本最新版次")){
|
version = 3;
|
}else if(v.equals("当前版次")){
|
version = 4;
|
}else if(v.equals("当前版本")){
|
version = 5;
|
}else if(v.equals("当前命名对象")){
|
version = 6;
|
}else if(v.equals("已发布的最新版本")){
|
version = 7;
|
}
|
return version;
|
}
|
|
/**
|
* 返回是否查询是否有下级
|
* @return
|
*/
|
public boolean isQueryIsLeaf(){
|
return isLeafQueryCheck.isSelected();
|
}
|
/**
|
* 返回查询的层次
|
* @return
|
*/
|
public int getLevel(){
|
String levelText = "1";
|
if(!tfLevel.getText().equals("")){
|
levelText = tfLevel.getText();
|
}
|
return Integer.valueOf(levelText);
|
}
|
|
/**
|
* 根据查询模板设置基本界面
|
* @param qt
|
* @throws Throwable
|
* @throws Exception
|
*/
|
public void setQTBasicUI(QueryTemplate qt){
|
String direction = qt.getDirection();
|
if(direction.equalsIgnoreCase(QTConstants.DIRECTION_POSITIVE)){
|
rdPositive.setSelected(true);
|
}else if(direction.equalsIgnoreCase(QTConstants.DIRECTION_OPPOSITE)){
|
rdOpposite.setSelected(true);
|
}
|
if(qt.isQueryISLeaf()){
|
isLeafQueryCheck.setSelected(true);
|
}else{
|
isLeafQueryCheck.setSelected(false);
|
}
|
tfLevel.setText(String.valueOf(qt.getLevel()));
|
String btmType = qt.getBtmType();
|
try {
|
if(btmType.equals("*")){
|
combRelaType.setSelectedItem(All_TYPE);
|
}else{
|
int count = combRelaType.getItemCount();
|
for(int i = 0; i < count - 1; i++){
|
String btName = (String) combRelaType.getItemAt(i);
|
if(btName.equals(btmType)){
|
combRelaType.setSelectedItem(btName);
|
break;
|
}
|
}
|
}
|
} catch (Exception e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
} catch (Throwable e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
int version = qt.getVersion();
|
if(version == 1){
|
combVersion.setSelectedItem("当前版本当前版次");
|
}else if(version == 2){
|
combVersion.setSelectedItem("当前版本最新版次");
|
}else if(version == 3){
|
combVersion.setSelectedItem("最新版本最新版次");
|
}else if(version == 4){
|
combVersion.setSelectedItem("当前版次");
|
}else if(version == 5){
|
combVersion.setSelectedItem("当前版本");
|
}else if(version == 6){
|
combVersion.setSelectedItem("当前命名对象");
|
}else if(version == 7){
|
combVersion.setSelectedItem("已发布的最新版本");
|
}
|
|
cpm_northPanel.updateUI();
|
}
|
|
/**
|
* 业务类型是否为所有类型
|
* @return
|
*/
|
public boolean isAllType(){
|
Object obj = combRelaType.getSelectedItem();
|
if(obj != null && obj.equals(All_TYPE)){
|
return true;
|
}
|
return false;
|
}
|
|
/**
|
* 展示排序信息
|
*/
|
private void initOrderInfoComb(List<OrderInfo> orderInfoList) {
|
orderInfoComb.removeAllItems();
|
if(orderInfoList == null){
|
QueryTemplate qt = getSelectedQT();
|
if(qt != null){
|
orderInfoList = qt.getOrderInfoList();
|
}
|
}
|
if(orderInfoList != null){
|
for(OrderInfo o : orderInfoList){
|
String orderMode = o.getOrderMode();
|
if(orderMode.equals(QTConstants.ORDERMODE_ASC)){
|
orderMode = "升序";
|
}else{
|
orderMode = "降序";
|
}
|
String orderInfo = o.getOrderField() + ";" + orderMode + ";" + o.getLevel();
|
orderInfoComb.addItem(orderInfo);
|
}
|
}
|
tempOrderInfoList = orderInfoList;
|
orderInfoComb.updateUI();
|
}
|
|
/**
|
* 获取列表中选中的qt
|
* @return
|
* @throws DocumentException
|
* @throws VCIError
|
*/
|
public QueryTemplate getSelectedQT(){
|
int row = qtTable.getSelectedRow();
|
if(row < 0){
|
return null;
|
}
|
|
QTInfo qtWrapper = ((QTWrapper_) qtTable.getValueAt(row, 1)).qtWrapper;
|
try {
|
return OQTool.getQTByDoc(DocumentHelper.parseText(qtWrapper.qtText), qtWrapper.qtName);
|
} catch (VCIError e) {
|
e.printStackTrace();
|
} catch (DocumentException e) {
|
e.printStackTrace();
|
}
|
return null;
|
}
|
}
|