package com.vci.client.framework.systemConfig.specialCharacter;
|
|
|
import java.awt.BorderLayout;
|
import java.awt.Dimension;
|
import java.awt.FlowLayout;
|
import java.awt.event.MouseAdapter;
|
import java.awt.event.MouseEvent;
|
|
import javax.swing.JLabel;
|
import javax.swing.JPanel;
|
import javax.swing.JScrollPane;
|
import javax.swing.JSplitPane;
|
import javax.swing.JTable;
|
import javax.swing.JTextArea;
|
import javax.swing.JTextField;
|
import javax.swing.border.TitledBorder;
|
|
import com.vci.client.LogonApplication;
|
import com.vci.client.common.VCIBasePanel;
|
import com.vci.client.framework.delegate.SystemCfgClientDelegate;
|
import com.vci.client.framework.systemConfig.SysConfigTableModel;
|
import com.vci.client.framework.systemConfig.object.SpecialCharClsfObject;
|
import com.vci.client.framework.systemConfig.object.SpecialCharObject;
|
import com.vci.client.framework.systemConfig.stafforgmanage.VCIBaseTableExtend;
|
import com.vci.client.ui.exception.VCIException;
|
import com.vci.client.ui.locale.LocaleDisplay;
|
import com.vci.client.ui.swing.KTextField;
|
import com.vci.client.ui.swing.VCIOptionPane;
|
import com.vci.client.ui.table.TableCheckboxManager;
|
import com.vci.client.ui.table.TableSorterData;
|
import com.vci.client.ui.table.VCIBaseTableNode;
|
import com.vci.corba.common.VCIError;
|
/**
|
* 特殊字符选择panel
|
* <p>Title: </p>
|
* <p>Description:此panel为资源数据选择特殊字符而设计,
|
* 它是SpecialCharSelectDialog 中使用到的panel</p>
|
* <p>Copyright: Copyright (c) 2012</p>
|
* <p>Company: VCI</p>
|
* @author wangxl
|
* @time 2012-12-18
|
* @version 1.0
|
*/
|
|
public class SpecialCharPanel extends VCIBasePanel{
|
|
/****************************国际化信息**********************************/
|
//特殊字符分类
|
private String SPECIALCHARCLSF = LocaleDisplay.getI18nString("rmip.framework.sysconfig.specialCharClsf", "RMIPFramework",getLocale());
|
//特殊字符
|
private String SPECIALCHAR = LocaleDisplay.getI18nString("rmip.framework.sysconfig.specialChar", "RMIPFramework",getLocale());
|
//值
|
private String VALUE = LocaleDisplay.getI18nString("rmip.framework.sysconfig.value", "RMIPFramework",getLocale());
|
|
/**
|
* 特殊字符、分类的Panel
|
*/
|
private static final long serialVersionUID = 1L;
|
private SysConfigTableModel specialCharacterTableModel; //表格的tableModel
|
private JTable specialCharacterTable; //表格的table
|
private KTextField nameField; //名称
|
private JTextArea descriptionArea;//描述
|
private KTextField valueText = new KTextField() ;
|
private SpecialCharObject specialCharObject = null; //选中的字符
|
/* 初始化table组件*/
|
private String[] columns ;
|
private Class[] topClasses ;
|
private VCIBaseTableExtend tableModel = null;
|
private JTable table = null;
|
private TableSorterData sorter = null;//排序
|
private TableCheckboxManager tbChkManager;
|
String id;
|
public SpecialCharClsfObject clsfObj = null;
|
|
private Class[] classes = { String.class,String.class,String.class,String.class,String.class,String.class,String.class,String.class,String.class,String.class,String.class,String.class};
|
public SpecialCharPanel() {
|
super(null);
|
init();
|
}
|
|
public void init() {
|
setLayout(new BorderLayout());
|
JPanel palLeft = initSpecialCharacterClass();
|
JPanel palRight = initSpecialCharacter();
|
|
JSplitPane jsplit = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, palLeft, palRight);
|
jsplit.setDividerSize(10);
|
jsplit.setContinuousLayout(true);
|
jsplit.setOneTouchExpandable(true);
|
jsplit.setDividerLocation(300);
|
this.add(jsplit, BorderLayout.CENTER);
|
|
}
|
|
/**
|
* 加载特殊字符分类
|
* <p>Description: </p>
|
*
|
* @author wangxl
|
* @time 2012-12-18
|
* @return
|
*/
|
private JPanel initSpecialCharacterClass() {
|
this.setLayout(new BorderLayout());
|
JPanel tablePanel = initTablePanel();
|
JPanel palSubmit = new JPanel();//按钮panel
|
palSubmit.setLayout(new FlowLayout(FlowLayout.LEADING));
|
JPanel classPanel = new JPanel();
|
classPanel.setLayout(new BorderLayout());
|
tablePanel.add(palSubmit, BorderLayout.SOUTH);
|
classPanel.add(tablePanel, BorderLayout.NORTH);
|
loadTableData();
|
return tablePanel;
|
}
|
|
/**
|
* 加载特殊字符
|
* <p>Description: </p>
|
*
|
* @author wangxl
|
* @time 2012-12-18
|
* @return
|
*/
|
private JPanel initSpecialCharacter() {
|
JPanel bottomPanel = new JPanel();
|
specialCharacterTableModel=new SysConfigTableModel(classes);
|
VCIBaseTableNode specialCharacterTableNode=new VCIBaseTableNode(null);
|
specialCharacterTableModel.addRow(1, specialCharacterTableNode);
|
specialCharacterTable=new JTable(specialCharacterTableModel);
|
specialCharacterTable.setRowHeight(25);
|
specialCharacterTable.addMouseListener(new java.awt.event.MouseAdapter() {
|
public void mouseClicked(java.awt.event.MouseEvent e) {
|
initContent();
|
}
|
});
|
initTableProperty("");
|
specialCharacterTable.setColumnSelectionAllowed(true);
|
JScrollPane js=new JScrollPane(specialCharacterTable);
|
JPanel centerBottomCPanel = new JPanel();
|
centerBottomCPanel.setLayout(null);
|
centerBottomCPanel.setPreferredSize(new Dimension(400,40));
|
JLabel valueLabel = new JLabel(VALUE);
|
|
valueLabel.setBounds(20, 10, 80, 25);
|
valueText.setBounds(50, 10, 200, 25);
|
centerBottomCPanel.add(valueLabel);
|
valueText.setEditable(false);
|
centerBottomCPanel.add(valueText);
|
JTextField line = new JTextField();
|
line.setPreferredSize(new Dimension(63,2));
|
JPanel centerPanel = new JPanel();
|
TitledBorder titleBorder = new TitledBorder(SPECIALCHAR);
|
centerPanel.setBorder(titleBorder);
|
centerPanel.setLayout(new BorderLayout());
|
|
JPanel palTable = new JPanel(new BorderLayout());
|
palTable.add(js, BorderLayout.CENTER);
|
|
JPanel palInputAndBtns = new JPanel(new BorderLayout());
|
palInputAndBtns.add(centerBottomCPanel, BorderLayout.CENTER);
|
palInputAndBtns.add(bottomPanel, BorderLayout.SOUTH);
|
|
centerPanel.setLayout(new BorderLayout());
|
centerPanel.add(palTable, BorderLayout.CENTER);
|
centerPanel.add(palInputAndBtns, BorderLayout.SOUTH);
|
return centerPanel;
|
}
|
|
/**
|
* 初始化table的Panle
|
* @return
|
*/
|
private JPanel initTablePanel(){
|
initTable();
|
JPanel palTable = new JPanel();
|
palTable.setBorder(new TitledBorder(SPECIALCHARCLSF));
|
JScrollPane jspTable = new JScrollPane();
|
jspTable.setAutoscrolls(true);
|
jspTable.getViewport().add(table);
|
palTable.setLayout(new BorderLayout());
|
palTable.add(jspTable, BorderLayout.CENTER);
|
return palTable;
|
}
|
public void initTable(){
|
columns = new String[3];
|
topClasses = new Class[3];
|
columns[0] = "选择";
|
columns[1] = "名称";
|
columns[2] = "描述";
|
topClasses[0] = Boolean.class;
|
for(int i=0;i<2;i++) {
|
topClasses[i + 1] = String.class;
|
}
|
tableModel = new VCIBaseTableExtend(columns, topClasses);
|
sorter = new TableSorterData(tableModel);
|
table = new JTable(sorter);
|
table.setColumnSelectionAllowed(true);
|
sorter.setTableHeader(table.getTableHeader());
|
table.setRowHeight(25);
|
tbChkManager = new TableCheckboxManager(table);
|
table.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN);
|
tbChkManager.setHeaderShowCheckbox(0);
|
table.getTableHeader().setReorderingAllowed(false);
|
table.getColumnModel().getColumn(1).setPreferredWidth(150);
|
table.getColumnModel().getColumn(2).setPreferredWidth(100);
|
table.setCellSelectionEnabled(false);
|
table.addMouseListener(new MouseAdapter() {
|
@Override
|
public void mouseClicked(MouseEvent e) {
|
int selectedRow = table.getSelectedRow();
|
VCIBaseTableNode clsfNode = tableModel.getValueAt(selectedRow);
|
clsfObj = (SpecialCharClsfObject) clsfNode.getObj();
|
id = clsfObj.getId();
|
initTableProperty(id);
|
}
|
});
|
}
|
|
/**
|
* 加载特殊字符
|
* <p>Description: </p>
|
*
|
* @author wangxl
|
* @time 2012-12-18
|
* @param id
|
*/
|
public void initTableProperty(String id){
|
try {
|
specialCharacterTableModel.list.clear();
|
valueText.setText("");
|
SpecialCharObject[] specialCharInfos = new SystemCfgClientDelegate(LogonApplication.getUserEntityObject()).fetchSpecialChar(id);
|
int length=specialCharInfos.length;
|
int rowLength = length/12;
|
if (length%12 != 0) {
|
rowLength += 1;
|
}
|
for (int i = 0; i < rowLength; i++) {
|
VCIBaseTableNode specialCharacterTableNode = new VCIBaseTableNode(null);
|
for(int column = 0; column < 12;column++){
|
if (i*12 + column < length){
|
SpecialCharObject specialCharObject= specialCharInfos[i*12 + column];
|
String name=String.valueOf(column+1);
|
specialCharacterTableNode.setPropertyValueByName(name, specialCharObject);
|
}
|
}
|
specialCharacterTableModel.addRow(i + 1 , specialCharacterTableNode);
|
}
|
specialCharacterTable.setModel(specialCharacterTableModel);
|
specialCharacterTableModel.fireTableDataChanged();
|
} catch (VCIError e) {
|
VCIOptionPane.showError(LogonApplication.frame, LocaleDisplay.getI18nString(String.valueOf(e.code), "RMIPFramework", getLocale()));
|
}
|
}
|
|
/**
|
* 加载特殊分类
|
* <p>Description: </p>
|
*
|
* @author wangxl
|
* @time 2012-12-18
|
*/
|
public void loadTableData(){
|
tableModel.list.clear();
|
SpecialCharClsfObject[] Objects;
|
try {
|
Objects = new SystemCfgClientDelegate(LogonApplication.getUserEntityObject()).getSpecialCharClsfList();
|
if(Objects.length!=0){
|
for (int i = 0 ; i < Objects.length ; i ++ ){
|
VCIBaseTableNode node = new VCIBaseTableNode(Objects[i]);
|
node.setPropertyValueByName(columns[1], Objects[i].getName());
|
node.setPropertyValueByName(columns[2], Objects[i].getDesc());
|
tableModel.addRow(tableModel.getRowCount(), node);
|
}
|
tbChkManager.addCheckBoxs(Objects.length);
|
tableModel.fireTableDataChanged();
|
}
|
} catch (VCIException e) {
|
e.printStackTrace();
|
}
|
}
|
/**
|
* 点击获得特殊字符
|
* <p>Description: </p>
|
*
|
* @author wangxl
|
* @time 2012-12-18
|
*/
|
public void initContent(){
|
int rowIndex = specialCharacterTable.getSelectedRow();
|
int columnIndex = specialCharacterTable.getSelectedColumn();
|
Object selectCharObj = specialCharacterTableModel.getValueAt(rowIndex, columnIndex);
|
if(selectCharObj instanceof SpecialCharObject){
|
specialCharObject = (SpecialCharObject)selectCharObj;
|
valueText.setText(specialCharObject.getValue());
|
} else {
|
specialCharObject = null;
|
valueText.setText("");
|
}
|
}
|
public SpecialCharObject getSpecialCharObject() {
|
return specialCharObject;
|
}
|
public void setValueText(String value) {
|
valueText.setText(value);
|
}
|
|
public String getDescriptionArea() {
|
return descriptionArea.getText().trim();
|
}
|
public String getNameFieldText() {
|
return nameField.getText().trim();
|
}
|
public String getValueText() {
|
return valueText.getText().trim();
|
}
|
|
}
|