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
|
*
|
* <p>Title: </p>
|
* <p>Description: </p>
|
* <p>Copyright: Copyright (c) 2016</p>
|
* <p>Company: VCI</p>
|
* @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<PLTabPage> tabPageComparator = new Comparator<PLTabPage>() {
|
@Override
|
public int compare(PLTabPage o1, PLTabPage o2) {
|
return new Integer(o1.plSeq).compareTo(new Integer(o2.plSeq));
|
}
|
};
|
private VCIJTableDataProvider<PLTabPage> dataProvider = null;
|
private VCIJTablePanel<PLTabPage> tablePanel = null;
|
private VCIJTablePanel<PLTabPage> getCenterTablePanel(){
|
dataProvider = new AbstractVCIJTableDataProvider<PLTabPage>() {
|
@Override
|
public String[] getSpecialColumns() {
|
return new String[]{"序号","编码","名称","是否启用","显示表达式","UI解析类","扩展属性","描述"};
|
}
|
@Override
|
public int getTotal() {
|
return super.total;
|
}
|
@Override
|
public VCIJTableNode<PLTabPage> getNewRowNode(PLTabPage dataObj) {
|
VCIJTableNode<PLTabPage> dataNode = new VCIJTableNode<PLTabPage>(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<PLTabPage>(dataProvider);
|
tablePanel.setShowRowNumber(false);
|
HashMap<Integer, Integer> columnWidthMaps = new HashMap<Integer, Integer>();
|
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;
|
}
|
|
/**
|
*
|
* <p>国际化字典Dialog: </p>
|
* @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<PLTabPage> getTablePanel() {
|
return tablePanel;
|
}
|
public void setTablePanel(VCIJTablePanel<PLTabPage> tablePanel) {
|
this.tablePanel = tablePanel;
|
}
|
|
private EventListenerList customEventListenerList = new EventListenerList();
|
public void addRefreshUIActionListener(TabPageRefreshActionListener l){
|
customEventListenerList.add(TabPageRefreshActionListener.class, l);
|
}
|
}
|