package com.vci.client.portal.UI;
|
import java.awt.BorderLayout;
|
import java.awt.Color;
|
import java.awt.Component;
|
import java.awt.FlowLayout;
|
import java.awt.GridBagConstraints;
|
import java.awt.GridBagLayout;
|
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionListener;
|
import java.awt.event.MouseAdapter;
|
import java.awt.event.MouseEvent;
|
import java.util.Arrays;
|
import java.util.Comparator;
|
import java.util.List;
|
|
import javax.swing.JButton;
|
import javax.swing.JFrame;
|
import javax.swing.JLabel;
|
import javax.swing.JMenuItem;
|
import javax.swing.JOptionPane;
|
import javax.swing.JPanel;
|
import javax.swing.JPopupMenu;
|
import javax.swing.JScrollPane;
|
import javax.swing.JSplitPane;
|
import javax.swing.JTable;
|
import javax.swing.JTextField;
|
import javax.swing.JTree;
|
import javax.swing.table.DefaultTableCellRenderer;
|
import javax.swing.table.TableColumn;
|
import javax.swing.table.TableModel;
|
import javax.swing.table.TableRowSorter;
|
import javax.swing.tree.DefaultMutableTreeNode;
|
import javax.swing.tree.DefaultTreeModel;
|
import javax.swing.tree.TreeNode;
|
import javax.swing.tree.TreePath;
|
|
import com.vci.corba.omd.btm.BtmItem;
|
import com.vci.corba.portal.data.PLCommandParameter;
|
import com.vci.corba.portal.data.PLPageDefination;
|
import com.vci.corba.portal.data.PLUILayout;
|
import com.vci.corba.portal.data.PLTabButton;
|
import com.vci.corba.portal.data.PLTabPage;
|
import com.vci.client.LogonApplication;
|
import com.vci.client.common.VCIBasePanel;
|
import com.vci.client.framework.rightConfig.object.FunctionObject;
|
import com.vci.client.omd.provider.BtmProvider;
|
import com.vci.client.portal.UI.dialog.VCIGrandUIDialog;
|
import com.vci.client.portal.utility.UITools;
|
import com.vci.client.ui.process.QANProcessBar;
|
import com.vci.client.ui.process.QANProcessBarFrame;
|
import com.vci.client.ui.swing.VCIOptionPane;
|
import com.vci.client.ui.table.VCIBaseTableModel;
|
import com.vci.client.ui.table.VCIBaseTableNode;
|
import com.vci.client.ui.tree.VCIBaseTreeModel;
|
import com.vci.client.ui.tree.VCIBaseTreeNode;
|
import com.vci.client.ui.util.PostorderEnumeration;
|
import com.vci.corba.common.VCIError;
|
|
/**
|
* This code was edited or generated using CloudGarden's Jigloo
|
* SWT/Swing GUI Builder, which is free for non-commercial
|
* use. If Jigloo is being used commercially (ie, by a corporation,
|
* company or business for any purpose whatever) then you
|
* should purchase a license for each developer using Jigloo.
|
* Please visit www.cloudgarden.com for details.
|
* Use of Jigloo implies acceptance of these licensing terms.
|
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
|
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
|
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
|
*/
|
/**
|
* UI管理
|
* @author liudi
|
*
|
* 2013-7-23
|
*/
|
public class UIFManager extends VCIBasePanel {
|
/**
|
*
|
*/
|
private static final long serialVersionUID = 7438323020031787177L;
|
private JSplitPane jSplitPane;
|
private JPanel btnPanel;
|
private JScrollPane jScrollPane;
|
private JPanel uifMangerTablePanel;
|
private JTable uifMangerTabel;
|
private TableRowSorter<TableModel> tableSorter;
|
private boolean enableSort = true;
|
private VCIBaseTableModel uiFMangerTableModel;
|
private JPanel tablePanel;
|
private JButton delBtn;
|
private JButton editBtn;
|
private JButton createBtn;
|
private JPanel contentPanel;
|
private JTree btTree;
|
//=================
|
private JPanel leftPanel;
|
private JPanel topPanel;
|
private JPanel rightPanel;
|
private JPanel rightchaxunPanel;
|
private JLabel Name;
|
private JTextField chaxunByName;
|
private JLabel shangxiawen;
|
private JTextField chaxunByshangxiawen;
|
private JButton chaxunbtn;
|
private JTextField lefTtextField;
|
private JButton leftBtnchaxun;
|
private List<String> usedList = null;
|
|
|
JPopupMenu popupMenu = new JPopupMenu();//弹出式菜单
|
JMenuItem menuitem = new JMenuItem("刷新");
|
|
Object[][] strings = null;
|
private static UIFManager uiFManager = null;
|
String[] columnHeaders = new String[] { "名称", "UI上下文"};
|
Class types[] = new Class[] { String.class, String.class };
|
private JButton btntab;
|
private JButton btnForm;
|
private JButton btnTree;
|
private String btname = "";
|
private JScrollPane jscrollPanel ;
|
private JButton clonebtn;
|
private JButton expBtn;
|
private JButton impBtn;
|
private JButton grandBtn;
|
private JButton grandBtnBySelected;
|
private JButton relatbutton;
|
// public static UIFManager getInstance(){
|
// if(uiFManager == null){
|
// uiFManager = new UIFManager();
|
// }
|
// return uiFManager;
|
// }
|
|
private JTree contextTree;
|
private VCIBaseTreeModel contextTreeModel;
|
private VCIBaseTreeNode contextTreerootNode;
|
public UIFManager(FunctionObject funcObj){
|
super(funcObj);
|
initGUI();
|
}
|
private void initGUI() {
|
try {
|
{
|
{
|
this.setLayout(new BorderLayout());
|
jSplitPane = new JSplitPane();
|
this.add(jSplitPane);
|
{
|
leftPanel = new JPanel();
|
BorderLayout leftPanelLayout = new BorderLayout();
|
leftPanel.setLayout(leftPanelLayout);
|
jSplitPane.add(leftPanel, JSplitPane.LEFT);
|
{
|
topPanel = new JPanel();
|
BorderLayout topPanelLayout = new BorderLayout();
|
|
leftPanel.add(topPanel,BorderLayout.NORTH);
|
//搜索框的设置add by guo
|
GridBagConstraints gb = new GridBagConstraints();
|
gb.gridx = 0;
|
gb.gridy = 0;
|
//占长度的百分之七十
|
gb.weightx = 0.7;
|
gb.weighty = 0;
|
gb.fill = GridBagConstraints.HORIZONTAL;
|
topPanel.setLayout(new GridBagLayout());
|
{
|
lefTtextField = new JTextField();
|
topPanel.add(lefTtextField,gb);
|
leftBtnchaxun = new JButton("查询");
|
topPanel.add(leftBtnchaxun);
|
leftBtnchaxun.addActionListener(new ActionListener() {
|
public void actionPerformed(ActionEvent e) {
|
chaxun2();
|
}
|
});
|
lefTtextField.addActionListener(new ActionListener() {
|
public void actionPerformed(ActionEvent e) {
|
chaxun2();
|
}
|
});
|
|
}
|
}
|
|
{
|
popupMenu.add(menuitem);
|
btTree = new JTree();
|
jscrollPanel = new JScrollPane();
|
jscrollPanel.setViewportView(btTree);
|
leftPanel.add(jscrollPanel,BorderLayout.CENTER);
|
btTree.setModel(createTreeModel());
|
btTree.addMouseListener(new MouseAdapter() {
|
@Override
|
public void mouseClicked(MouseEvent e) {
|
super.mouseClicked(e);
|
initData();
|
}
|
@Override
|
public void mouseReleased(MouseEvent e) {
|
super.mouseReleased(e);
|
if(e.isPopupTrigger()){
|
popupMenu.show(btTree, e.getX(), e.getY());
|
}
|
}
|
});
|
menuitem.addActionListener(new ActionListener() {
|
@Override
|
public void actionPerformed(ActionEvent arg0) {
|
try {
|
btTree.setModel(createTreeModel());
|
} catch (VCIError e) {
|
e.printStackTrace();
|
}
|
}
|
});
|
|
}
|
}
|
|
{
|
contentPanel = new JPanel();
|
BorderLayout contentPanelLayout = new BorderLayout();
|
contentPanel.setLayout(contentPanelLayout);
|
jSplitPane.add(contentPanel, JSplitPane.RIGHT);
|
{
|
//add by guo
|
GridBagConstraints gbc = new GridBagConstraints();
|
gbc.fill = GridBagConstraints.HORIZONTAL;
|
gbc.weightx = 0;
|
gbc.weighty = 0;
|
gbc.gridx = 0;
|
gbc.gridy = 0;
|
rightPanel = new JPanel();
|
contentPanel.add(rightPanel,BorderLayout.NORTH);
|
rightPanel.setLayout(new GridBagLayout());{
|
|
rightchaxunPanel = new JPanel();
|
rightPanel.add(rightchaxunPanel,gbc);{
|
|
Name = new JLabel("名称");
|
rightchaxunPanel.add(Name);
|
chaxunByName = new JTextField(40);
|
rightchaxunPanel.add(chaxunByName);
|
|
shangxiawen = new JLabel("UI上下文");
|
rightchaxunPanel.add(shangxiawen);
|
chaxunByshangxiawen = new JTextField(40);
|
rightchaxunPanel.add(chaxunByshangxiawen);
|
|
chaxunbtn = new JButton("查询");
|
rightchaxunPanel.add(chaxunbtn);
|
chaxunbtn.addActionListener(new ActionListener() {
|
public void actionPerformed(ActionEvent e) {
|
chaxun1();
|
}
|
});
|
chaxunByshangxiawen.addActionListener(new ActionListener() {
|
public void actionPerformed(ActionEvent e) {
|
chaxun1();
|
}
|
});
|
chaxunByName.addActionListener(new ActionListener() {
|
public void actionPerformed(ActionEvent e) {
|
chaxun1();
|
}
|
});
|
}
|
}
|
{
|
gbc.gridx = 0;
|
gbc.gridy = 1;
|
|
btnPanel = new JPanel();
|
FlowLayout jPanel1Layout = new FlowLayout();
|
rightPanel.add(btnPanel, gbc);
|
btnPanel.setLayout(jPanel1Layout);
|
{
|
createBtn = new JButton();
|
btnPanel.add(createBtn);
|
createBtn.setText("创建");
|
createBtn.addActionListener(new ActionListener() {
|
|
@Override
|
public void actionPerformed(ActionEvent arg0) {
|
|
TreePath path = btTree.getSelectionPath();
|
String message = "请选择业务类型!";
|
if(path ==null){
|
VCIOptionPane.showMessage(LogonApplication.frame, message);
|
return ;
|
}
|
VCIBaseTreeNode node = (VCIBaseTreeNode) path.getLastPathComponent();
|
if(node.getObj()==null){
|
VCIOptionPane.showMessage(LogonApplication.frame, message);
|
return ;
|
}
|
if(node.getObj() instanceof String){
|
VCIOptionPane.showMessage(LogonApplication.frame, message);
|
return ;
|
}
|
int row = uifMangerTabel.getSelectedRow(); //选中数据的索引
|
BtmItem obj = (BtmItem) node.getObj();
|
UIContextDialog dialog = new UIContextDialog(obj,false,null);
|
initData();
|
//uifMangerTabel.setRowSelectionInterval(row, row);
|
}
|
});
|
}
|
{
|
editBtn = new JButton();
|
btnPanel.add(editBtn);
|
editBtn.setText("修改");
|
editBtn.addActionListener(new ActionListener() {
|
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
TreePath path = btTree.getSelectionPath();
|
String message = "请选择业务类型!";
|
if(path ==null){
|
VCIOptionPane.showMessage(LogonApplication.frame, message);
|
return ;
|
}
|
VCIBaseTreeNode node = (VCIBaseTreeNode) path.getLastPathComponent();
|
if(node.getObj()==null){
|
VCIOptionPane.showMessage(LogonApplication.frame, message);
|
return ;
|
}
|
if(node.getObj() instanceof String){
|
VCIOptionPane.showMessage(LogonApplication.frame, message);
|
return ;
|
}
|
if(uiFMangerTableModel.list.size()==0){
|
VCIOptionPane.showMessage(LogonApplication.frame, "请选择数据!");
|
return ;
|
}
|
int row = uifMangerTabel.getSelectedRow(); //选中数据的索引
|
int selectedRowCount = uifMangerTabel.getSelectedRowCount();//选中的数据条数
|
if(selectedRowCount==0){
|
VCIOptionPane.showMessage(LogonApplication.frame, "请选择数据!");
|
return;
|
}
|
row=uifMangerTabel.convertRowIndexToModel(row);
|
VCIBaseTableNode valueAt = uiFMangerTableModel.getValueAt(row);//获取选中行对象
|
BtmItem obj = (BtmItem) node.getObj();
|
PLUILayout plpagelayoutdefination = (PLUILayout) valueAt.getObj();//获取选中行的数据
|
UIContextDialog dialog = new UIContextDialog(obj,true,plpagelayoutdefination);
|
if(dialog.isSave() == true){
|
initData(); //将本已选中的行去掉了
|
}
|
//加载完新窗体后,重新让原始数据被选中,选择从paramInt1到paramInt2之间的行
|
//uifMangerTabel.setRowSelectionInterval(row, row);
|
}
|
});
|
}
|
{
|
delBtn = new JButton();
|
btnPanel.add(delBtn);
|
btntab = new JButton("操作区");
|
btntab.addActionListener(new ActionListener() {
|
@Override
|
public void actionPerformed(ActionEvent arg0) {
|
if(uiFMangerTableModel.list.size()==0){
|
VCIOptionPane.showMessage(LogonApplication.frame, "请选择数据!");
|
return ;
|
}
|
int selectedRowCount = uifMangerTabel.getSelectedRowCount();
|
int selectedRow = uifMangerTabel.getSelectedRow();
|
if(selectedRow>=uiFMangerTableModel.list.size()){
|
VCIOptionPane.showMessage(LogonApplication.frame, "请选择数据!");
|
return ;
|
}
|
if(selectedRowCount==0){
|
VCIOptionPane.showMessage(LogonApplication.frame, "请选择数据!");
|
return ;
|
}else if(selectedRowCount >1){
|
VCIOptionPane.showMessage(LogonApplication.frame, "一次只能选择一条数据进行此操作!");
|
return ;
|
}
|
int[] selectedRows = uifMangerTabel.getSelectedRows();
|
for(int j=0;j<selectedRows.length;j++){
|
selectedRows[j]=uifMangerTabel.convertRowIndexToModel(selectedRows[j]);
|
PLUILayout plpagelayoutdefination = (PLUILayout) uiFMangerTableModel.getValueAt(selectedRows[j]).getObj();
|
if(plpagelayoutdefination.plIsShowTab == 0){
|
VCIOptionPane.showMessage(LogonApplication.frame, "该上下没有配置显示‘操作区’!");
|
return;
|
}
|
TabMainDiaolg dialog = new TabMainDiaolg(plpagelayoutdefination,btname, (short)3);
|
dialog.dispose();
|
}
|
}
|
});
|
{
|
btnTree = new JButton("导航区");
|
btnTree.addActionListener(new ActionListener() {
|
@Override
|
public void actionPerformed(ActionEvent paramActionEvent) {
|
if(uiFMangerTableModel.list.size()==0){
|
VCIOptionPane.showMessage(LogonApplication.frame, "请选择数据!");
|
return ;
|
}
|
int selectedRow = uifMangerTabel.getSelectedRow();
|
int selectedRowCount = uifMangerTabel.getSelectedRowCount();
|
if(selectedRowCount==0){
|
VCIOptionPane.showMessage(LogonApplication.frame, "请选择数据!");
|
return ;
|
} else if(selectedRowCount >1){
|
VCIOptionPane.showMessage(LogonApplication.frame, "一次只能选择一条数据进行此操作!");
|
return ;
|
}
|
int[] selectedRows = uifMangerTabel.getSelectedRows();
|
for(int j=0;j<selectedRows.length;j++){
|
selectedRows[j]=uifMangerTabel.convertRowIndexToModel(selectedRows[j]);
|
PLUILayout plpagelayoutdefination = (PLUILayout) uiFMangerTableModel.getValueAt(selectedRows[j]).getObj();
|
if(plpagelayoutdefination.plIsShowNavigator == 0){
|
VCIOptionPane.showMessage(LogonApplication.frame, "该上下没有配置显示‘导航区’!");
|
return;
|
}
|
TabMainDiaolg dialog = new TabMainDiaolg(plpagelayoutdefination,btname, (short)1);
|
dialog.dispose();
|
}
|
}
|
});
|
{
|
relatbutton = new JButton("级联删除");
|
relatbutton.addActionListener(new ActionListener() {
|
|
@Override
|
public void actionPerformed(ActionEvent arg0) {
|
if(uiFMangerTableModel.list.size()==0){
|
VCIOptionPane.showMessage(LogonApplication.frame, "请选择删除的数据!");
|
return ;
|
}
|
int selectedRow = uifMangerTabel.getSelectedRow();
|
int selectedRowCount = uifMangerTabel.getSelectedRowCount();
|
if(selectedRowCount==0){
|
VCIOptionPane.showMessage(LogonApplication.frame, "请选择删除的数据!");
|
return ;
|
}
|
/*if (VCIOptionPane.showQuestion(LogonApplication.frame,
|
"确定要删除记录吗?") != 0) {
|
return;
|
}*/
|
selectedRow=uifMangerTabel.convertRowIndexToModel(selectedRow);
|
Object uicontextobj = uiFMangerTableModel.getValueAt(selectedRow).getObj();
|
PLUILayout plpagelayoutdefination = (PLUILayout) uicontextobj;
|
Object[] options = { "Yes", "No" };
|
int option = JOptionPane
|
.showOptionDialog(LogonApplication.frame, "确认是否删除ui定义\""
|
+ plpagelayoutdefination.plName + "\"", "ui定义级联删除",
|
JOptionPane.YES_NO_OPTION,
|
JOptionPane.QUESTION_MESSAGE, null, options,
|
options[1]);
|
if(option != JOptionPane.YES_OPTION){
|
return;
|
}
|
try {
|
PLTabPage[] pltabPages = UITools.getService().getPLTabPagesByPageDefinationOId(plpagelayoutdefination.plOId);
|
for(PLTabPage plTabPage : pltabPages){
|
PLPageDefination[] obj = UITools.getService().getPLPageDefinationsByPageContextOId(plTabPage.plOId);
|
for(PLPageDefination plpagedefination : obj){
|
PLTabButton[] o = UITools.getService().getPLTabButtonsByTableOId(plpagedefination.plOId);
|
for(int i=0;i<o.length;i++){
|
PLCommandParameter[] plcommandparameters = UITools.getService()
|
.getPLCommandParametersByCommandOId(o[i].plOId);
|
for(PLCommandParameter plCommandParameter : plcommandparameters){
|
UITools.getService().deletePLCommandParameter(plCommandParameter);
|
}
|
UITools.getService().deletePLTabButton(o[i]);
|
}
|
UITools.getService().deletePLPageDefination(plpagedefination);
|
}
|
UITools.getService().deletePLTabPage(plTabPage);
|
}
|
boolean flag = UITools.getService().deletePLUILayout(plpagelayoutdefination);
|
VCIOptionPane.showMessage(LogonApplication.frame, "删除成功");
|
initData();
|
} catch (VCIError e) {
|
e.printStackTrace();
|
VCIOptionPane.showMessage(LogonApplication.frame, "删除失败");
|
return;
|
}
|
}
|
});
|
btnPanel.add(relatbutton);
|
}
|
btnPanel.add(btnTree);
|
}
|
{
|
btnForm = new JButton("控制区");
|
btnForm.addActionListener(new ActionListener() {
|
@Override
|
public void actionPerformed(ActionEvent arg0) {
|
if(uiFMangerTableModel.list.size()==0){
|
VCIOptionPane.showMessage(LogonApplication.frame, "请选择数据!");
|
return ;
|
}
|
int selectedRow = uifMangerTabel.getSelectedRow();
|
int selectedRowCount = uifMangerTabel.getSelectedRowCount();
|
if(selectedRowCount==0){
|
VCIOptionPane.showMessage(LogonApplication.frame, "请选择数据!");
|
return ;
|
}else if(selectedRowCount >1){
|
VCIOptionPane.showMessage(LogonApplication.frame, "一次只能选择一条数据进行此操作!");
|
return ;
|
}
|
int[] selectedRows = uifMangerTabel.getSelectedRows();
|
for(int j=0;j<selectedRows.length;j++){
|
selectedRows[j]=uifMangerTabel.convertRowIndexToModel(selectedRows[j]);
|
PLUILayout plpagelayoutdefination = (PLUILayout) uiFMangerTableModel.getValueAt(selectedRows[j]).getObj();
|
if(plpagelayoutdefination.plIsShowForm == 0){
|
VCIOptionPane.showMessage(LogonApplication.frame, "该上下没有配置显示‘控制区’!");
|
return;
|
}
|
TabMainDiaolg dialog = new TabMainDiaolg(plpagelayoutdefination,btname, (short)2);
|
dialog.dispose();
|
}
|
}
|
});
|
btnPanel.add(btnForm);
|
}
|
btnPanel.add(btntab);
|
delBtn.setText("删除");
|
{
|
clonebtn = new JButton("克隆");
|
clonebtn.addActionListener(new ActionListener() {
|
@Override
|
public void actionPerformed(ActionEvent arg0) {
|
int row = uifMangerTabel.getSelectedRow(); //选中数据的索引
|
int selectedRowCount = uifMangerTabel.getSelectedRowCount();//选中的数据条数
|
if(selectedRowCount==0){
|
VCIOptionPane.showMessage(LogonApplication.frame, "请选择数据!");
|
return;
|
}
|
if(selectedRowCount > 1){
|
VCIOptionPane.showMessage(LogonApplication.frame, "一次只能选择一条数据进行此操作!");
|
return;
|
}
|
// int aa = uifMangerTabel.convertRowIndexToModel(row);
|
// PLUILayout plpagelayoutdefination = (PLUILayout) uiFMangerTableModel.getValueAt(aa).getObj();
|
// CloneDialog dialog = new CloneDialog(btTree,plpagelayoutdefination);
|
if(enableSort && tableSorter != null){
|
row = tableSorter.convertRowIndexToModel(row);
|
}
|
VCIBaseTableNode rowNode = uiFMangerTableModel.getValueAt(row);
|
PLUILayout pld = (PLUILayout) rowNode.getObj();
|
CloneDialog dialog = new CloneDialog(btTree, pld);
|
dialog.setVisible(true);
|
initData();
|
// initTreeNode();
|
//uifMangerTabel.setRowSelectionInterval(row, row);
|
}
|
});
|
btnPanel.add(clonebtn);
|
}
|
{
|
expBtn = new JButton("导出");
|
expBtn.addActionListener(new ActionListener() {
|
@Override
|
public void actionPerformed(ActionEvent arg0) {
|
TreePath path = btTree.getSelectionPath();
|
String message = "请选择业务类型!";
|
if(path ==null){
|
VCIOptionPane.showMessage(LogonApplication.frame, message);
|
return ;
|
}
|
VCIBaseTreeNode node = (VCIBaseTreeNode) path.getLastPathComponent();
|
if(node.getObj()==null){
|
VCIOptionPane.showMessage(LogonApplication.frame, message);
|
return ;
|
}
|
if(node.getObj() instanceof String){
|
VCIOptionPane.showMessage(LogonApplication.frame, message);
|
return ;
|
}
|
BtmItem obj = (BtmItem) node.getObj();
|
|
PLUILayout[] contexts = null;
|
int[] rows = uifMangerTabel.getSelectedRows();
|
if(rows == null || rows.length <= 0){
|
VCIOptionPane.showMessage(LogonApplication.frame, "请选择上下文!");
|
return;
|
}
|
contexts = new PLUILayout[rows.length];
|
for (int i = 0; i < rows.length; i++) {
|
int row = rows[i];
|
if(enableSort && tableSorter != null){
|
int modelRow = tableSorter.convertRowIndexToModel(row);
|
if(modelRow < uiFMangerTableModel.getRowCount()){
|
row = modelRow;
|
}
|
}
|
VCIBaseTableNode rowNode = uiFMangerTableModel.getValueAt(row);
|
contexts[i] = (PLUILayout) rowNode.getObj();
|
}
|
|
ExpDialog dialog = new ExpDialog(obj, contexts);
|
dialog.setVisible(true);
|
}
|
});
|
btnPanel.add(expBtn);
|
}
|
{
|
impBtn = new JButton("导入");
|
impBtn.addActionListener(new ActionListener() {
|
@Override
|
public void actionPerformed(ActionEvent arg0) {
|
TreePath path = btTree.getSelectionPath();
|
String message = "请选择业务类型!";
|
if(path ==null){
|
VCIOptionPane.showMessage(LogonApplication.frame, message);
|
return ;
|
}
|
VCIBaseTreeNode node = (VCIBaseTreeNode) path.getLastPathComponent();
|
if(node.getObj()==null){
|
VCIOptionPane.showMessage(LogonApplication.frame, message);
|
return ;
|
}
|
if(node.getObj() instanceof String){
|
VCIOptionPane.showMessage(LogonApplication.frame, message);
|
return ;
|
}
|
BtmItem obj = (BtmItem) node.getObj();
|
ImportExcel imp = new ImportExcel(obj);
|
if(imp.impExcel()){
|
VCIOptionPane.showMessage(LogonApplication.frame, "导入成功");
|
initData();
|
}
|
}
|
});
|
btnPanel.add(impBtn);
|
}
|
//add start by lmh20151229,在UI定义增加对单独业务类型的UI功能模块授权
|
{
|
grandBtn = new JButton("授权");
|
grandBtn.addActionListener(new ActionListener() {
|
@Override
|
public void actionPerformed(ActionEvent arg0) {
|
showGrantDialog(false);
|
}
|
|
});
|
btnPanel.add(grandBtn);
|
}
|
//add end
|
|
{
|
grandBtnBySelected = new JButton("授权(基于选定的上下文)");
|
grandBtnBySelected.addActionListener(new ActionListener() {
|
@Override
|
public void actionPerformed(ActionEvent arg0) {
|
showGrantDialog(true);
|
}
|
|
});
|
btnPanel.add(grandBtnBySelected);
|
}
|
delBtn.addActionListener(new ActionListener() {
|
|
@Override
|
public void actionPerformed(ActionEvent arg0) {
|
if(uiFMangerTableModel.list.size()==0){
|
VCIOptionPane.showMessage(LogonApplication.frame, "请选择删除的数据!");
|
return ;
|
}
|
int selectedRow = uifMangerTabel.getSelectedRow();
|
int selectedRowCount = uifMangerTabel.getSelectedRowCount();
|
if(selectedRowCount==0){
|
VCIOptionPane.showMessage(LogonApplication.frame, "请选择删除的数据!");
|
return ;
|
}
|
/*if (VCIOptionPane.showQuestion(LogonApplication.frame,
|
"确定要删除记录吗?") != 0) {
|
return;
|
}*/
|
selectedRow=uifMangerTabel.convertRowIndexToModel(selectedRow);
|
PLUILayout plpagelayoutdefination = (PLUILayout) uiFMangerTableModel.getValueAt(selectedRow).getObj();
|
Object[] options = { "Yes", "No" };
|
int option = JOptionPane
|
.showOptionDialog(LogonApplication.frame, "确认是否删除ui定义\""
|
+ plpagelayoutdefination.plName + "\"", "ui定义删除",
|
JOptionPane.YES_NO_OPTION,
|
JOptionPane.QUESTION_MESSAGE, null, options,
|
options[1]);
|
if(option != JOptionPane.YES_OPTION){
|
return;
|
}
|
//
|
if(check(plpagelayoutdefination)){
|
VCIOptionPane.showMessage(LogonApplication.frame, "包含子数据,不能删除!");
|
return;
|
}
|
try {
|
boolean flag = UITools.getService().deletePLUILayout(plpagelayoutdefination);
|
VCIOptionPane.showMessage(LogonApplication.frame, "删除成功");
|
} catch (VCIError e) {
|
e.printStackTrace();
|
VCIOptionPane.showMessage(LogonApplication.frame, "删除失败");
|
}
|
initData();
|
}
|
});
|
}
|
|
|
}
|
|
}
|
{
|
tablePanel = new JPanel();
|
BorderLayout tablePanelLayout = new BorderLayout();
|
contentPanel.add(tablePanel, BorderLayout.CENTER);
|
tablePanel.setLayout(tablePanelLayout);
|
{
|
initTable();
|
}
|
}
|
}
|
}
|
}
|
} catch(Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
private void showGrantDialog(boolean fromSelected){
|
TreePath path = btTree.getSelectionPath();
|
String message = "请选择业务类型!";
|
if(path ==null){
|
VCIOptionPane.showMessage(LogonApplication.frame, message);
|
return ;
|
}
|
VCIBaseTreeNode node = (VCIBaseTreeNode) path.getLastPathComponent();
|
if(node.getObj()==null){
|
VCIOptionPane.showMessage(LogonApplication.frame, message);
|
return ;
|
}
|
if(node.getObj() instanceof String){
|
VCIOptionPane.showMessage(LogonApplication.frame, message);
|
return ;
|
}
|
final BtmItem obj = (BtmItem) node.getObj();
|
|
final PLUILayout[] allContexts = new PLUILayout[this.uifMangerTabel.getRowCount()];
|
for (int i = 0; i < allContexts.length; i++) {
|
int row = i;
|
if(this.enableSort && this.tableSorter != null){
|
int modelRow = this.tableSorter.convertRowIndexToModel(row);
|
if(modelRow < this.uiFMangerTableModel.getRowCount()){
|
row = modelRow;
|
}
|
}
|
VCIBaseTableNode rowNode = this.uiFMangerTableModel.getValueAt(row);
|
allContexts[i] = (PLUILayout) rowNode.getObj();
|
}
|
|
PLUILayout[] contexts = null;
|
if(fromSelected){
|
int[] rows = this.uifMangerTabel.getSelectedRows();
|
if(rows == null || rows.length <= 0){
|
VCIOptionPane.showMessage(LogonApplication.frame, "请选择上下文!");
|
return;
|
}
|
contexts = new PLUILayout[rows.length];
|
for (int i = 0; i < rows.length; i++) {
|
int row = rows[i];
|
if(this.enableSort && this.tableSorter != null){
|
int modelRow = this.tableSorter.convertRowIndexToModel(row);
|
if(modelRow < this.uiFMangerTableModel.getRowCount()){
|
row = modelRow;
|
}
|
}
|
VCIBaseTableNode rowNode = this.uiFMangerTableModel.getValueAt(row);
|
contexts[i] = (PLUILayout) rowNode.getObj();
|
}
|
} else {
|
contexts = allContexts;
|
}
|
|
final PLUILayout[] contextsx = contexts;
|
final QANProcessBarFrame frame = new QANProcessBarFrame();
|
final QANProcessBar bar = new QANProcessBar(new Thread(new Runnable() {
|
@Override
|
public void run() {
|
try{
|
frame.setContent("正在构建UI授权界面,请稍等...");
|
VCIGrandUIDialog dialog = new VCIGrandUIDialog(obj, funcObj, contextsx, allContexts);
|
frame.setContent("");
|
frame.setProcessBarCancel(true);
|
dialog.setLocationAndSize();
|
} finally{
|
frame.setProcessBarCancel(true);
|
}
|
}
|
}){}, (JFrame) LogonApplication.frame, frame, "", false);
|
String title = "UI授权";
|
frame.setTitle(title);
|
bar.setTitle(title);
|
bar.setVisible(true);
|
}
|
|
private void initTable() {
|
if(uifMangerTablePanel!=null){
|
tablePanel.remove(uifMangerTablePanel);
|
}
|
uifMangerTablePanel = new JPanel();
|
tablePanel.add(uifMangerTablePanel, BorderLayout.CENTER);
|
{
|
jScrollPane = new JScrollPane();
|
uifMangerTablePanel.setLayout(new BorderLayout());
|
uifMangerTablePanel.add(jScrollPane);
|
{
|
uiFMangerTableModel = new VCIBaseTableModel(columnHeaders,types);
|
uifMangerTabel = new JTable();
|
jScrollPane.setViewportView(uifMangerTabel);
|
uifMangerTabel.setModel(uiFMangerTableModel);
|
|
if(this.enableSort){
|
tableSorter = new TableRowSorter<TableModel>(uiFMangerTableModel);
|
uifMangerTabel.setRowSorter(tableSorter);
|
}
|
}
|
}
|
}
|
|
|
|
//设置JTable斑马线效果
|
public void setBanMaXian(JTable table)
|
{
|
//斑马线设置
|
DefaultTableCellRenderer d = new DefaultTableCellRenderer()
|
{//需要重写类中的getTableCellRendererComponent的方法
|
@Override
|
public Component getTableCellRendererComponent(JTable table,
|
Object value, boolean isSelected, boolean hasFocus,
|
int row, int column)
|
{
|
if(row % 2 == 0)//JTable中的奇数行
|
{
|
setBackground(Color.WHITE);
|
}
|
else//JTable中的偶数行
|
{
|
setBackground(Color.LIGHT_GRAY);
|
}
|
return super.getTableCellRendererComponent(table, value, isSelected, hasFocus,
|
row, column);
|
}
|
};
|
for(int i = 0; i< table.getColumnCount();i++)
|
{
|
TableColumn col = table.getColumn(table.getColumnName(i));
|
col.setCellRenderer(d);//将斑马线对象放置到表格中
|
}
|
}
|
private PLUILayout[] getSortedContexts(PLUILayout[] contexts){
|
Arrays.sort(contexts, new Comparator<PLUILayout>(){
|
@Override
|
public int compare(PLUILayout o1,
|
PLUILayout o2) {
|
return o1.plName.compareTo(o2.plName);
|
}
|
});
|
return contexts;
|
}
|
private void initData(){
|
uiFMangerTableModel.list.clear();
|
TreePath path = btTree.getSelectionPath();
|
if(path == null) return;
|
VCIBaseTreeNode node = (VCIBaseTreeNode) path.getLastPathComponent();
|
if(node.getObj() instanceof BtmItem){
|
BtmItem obj = (BtmItem) node.getObj();
|
btname = obj.name;
|
lefTtextField.setText(btname);
|
uiFMangerTableModel= (VCIBaseTableModel) uifMangerTabel.getModel();
|
VCIBaseTableNode vciBaseTableNode = null;
|
try {
|
PLUILayout[] plpagelayoutdefinations = UITools.getService().getPLUILayoutsByRelatedType(btname);
|
plpagelayoutdefinations = getSortedContexts(plpagelayoutdefinations);
|
int length = plpagelayoutdefinations.length;
|
for(int i =0;i<length;i++){
|
vciBaseTableNode = new VCIBaseTableNode(plpagelayoutdefinations[i]);
|
vciBaseTableNode.setPropertyValueByName(uifMangerTabel.getColumnName(0), plpagelayoutdefinations[i].plName);
|
vciBaseTableNode.setPropertyValueByName(uifMangerTabel.getColumnName(1), plpagelayoutdefinations[i].plCode);
|
uiFMangerTableModel.addRow(i, vciBaseTableNode);
|
}
|
uiFMangerTableModel.fireTableDataChanged();
|
uifMangerTabel.setModel(uiFMangerTableModel);
|
setBanMaXian(uifMangerTabel);
|
uifMangerTabel.updateUI();
|
} catch (VCIError e) {
|
e.printStackTrace();
|
}
|
}else{
|
uifMangerTabel.setModel(uiFMangerTableModel);
|
uifMangerTabel.updateUI();
|
}
|
}
|
private DefaultTreeModel createTreeModel() throws VCIError {
|
BtmItem[] allBtItems = BtmProvider.getInstance().getAllBtmItems();
|
VCIBaseTreeNode rootNode = new VCIBaseTreeNode("业务类型树","root");
|
VCIBaseTreeModel treeModel = new VCIBaseTreeModel(rootNode);
|
for(int i=0;i<allBtItems.length;i++){
|
VCIBaseTreeNode node = new VCIBaseTreeNode(allBtItems[i].name,allBtItems[i]);
|
treeModel.insertNodeInto(node, rootNode, rootNode.getChildCount());
|
}
|
return new DefaultTreeModel(rootNode);
|
}
|
|
private boolean check(PLUILayout plpagelayoutdefination){
|
boolean flag = false;
|
try {
|
PLPageDefination[] obj = UITools.getService().getPLPageDefinationsByPageContextOId(plpagelayoutdefination.plOId);
|
PLTabPage[] pltabPage = UITools.getService().getPLTabPagesByPageDefinationOId(plpagelayoutdefination.plOId);
|
if(obj.length>0||pltabPage.length>0){
|
flag = true;
|
}
|
} catch (VCIError e) {
|
e.printStackTrace();
|
}
|
return flag;
|
}
|
//右边的业务类型的详细显示add by guo
|
private void chaxun1() {
|
uiFMangerTableModel.list.clear();
|
TreePath path = btTree.getSelectionPath();
|
if(path == null) return;
|
VCIBaseTreeNode node = (VCIBaseTreeNode) path.getLastPathComponent();
|
if(node.getObj() instanceof BtmItem){
|
BtmItem obj = (BtmItem) node.getObj();
|
btname = obj.name;
|
uiFMangerTableModel= (VCIBaseTableModel) uifMangerTabel.getModel();
|
VCIBaseTableNode vciBaseTableNode = null;
|
try {
|
PLUILayout[] plpagelayoutdefinations = UITools.getService().getPLUILayoutsByRelatedType(btname);
|
int length = plpagelayoutdefinations.length;
|
if(!chaxunByName.getText().equals("") && chaxunByshangxiawen.getText().equals("")){
|
for(int i =0;i<length;i++){
|
if(plpagelayoutdefinations[i].plName.contains(chaxunByName.getText())){
|
vciBaseTableNode = new VCIBaseTableNode(plpagelayoutdefinations[i]);
|
vciBaseTableNode.setPropertyValueByName(uifMangerTabel.getColumnName(0), plpagelayoutdefinations[i].plName);
|
vciBaseTableNode.setPropertyValueByName(uifMangerTabel.getColumnName(1), plpagelayoutdefinations[i].plCode);
|
uiFMangerTableModel.addRow(i, vciBaseTableNode);
|
}
|
}
|
}else if(chaxunByName.getText().equals("") && !chaxunByshangxiawen.getText().equals("")){
|
for(int i =0;i<length;i++){
|
if(plpagelayoutdefinations[i].plCode.contains(chaxunByshangxiawen.getText())){
|
vciBaseTableNode = new VCIBaseTableNode(plpagelayoutdefinations[i]);
|
vciBaseTableNode.setPropertyValueByName(uifMangerTabel.getColumnName(0), plpagelayoutdefinations[i].plName);
|
vciBaseTableNode.setPropertyValueByName(uifMangerTabel.getColumnName(1), plpagelayoutdefinations[i].plCode);
|
uiFMangerTableModel.addRow(i, vciBaseTableNode);
|
}
|
}
|
}else if(!chaxunByName.getText().equals("") && !chaxunByshangxiawen.getText().equals("")){
|
for(int i =0;i<length;i++){
|
if(plpagelayoutdefinations[i].plName.contains(chaxunByName.getText()) && plpagelayoutdefinations[i].plCode.contains(chaxunByshangxiawen.getText()) ){
|
vciBaseTableNode = new VCIBaseTableNode(plpagelayoutdefinations[i]);
|
vciBaseTableNode.setPropertyValueByName(uifMangerTabel.getColumnName(0), plpagelayoutdefinations[i].plName);
|
vciBaseTableNode.setPropertyValueByName(uifMangerTabel.getColumnName(1), plpagelayoutdefinations[i].plCode);
|
uiFMangerTableModel.addRow(i, vciBaseTableNode);
|
}
|
}
|
}else {
|
for(int i =0;i<length;i++){
|
vciBaseTableNode = new VCIBaseTableNode(plpagelayoutdefinations[i]);
|
vciBaseTableNode.setPropertyValueByName(uifMangerTabel.getColumnName(0), plpagelayoutdefinations[i].plName);
|
vciBaseTableNode.setPropertyValueByName(uifMangerTabel.getColumnName(1), plpagelayoutdefinations[i].plCode);
|
uiFMangerTableModel.addRow(i, vciBaseTableNode);
|
}
|
}
|
uiFMangerTableModel.fireTableDataChanged();
|
uifMangerTabel.setModel(uiFMangerTableModel);
|
setBanMaXian(uifMangerTabel);
|
uifMangerTabel.updateUI();
|
|
} catch (VCIError e) {
|
e.printStackTrace();
|
}
|
}else{
|
uifMangerTabel.setModel(uiFMangerTableModel);
|
uifMangerTabel.updateUI();
|
}
|
|
}
|
|
//左边的节点的查询显示add by guo
|
private void chaxun2() {
|
// TODO Auto-generated method stub
|
String test = lefTtextField.getText().trim();
|
DefaultTreeModel model = (DefaultTreeModel) btTree.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 String) {
|
String wrapper = (String) element
|
.getUserObject();
|
if (wrapper != null
|
&& wrapper.equals(test)) {
|
TreeNode[] path = element.getPath();
|
TreePath treePath = new TreePath(path);
|
btTree.setSelectionPath(treePath);
|
initData();
|
return;
|
};
|
}
|
} if (test.equals("")) {
|
JOptionPane.showMessageDialog(this, "业务类型名不能为空,请填写正确的业务类型名!" , "提示", JOptionPane.INFORMATION_MESSAGE);
|
} else {
|
JOptionPane.showMessageDialog(this, "业务类型不存在,请检查!" , "提示", JOptionPane.INFORMATION_MESSAGE);
|
}
|
}
|
}
|