package com.vci.client.portal.UI.v3;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import com.vci.client.portal.NewNewUI.buttonmng.ButtonSettingDialog;
import com.vci.client.portal.UI.v3.comptdesign.UIComptDesignDialog;
import com.vci.client.portal.utility.PLDefination;
import com.vci.client.portal.utility.UIServiceLocaleDisplay;
import com.vci.client.portal.utility.UITools;
import com.vci.client.ui.swing.VCISwingUtil;
import com.vci.client.ui.swing.components.VCIJButton;
import com.vci.client.ui.swing.components.VCIJOptionPane;
import com.vci.client.ui.swing.components.VCIJPanel;
import com.vci.client.ui.swing.components.VCIJDialog.DialogResult;
import com.vci.client.ui.swing.components.table.AbstractVCIJTableDataProvider;
import com.vci.client.ui.swing.components.table.VCIJTableDataProvider;
import com.vci.client.ui.swing.components.table.VCIJTableNode;
import com.vci.client.ui.swing.components.table.VCIJTablePanel;
import com.vci.common.portal.enums.ComponentType;
import com.vci.corba.common.VCIError;
import com.vci.corba.omd.btm.BtmItem;
import com.vci.corba.portal.data.PLPageDefination;
import com.vci.corba.portal.data.PLUILayout;
import com.vci.corba.portal.data.PLTabPage;
import com.vci.mw.ClientContextVariable;
/**
* 单一页签里的组件
*
*
Title:
* Description:
* Copyright: Copyright (c) 2016
* Company: VCI
* @author xiongchao
* @time 2017-2-16
* @version 1.0
*/
public class TabPageComptPanel extends VCIJPanel {
/**
*
*/
private static final long serialVersionUID = 5115706634662248470L;
private BtmItem btmItem = null;
private PLUILayout pageLayoutDefination = null;
private PLTabPage tabPage = null;
private int areaType = 1;
public TabPageComptPanel(){
}
public void refreshUI(){
tablePanel.refreshTableData();
}
public void clearUI(){
if(tablePanel != null){
tablePanel.getTable().getSelectionModel().clearSelection();
tablePanel.getTableModel().clear();
tablePanel.getTableModel().fireTableDataChanged();
}
}
public void buildUI(){
init();
}
private void init(){
setLayout(new BorderLayout());
add(getCenterTablePanel(), BorderLayout.CENTER);
}
private Comparator pageDefinationComparator = new Comparator() {
@Override
public int compare(PLPageDefination o1, PLPageDefination o2) {
return new Integer(o1.seq).compareTo(new Integer(o2.seq));
}
};
private final String SEARCH_TYPE_BTMTYPE = " 本对象属性";
private final String SEARCH_TYPE_LINKTYPE = "关联对象属性";
private VCIJTableDataProvider dataProvider = null;
private VCIJTablePanel tablePanel = null;
private VCIJTablePanel getCenterTablePanel(){
dataProvider = new AbstractVCIJTableDataProvider() {
@Override
public String[] getSpecialColumns() {
return new String[]{"编号","名称","类型","搜索类型","描述"};
}
@Override
public int getTotal() {
return super.total;
}
@Override
public VCIJTableNode getNewRowNode(PLPageDefination dataObj) {
VCIJTableNode dataNode = new VCIJTableNode(dataObj);
int i = 0;
String[] columns = getSpecialColumns();
dataNode.setPropertyValue(columns[i++], dataObj.seq);
dataNode.setPropertyValue(columns[i++], dataObj.name);
String comptTypeString = "";
String searchTypeString = "";
try {
PLDefination d = UITools.getPLDefination(dataObj.plDefination);
ComponentType comptType = ComponentType.getByVal(Integer.valueOf(d.getTemplateType()));
comptTypeString = comptType.getLabel() + "(" + comptType.getIntVal() + ")";
String searchType = d.getSearchTarger();
if(comptType == ComponentType.Table
|| comptType == ComponentType.TreeTable
|| comptType == ComponentType.Form
){
if("1".equals(searchType)){
searchTypeString = SEARCH_TYPE_BTMTYPE;
} else if("2".equals(searchType)){
searchTypeString = SEARCH_TYPE_LINKTYPE;
}
}
else if(comptType == ComponentType.Tree){
if("".equals(d.getLinkType())){
searchTypeString = SEARCH_TYPE_BTMTYPE;
} else {
searchTypeString = SEARCH_TYPE_LINKTYPE;
}
}
} catch (Throwable e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
dataNode.setPropertyValue(columns[i++], comptTypeString);
dataNode.setPropertyValue(columns[i++], searchTypeString);
dataNode.setPropertyValue(columns[i++], dataObj.desc);
return dataNode;
}
@Override
public PLPageDefination[] getDatas(int pageIndex, int pageSize) {
PLTabPage tabPage = getTabPage();
PLPageDefination[] res = new PLPageDefination[0];
if(tabPage == null) return res;
try {
res = UITools.getService().getPLPageDefinationsByPageContextOId(tabPage.plOId);
} catch (VCIError e) {
e.printStackTrace();
}
super.total = res.length;
Arrays.sort(res, pageDefinationComparator);
return res;
}
};
tablePanel = new VCIJTablePanel(dataProvider);
tablePanel.setShowRowNumber(false);
HashMap columnWidthMaps = new HashMap();
columnWidthMaps.put(2, 40);
columnWidthMaps.put(3, 200);
columnWidthMaps.put(4, 60);
columnWidthMaps.put(5, 80);
tablePanel.setColumnWidthMaps(columnWidthMaps);
tablePanel.setShowExport(false);
tablePanel.setShowPaging(false);
tablePanel.setColumnDefaultWidth(new Integer(150));
tablePanel.setCustomButtonFlowAlign(FlowLayout.CENTER);
tablePanel.setCustomButtons(Arrays.asList(btnAdd, btnEdit, btnDelete, btnRefresh, btnBtnDef, btnCopy, btnPaste));
//tablePanel.setCustomButtons(Arrays.asList(btnAdd, btnEdit, btnDelete, btnRefresh, btnBtnDef, btnCopy, btnPaste,viewI18nButton));
tablePanel.buildTablePanel();
tablePanel.refreshTableData();
tablePanel.getTable().getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
}
});
return tablePanel;
}
private VCIJButton btnAdd = VCISwingUtil.createVCIJButton("add", "添加", "添加", "add.png", new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
add_actionPerformed(e);
}
});
private VCIJButton btnEdit = VCISwingUtil.createVCIJButton("edit", "修改", "修改", "edit.png", new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
edit_actionPerformed(e);
}
});
private VCIJButton btnDelete = VCISwingUtil.createVCIJButton("del", "删除", "删除", "delete.png", new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
delete_actionPerformed(e);
}
});
private VCIJButton btnRefresh = VCISwingUtil.createVCIJButton("refresh", "刷新", "刷新", "sync.gif", new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
refresh_actionPerformed(e);
}
});
private VCIJButton btnBtnDef = VCISwingUtil.createVCIJButton("btnDef", "按钮设计", "按钮设计", "table_key.png", new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
btnDef_actionPerformed(e);
}
});
private VCIJButton btnCopy = VCISwingUtil.createVCIJButton("copy", "复制", "复制", "copy.gif", new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
copy_actionPerformed(e);
}
});
private VCIJButton btnPaste = VCISwingUtil.createVCIJButton("paste", "粘贴", "粘贴", "paste.gif", new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
paste_actionPerformed(e);
}
});
// private VCIJButton viewI18nButton = VCISwingUtil.createVCIJButton("viewI18nButton", "查看国际化字典", "查看国际化字典", "image.png", new ActionListener() {
// @Override
// public void actionPerformed(ActionEvent e) {
// i18nTable();
// }
// });
private boolean isSelected(){
return tablePanel.getTable().getSelectedRow() >= 0;
}
private void add_actionPerformed(ActionEvent e){
try{
if(getTabPage() == null){
VCIJOptionPane.showMessage(ClientContextVariable.getFrame(),
UIServiceLocaleDisplay.getIl18n("请先选择UI上下文及区域里的页签!"));
return;
}
UIComptDesignDialog dialog = showAddOrEditDiaolg(null);
if(dialog.getDialogResult() == DialogResult.OK){
refreshUI();
dialog.dispose();
}
}catch(Throwable ex){
ex.printStackTrace();
VCIJOptionPane.showMessage(ClientContextVariable.getFrame(),
UIServiceLocaleDisplay.getIl18n("common.msg.executingHasError",
getSourceButtonText(e), ex.toString()));
return;
}
}
private void edit_actionPerformed(ActionEvent e){
try{
PLPageDefination[] pageDefs = tablePanel.getSelectedRowObjectsList().toArray(new PLPageDefination[0]);
if(!isSelected() || pageDefs.length == 0){
VCIJOptionPane.showMessage(ClientContextVariable.getFrame(),
UIServiceLocaleDisplay.getIl18n("common.msg.pleaseChooseData"));
return;
}
if(pageDefs.length >= 2){
VCIJOptionPane.showMessage(ClientContextVariable.getFrame(),
UIServiceLocaleDisplay.getIl18n("common.msg.onlyChooseOneDataToSomeOpt"));
return;
}
UIComptDesignDialog dialog = showAddOrEditDiaolg(pageDefs[0]);
if(dialog.getDialogResult() == DialogResult.OK){
refreshUI();
dialog.dispose();
}
}catch(Throwable ex){
ex.printStackTrace();
VCIJOptionPane.showMessage(ClientContextVariable.getFrame(),
UIServiceLocaleDisplay.getIl18n("common.msg.executingHasError",
getSourceButtonText(e), ex.toString()));
return;
}
}
private UIComptDesignDialog showAddOrEditDiaolg(PLPageDefination pageDefination){
UIComptDesignDialog dialog = new UIComptDesignDialog(ClientContextVariable.getFrame(), true);
dialog.setTabPage(getTabPage());
dialog.setPageDefination(pageDefination);
dialog.setWidth(750);
dialog.setHeight(750);
dialog.setTitle("页面设计窗口");
dialog.setRelativeToCompt(ClientContextVariable.getFrame());
dialog.buildDialog();
dialog.setVisible(true);
return dialog;
}
private void delete_actionPerformed(ActionEvent e){
try{
PLPageDefination[] pageDefs = tablePanel.getSelectedRowObjectsList().toArray(new PLPageDefination[0]);
if(!isSelected() || pageDefs.length == 0){
VCIJOptionPane.showMessage(ClientContextVariable.getFrame(),
UIServiceLocaleDisplay.getIl18n("common.msg.pleaseChooseData"));
return;
}
//TODO
int optRes = VCIJOptionPane.showConfirm(ClientContextVariable.getFrame(),
UIServiceLocaleDisplay.getIl18n("common.msg.confirmDelete"));
if(!(optRes == VCIJOptionPane.YES_OPTION)){
return;
}
String[] oids = new String[pageDefs.length];
for (int i = 0; i < oids.length; i++) {
oids[i] = pageDefs[i].plOId;
}
UITools.getService().deletePLPageDefinationByOidsForCascade(oids);
refreshUI();
}catch(Throwable ex){
ex.printStackTrace();
VCIJOptionPane.showMessage(ClientContextVariable.getFrame(),
UIServiceLocaleDisplay.getIl18n("common.msg.executingHasError",
getSourceButtonText(e), ex.toString()));
return;
}
}
private void refresh_actionPerformed(ActionEvent e){
refreshUI();
}
private void btnDef_actionPerformed(ActionEvent e){
try{
PLPageDefination[] pageDefs = tablePanel.getSelectedRowObjectsList().toArray(new PLPageDefination[0]);
if(!isSelected() || pageDefs.length == 0){
VCIJOptionPane.showMessage(ClientContextVariable.getFrame(),
UIServiceLocaleDisplay.getIl18n("common.msg.pleaseChooseData"));
return;
}
if(pageDefs.length >= 2){
VCIJOptionPane.showMessage(ClientContextVariable.getFrame(), "一次只能选择一条数据进行此操作!");
return;
}
ButtonSettingDialog dialog = new ButtonSettingDialog(
ClientContextVariable.getFrame(),
pageDefs[0], getPageLayoutDefination(), "tab");
refreshUI();
dialog.dispose();
}catch(Throwable ex){
ex.printStackTrace();
VCIJOptionPane.showMessage(ClientContextVariable.getFrame(),
UIServiceLocaleDisplay.getIl18n("common.msg.executingHasError",
getSourceButtonText(e), ex.toString()));
return;
}
}
private void copy_actionPerformed(ActionEvent e){
try{
PLPageDefination[] pageDefs = tablePanel.getSelectedRowObjectsList().toArray(new PLPageDefination[0]);
if(!isSelected() || pageDefs.length == 0){
VCIJOptionPane.showMessage(ClientContextVariable.getFrame(), "请选择数据后再进行此操作!");
return;
}
String[] pageDefOids = new String[pageDefs.length];
for (int i = 0; i < pageDefOids.length; i++) {
pageDefOids[i] = pageDefs[i].plOId;
}
UICopyClipboardUtil.addStringContent(pageDefOids);
}catch(Throwable ex){
ex.printStackTrace();
VCIJOptionPane.showMessage(ClientContextVariable.getFrame(),
UIServiceLocaleDisplay.getIl18n("common.msg.executingHasError",
getSourceButtonText(e), ex.toString()));
return;
}
}
private void paste_actionPerformed(ActionEvent e){
try {
String[] pageDefOids = UICopyClipboardUtil.getStringContents();
for(String pageDefOid : pageDefOids){
PLPageDefination pd = UITools.getService().getPLPageDefinationById(pageDefOid);
if(pd == null || "".equals(pd.plOId)){
VCIJOptionPane.showMessage(ClientContextVariable.getFrame(),
UIServiceLocaleDisplay.getIl18n("剪贴板中数据无效,无法执行粘贴!"));
return;
}
}
// all is ok
UITools.getService().copyComptToTabPage(pageDefOids, getTabPage());
refreshUI();
}catch(Throwable ex){
ex.printStackTrace();
VCIJOptionPane.showMessage(ClientContextVariable.getFrame(),
UIServiceLocaleDisplay.getIl18n("common.msg.executingHasError",
getSourceButtonText(e), ex.toString()));
return;
}
}
/**
*
* 国际化字典Dialog:
* @author yangyang
* @time 2017-10-31
*/
// private void i18nTable(){
// VciI18nTableDialog vi18n = new VciI18nTableDialog();
// vi18n.setModal(true);
// vi18n.init();
// vi18n.setSize(900,600);
// vi18n.setLocationRelativeTo(ClientContextVariable.getFrame());
// vi18n.setVisible(true);
// }
private String getSourceButtonText(ActionEvent e){
String res = "此操作";
if(e.getSource() instanceof VCIJButton){
res = ((VCIJButton)e.getSource()).getText();
}
return res;
}
public BtmItem getBtmItem() {
return btmItem;
}
public void setBtmItem(BtmItem btmItem) {
this.btmItem = btmItem;
}
public PLUILayout getPageLayoutDefination() {
return pageLayoutDefination;
}
public void setPageLayoutDefination(PLUILayout pageLayoutDefination) {
this.pageLayoutDefination = pageLayoutDefination;
}
public PLTabPage getTabPage() {
return tabPage;
}
public void setTabPage(PLTabPage tabPage) {
this.tabPage = tabPage;
}
public VCIJTablePanel getTablePanel() {
return tablePanel;
}
public void setTablePanel(VCIJTablePanel tablePanel) {
this.tablePanel = tablePanel;
}
public int getAreaType() {
return areaType;
}
public void setAreaType(int areaType) {
this.areaType = areaType;
}
}