package com.vci.client.oq.ui;
|
|
import java.awt.BorderLayout;
|
import java.awt.Dimension;
|
import java.awt.FlowLayout;
|
import java.awt.Toolkit;
|
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionListener;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
import javax.swing.JButton;
|
import javax.swing.JComboBox;
|
import javax.swing.JDialog;
|
import javax.swing.JLabel;
|
import javax.swing.JOptionPane;
|
import javax.swing.JPanel;
|
import javax.swing.JScrollPane;
|
import javax.swing.JTextField;
|
import javax.swing.table.DefaultTableModel;
|
|
import com.vci.client.common.oq.OQTool;
|
import com.vci.client.omd.provider.BtmProvider;
|
import com.vci.client.omd.provider.LinkTypeProvider;
|
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.omd.ltm.LinkType;
|
|
public class OrderSetDialog extends JDialog{
|
|
/**
|
*
|
*/
|
private static final long serialVersionUID = 4731919043979125023L;
|
|
private TableWithAction orderSetTable ;
|
private DefaultTableModel tableModel;
|
private JPanel northPanel;
|
private JPanel centerPanel;
|
private JPanel southPanel;
|
private JScrollPane scrollPane;
|
private static final String[] tableHeader = {"排序字段", "排序方式", "优先级"};
|
private QueryTemplate qt = null;
|
private LinkType link = null;
|
private String btmName = null;
|
List<OrderInfo> tempOrderInfoList = null;
|
|
private JButton btnDelete;
|
|
private JComboBox orderFieldComb;
|
|
private JComboBox orderModeComb;
|
|
private JTextField tfLevel;
|
|
private JButton btnAdd;
|
|
private JButton btnSave;
|
|
private JButton btnCancel;
|
|
private String direction;
|
|
public OrderSetDialog(QueryTemplate qt_){
|
this.qt = qt_;
|
String linkType = qt_.getLinkType();
|
if(linkType != null && !linkType.equals("")){
|
this.direction = qt_.getDirection();
|
try {
|
this.link = LinkTypeProvider.getInstance().getLinkTypeByName(linkType);
|
} catch (Exception e) {
|
e.printStackTrace();
|
} catch (Throwable e) {
|
e.printStackTrace();
|
}
|
}
|
tempOrderInfoList = OQTool.cloneOrderInfoList(qt.getOrderInfoList());
|
initUI();
|
initTable();
|
initOrderFieldComb();
|
addListener();
|
}
|
|
public OrderSetDialog(String btmName_){
|
this.btmName = btmName_;
|
tempOrderInfoList = new ArrayList<OrderInfo>();
|
initUI();
|
initTable();
|
initOrderFieldComb();
|
addListener();
|
}
|
|
public OrderSetDialog(LinkType link_, String btmName_,
|
String direction_) {
|
this.link = link_;
|
this.btmName = btmName_;
|
this.direction = direction_;
|
tempOrderInfoList = new ArrayList<OrderInfo>();
|
initUI();
|
initTable();
|
initOrderFieldComb();
|
addListener();
|
}
|
|
private void initUI(){
|
this.setTitle("设置排序");
|
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
|
this.setSize(screenSize.width/2, screenSize.height/2);
|
this.setModal(true);
|
this.setLocationRelativeTo(null);
|
this.setResizable(false);
|
|
this.setLayout(new BorderLayout(0, 0));
|
northPanel = new JPanel();
|
centerPanel = new JPanel();
|
southPanel = new JPanel();
|
|
this.add(northPanel, BorderLayout.NORTH);
|
this.add(centerPanel, BorderLayout.CENTER);
|
this.add(southPanel, BorderLayout.SOUTH);
|
|
northPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
|
btnDelete = new JButton("删除");
|
northPanel.add(btnDelete);
|
northPanel.add(new JLabel(" 排序字段:"));
|
orderFieldComb = new JComboBox();
|
northPanel.add(orderFieldComb);
|
northPanel.add(new JLabel(" 排序方式:"));
|
orderModeComb = new JComboBox();
|
northPanel.add(orderModeComb);
|
orderModeComb.addItem("升序");
|
orderModeComb.addItem("降序");
|
northPanel.add(new JLabel(" 优先级:"));
|
tfLevel = new JTextField(10);
|
tfLevel.setToolTipText("设定值越大优先级越高");
|
northPanel.add(tfLevel);
|
orderFieldComb.setPreferredSize(new Dimension(150, 25));
|
btnAdd = new JButton("增加");
|
northPanel.add(btnAdd);
|
|
centerPanel.setLayout(new BorderLayout(5, 5));
|
scrollPane = new JScrollPane();
|
centerPanel.add(scrollPane, BorderLayout.CENTER);
|
tableModel = new TableModelWithCheckBox(tableHeader);
|
orderSetTable = new TableWithAction(tableModel);
|
scrollPane.setViewportView(orderSetTable);
|
|
southPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
|
btnSave = new JButton("保存");
|
southPanel.add(btnSave);
|
btnCancel = new JButton("取消");
|
southPanel.add(btnCancel);
|
}
|
|
private void initTable(){
|
orderSetTable.removeAll();
|
if(tempOrderInfoList == null){
|
return;
|
}
|
tableModel.setRowCount(tempOrderInfoList.size());
|
orderSetTable.setEditable(true);
|
for (int i = 0; i < tempOrderInfoList.size(); i++) {
|
OrderInfo orderInfo = tempOrderInfoList.get(i);
|
orderSetTable.setValueAt(orderInfo.getOrderField(), i, 0);
|
String orderMode = orderInfo.getOrderMode();
|
if(orderMode.equals(QTConstants.ORDERMODE_ASC)){
|
orderMode = "升序";
|
}else{
|
orderMode = "降序";
|
}
|
orderSetTable.setValueAt(orderMode, i, 1);
|
orderSetTable.setValueAt(orderInfo.getLevel(), i, 2);
|
}
|
orderSetTable.setEditable(false);
|
orderSetTable.updateUI();
|
}
|
|
private void addListener(){
|
btnDelete.addActionListener(new ActionListener() {
|
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
if(JOptionPane.YES_OPTION !=
|
JOptionPane.showConfirmDialog(getThis(), "确认删除", "确认删除", JOptionPane.YES_NO_OPTION)){
|
return;
|
}
|
int selectedRow = orderSetTable.getSelectedRow();
|
if(selectedRow == -1){
|
JOptionPane.showMessageDialog(getThis(), "未选中数据", "未选中数据", JOptionPane.WARNING_MESSAGE);
|
return;
|
}
|
String orderField = (String) orderSetTable.getValueAt(selectedRow, 0);
|
for(OrderInfo orderInfo : tempOrderInfoList){
|
String orderField_ = orderInfo.getOrderField();
|
if(orderField_.equals(orderField)){
|
tempOrderInfoList.remove(orderInfo);
|
break;
|
}
|
}
|
initTable();
|
initOrderFieldComb();
|
}
|
});
|
|
btnAdd.addActionListener(new ActionListener() {
|
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
String level = tfLevel.getText();
|
if(level.equals("")){
|
JOptionPane.showMessageDialog(getThis(), "请设定优先级", "请设定优先级", JOptionPane.WARNING_MESSAGE);
|
return;
|
}
|
try{
|
int levelInt = Integer.valueOf(level);
|
OrderInfo o = new OrderInfo();
|
o.setOrderField((String)orderFieldComb.getSelectedItem());
|
String orderMode = (String) orderModeComb.getSelectedItem();
|
if(orderMode.equals("升序")){
|
orderMode = QTConstants.ORDERMODE_ASC;
|
}else{
|
orderMode = QTConstants.ORDERMODE_DESC;
|
}
|
o.setOrderMode(orderMode);
|
o.setLevel(levelInt);
|
tempOrderInfoList.add(o);
|
initTable();
|
initOrderFieldComb();
|
}catch(NumberFormatException n){
|
JOptionPane.showMessageDialog(getThis(), "优先级必须设定为整数", "优先级必须设定为整数", JOptionPane.WARNING_MESSAGE);
|
return;
|
}
|
|
}
|
});
|
|
btnSave.addActionListener(new ActionListener() {
|
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
if(qt != null){
|
qt.setOrderInfoList(tempOrderInfoList);
|
}
|
getThis().dispose();
|
}
|
});
|
|
btnCancel.addActionListener(new ActionListener() {
|
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
getThis().dispose();
|
}
|
});
|
}
|
|
/**
|
* 业务类型的属性作为可选择的排序字段
|
* 过滤掉已经使用的排序字段
|
*/
|
private void initOrderFieldComb(){
|
orderFieldComb.removeAllItems();
|
String btmType;
|
if(btmName != null){
|
btmType = btmName;
|
}else{
|
btmType = qt.getBtmType();
|
}
|
if(link != null){
|
List<String> abNames = LinkTypeProvider.getInstance().getAllAbNames(link);
|
for(String abName : abNames){
|
List<String> tempOrderFieldList = getTempOrderFieldList();
|
if(tempOrderFieldList == null ||
|
!tempOrderFieldList.contains(abName.toLowerCase())){
|
orderFieldComb.addItem(abName);
|
}
|
}
|
String wrapper = "T_OID.";
|
if(direction.equals(QTConstants.DIRECTION_OPPOSITE)){
|
wrapper = "F_OID.";
|
}
|
List<String> btmAbNames = BtmProvider.getInstance().getAllAbNames(btmType);
|
for(String abName : btmAbNames){
|
abName = wrapper + abName;
|
List<String> tempOrderFieldList = getTempOrderFieldList();
|
if(tempOrderFieldList == null ||
|
!tempOrderFieldList.contains(abName.toLowerCase())){
|
orderFieldComb.addItem(abName);
|
}
|
}
|
}else{
|
List<String> abNames = BtmProvider.getInstance().getAllAbNames(btmType);
|
for(String abName : abNames){
|
List<String> tempOrderFieldList = getTempOrderFieldList();
|
if(tempOrderFieldList == null ||
|
!tempOrderFieldList.contains(abName.toLowerCase())){
|
orderFieldComb.addItem(abName);
|
}
|
}
|
}
|
|
orderFieldComb.updateUI();
|
}
|
|
/**
|
* 通过临时排序信息列表获取临时排序字段列表
|
* @return
|
*/
|
private List<String> getTempOrderFieldList(){
|
if(tempOrderInfoList == null){
|
return null;
|
}
|
List<String> list = new ArrayList<String>();
|
for(OrderInfo orderInfo : tempOrderInfoList){
|
list.add(orderInfo.getOrderField().toLowerCase());
|
}
|
return list;
|
}
|
|
private JDialog getThis(){
|
return this;
|
}
|
|
public List<OrderInfo> getTempOrderInfoList(){
|
return tempOrderInfoList;
|
}
|
}
|