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.EventListenerList; import com.vci.client.portal.UI.TabDialog; 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.corba.common.VCIError; import com.vci.corba.omd.btm.BtmItem; import com.vci.corba.portal.data.PLUILayout; import com.vci.corba.portal.data.PLTabPage; import com.vci.mw.ClientContextVariable; /** * 上下文的页签Panel * *

Title:

*

Description:

*

Copyright: Copyright (c) 2016

*

Company: VCI

* @author xiongchao * @time 2017-2-16 * @version 1.0 */ public class TabPagePanel extends VCIJPanel { /** * */ private static final long serialVersionUID = -5793508549754292664L; private BtmItem btmItem = null; private PLUILayout pageLayoutDefination = null; private short areaType = -1; public TabPagePanel(){ } public void refreshUI(){ refreshUI(null); } private void refreshUI(ActionEvent e){ if(tablePanel != null){ tablePanel.getTableModel().clear(); tablePanel.getTableModel().fireTableDataChanged(); tablePanel.refreshTableData(); } notifyTablePanelDataChange(e); } public void buildUI(){ init(); } private void init(){ setLayout(new BorderLayout()); add(getCenterTablePanel(), BorderLayout.CENTER); } private Comparator tabPageComparator = new Comparator() { @Override public int compare(PLTabPage o1, PLTabPage o2) { return new Integer(o1.plSeq).compareTo(new Integer(o2.plSeq)); } }; private VCIJTableDataProvider dataProvider = null; private VCIJTablePanel tablePanel = null; private VCIJTablePanel getCenterTablePanel(){ dataProvider = new AbstractVCIJTableDataProvider() { @Override public String[] getSpecialColumns() { return new String[]{"序号","编码","名称","是否启用","显示表达式","UI解析类","扩展属性","描述"}; } @Override public int getTotal() { return super.total; } @Override public VCIJTableNode getNewRowNode(PLTabPage dataObj) { VCIJTableNode dataNode = new VCIJTableNode(dataObj); int i = 0; String[] columns = getSpecialColumns(); dataNode.setPropertyValue(columns[i++], dataObj.plSeq); dataNode.setPropertyValue(columns[i++], dataObj.plCode); dataNode.setPropertyValue(columns[i++], dataObj.plName); dataNode.setPropertyValue(columns[i++], 1 == dataObj.plIsOpen ? "启用" : "未启用"); dataNode.setPropertyValue(columns[i++], dataObj.plOpenExpression); dataNode.setPropertyValue(columns[i++], dataObj.plUIParser); dataNode.setPropertyValue(columns[i++], dataObj.plExtAttr); dataNode.setPropertyValue(columns[i++], dataObj.plDesc); return dataNode; } @Override public PLTabPage[] getDatas(int pageIndex, int pageSize) { PLTabPage[] res = new PLTabPage[0]; PLUILayout pld = getPageLayoutDefination(); if(pld == null) return res; try { res = UITools.getService().getTabPagesByContextIdAndType( pld.plOId, getAreaType()); } catch (VCIError e) { e.printStackTrace(); } super.total = res.length; Arrays.sort(res, tabPageComparator); return res; } }; tablePanel = new VCIJTablePanel(dataProvider); tablePanel.setShowRowNumber(false); HashMap columnWidthMaps = new HashMap(); columnWidthMaps.put(2, 40); columnWidthMaps.put(4, 200); columnWidthMaps.put(5, 60); 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, btnCopy, btnPaste)); //tablePanel.setCustomButtons(Arrays.asList(btnAdd, btnEdit, btnDelete, btnRefresh, btnCopy, btnPaste,viewI18nButton)); tablePanel.buildTablePanel(); tablePanel.refreshTableData(); 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 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(getPageLayoutDefination() == null){ VCIJOptionPane.showMessage(ClientContextVariable.getFrame(), UIServiceLocaleDisplay.getIl18n("请先选择UI上下文!")); return; } TabDialog dialog = new TabDialog(getPageLayoutDefination(), false, null, getAreaType()); if(dialog.getDialogResult() == DialogResult.OK){ refreshUI(e); 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{ PLTabPage[] tabPages = tablePanel.getSelectedRowObjectsList().toArray(new PLTabPage[0]); if(!isSelected() || tabPages.length == 0){ VCIJOptionPane.showMessage(ClientContextVariable.getFrame(), UIServiceLocaleDisplay.getIl18n("common.msg.pleaseChooseData")); return; } if(tabPages.length >= 2){ VCIJOptionPane.showMessage(ClientContextVariable.getFrame(), UIServiceLocaleDisplay.getIl18n("common.msg.pleaseChooseData")); return; } TabDialog dialog = new TabDialog(getPageLayoutDefination(), true, tabPages[0], getAreaType()); if(dialog.getDialogResult() == DialogResult.OK){ refreshUI(e); dialog.dispose(); } }catch(Throwable ex){ ex.printStackTrace(); VCIJOptionPane.showMessage(ClientContextVariable.getFrame(), UIServiceLocaleDisplay.getIl18n("common.msg.executingHasError", getSourceButtonText(e), ex.toString())); return; } } private void delete_actionPerformed(ActionEvent e){ try { PLTabPage[] tabPages = tablePanel.getSelectedRowObjectsList().toArray(new PLTabPage[0]); if(!isSelected() || tabPages.length == 0){ VCIJOptionPane.showMessage(ClientContextVariable.getFrame(), UIServiceLocaleDisplay.getIl18n("common.msg.pleaseChooseData")); return; } int optRes = VCIJOptionPane.showConfirm(ClientContextVariable.getFrame(), UIServiceLocaleDisplay.getIl18n("common.msg.confirmDelete")); if(!(optRes == VCIJOptionPane.YES_OPTION)){ return; } //TODO String[] oids = new String[tabPages.length]; for (int i = 0; i < oids.length; i++) { oids[i] = tabPages[i].plOId; } UITools.getService().deletePLTabPageByOidsForCascade(oids); refreshUI(e); }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(e); } private void notifyTablePanelDataChange(ActionEvent e){ TabPageRefreshActionListener[] als = customEventListenerList.getListeners(TabPageRefreshActionListener.class); if(als != null){ for(TabPageRefreshActionListener al : als){ al.actionPerformed(e); } } } private void copy_actionPerformed(ActionEvent e){ try{ PLTabPage[] tabPages = tablePanel.getSelectedRowObjectsList().toArray(new PLTabPage[0]); if(!isSelected() || tabPages.length == 0){ VCIJOptionPane.showMessage(ClientContextVariable.getFrame(), UIServiceLocaleDisplay.getIl18n("common.msg.pleaseChooseData")); return; } String[] tabPageOids = new String[tabPages.length]; for (int i = 0; i < tabPageOids.length; i++) { tabPageOids[i] = tabPages[i].plOId; } UICopyClipboardUtil.addStringContent(tabPageOids); }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[] tabPageOids = UICopyClipboardUtil.getStringContents(); for(String tabPageOid : tabPageOids){ PLTabPage tp = UITools.getService().getPLTabPageById(tabPageOid); if(tp == null || "".equals(tp.plOId)){ VCIJOptionPane.showMessage(ClientContextVariable.getFrame(), UIServiceLocaleDisplay.getIl18n("剪贴板中数据无效,无法执行粘贴!")); return; } } // all is ok UITools.getService().copyTabPageToPageLayout(tabPageOids, getPageLayoutDefination(), getAreaType()); refreshUI(e); }catch(Throwable ex){ ex.printStackTrace(); VCIJOptionPane.showMessage(ClientContextVariable.getFrame(), UIServiceLocaleDisplay.getIl18n("common.msg.executingHasError", getSourceButtonText(e), ex.toString())); return; } } private String getSourceButtonText(ActionEvent e){ String res = "此操作"; if(e.getSource() instanceof VCIJButton){ res = ((VCIJButton)e.getSource()).getText(); } return res; } /** * *

国际化字典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); // } 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 short getAreaType() { return areaType; } public void setAreaType(short areaType) { this.areaType = areaType; } public VCIJTablePanel getTablePanel() { return tablePanel; } public void setTablePanel(VCIJTablePanel tablePanel) { this.tablePanel = tablePanel; } private EventListenerList customEventListenerList = new EventListenerList(); public void addRefreshUIActionListener(TabPageRefreshActionListener l){ customEventListenerList.add(TabPageRefreshActionListener.class, l); } }