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; } }