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 *

Title:

*

Description:此panel为资源数据选择特殊字符而设计, * 它是SpecialCharSelectDialog 中使用到的panel

*

Copyright: Copyright (c) 2012

*

Company: VCI

* @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); } /** * 加载特殊字符分类 *

Description:

* * @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; } /** * 加载特殊字符 *

Description:

* * @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); } }); } /** * 加载特殊字符 *

Description:

* * @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())); } } /** * 加载特殊分类 *

Description:

* * @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(); } } /** * 点击获得特殊字符 *

Description:

* * @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(); } }