package com.vci.client.uif.engine.client; import java.awt.BorderLayout; import java.awt.Component; import java.util.List; import java.util.Map; import com.vci.client.portal.utility.DataModelFactory; import com.vci.client.ui.swing.components.VCIJPanel; import com.vci.client.ui.swing.components.table.VCIJTablePanel; import com.vci.client.uif.engine.client.tableArea.TablePanelButtonAreaPanel; import com.vci.common.utility.ObjectUtility; import com.vci.corba.portal.data.PLPageDefination; import com.vci.corba.portal.data.PLTabPage; /** * 文件浏览窗口 * @author VCI-STGK006 * */ public class FilePanel extends AbstractRegionPanel { /** * */ private static final long serialVersionUID = -1614419631152531040L; /** * */ private DataModelFactory factory = new DataModelFactory(); /** * */ private FileTableDataProvider dataProvider = null; /** * 构造器 */ public FilePanel(){ //FilePanelModel.setRegionPanel(this); this.setDataModel(FilePanelModel); } @Override public void preInit(String type, String context){ super.preInit(type, context); } @Override public Component init() { setLayout(new BorderLayout(3, 3)); //窗口主面板 VCIJPanel palTableListArea = new VCIJPanel(); palTableListArea.setLayout(new BorderLayout(3, 3)); //按钮区 VCIJPanel palTitleAndBtn = new VCIJPanel(new BorderLayout()); VCIJPanel palButtonArea = initButtonArea(); palTitleAndBtn.add(UIHelper.getTitleBar("数据列表", "base.png"), BorderLayout.NORTH); palTitleAndBtn.add(palButtonArea, BorderLayout.CENTER); //文件列表区域表格 VCIJPanel jtablePanel = initJTablePanel(); //将文件按钮区和文件列表区添加到主面板 palTableListArea.add(palTitleAndBtn, BorderLayout.NORTH); palTableListArea.add(jtablePanel, BorderLayout.CENTER); add(palTableListArea, BorderLayout.CENTER); setComponentPanel(this); //设置为已经初始化 setBuilt(true); return this; } /** * 创建文件浏览窗口按钮 * @return */ private TablePanelButtonAreaPanel initButtonArea(){ TablePanelButtonAreaPanel palButtonArea = new TablePanelButtonAreaPanel(getTabId(), getType(), getContext(), getDefination(), getFactory(), this); palButtonArea.init(); return palButtonArea; } private VCIJTablePanel> dataTablePanel = null; private IUILayoutModel uiLayoutModel = null; private IDataModel FilePanelModel = new AbstractDataModel(){ private String key = ""; private Object clickObject = null; private IRegionPanel regionPanel = null; // 为第一个实例对象创建一个不同的唯一ID { key = ObjectUtility.getNewObjectID36(); setRegionPanel(FilePanel.this); } @Override public Object[] getSelectObjects() { List> list = FilePanel.this.getDataTablePanel().getSelectedRowObjects(); int size = list.size(); if(size <= 0) return null; Object[] res = new Object[size]; for (int i = 0; i < res.length; i++) { res[i] = list.get(i); } return res; } @Override public int[] getSelectObjectRowIndexs() { return FilePanel.this.getDataTablePanel().getSelectedRowIndexs(); } @Override public void refresh(IDataModel fromDataModel) { // 此model 与Button 的 Action 关联着,当 acton执行成功,会调用此关联的model 的 refresh(null) // UILayout 也会持有此 Model 实例,也会调用 refresh(model) FilePanel.this.getDataTablePanel().refreshTableData(); //TODO 向上通知‘刷新’ //getUILayoutModel().notify(this); } @Override public Object getRootObject() { // TODO Auto-generated method stub return null; } @Override public void setClickObject(Object selectObjs) { this.clickObject = selectObjs; } @Override public Object getClickObject() { return this.clickObject; } @Override public String getKey() { return key; } @Override public void setUILayoutModel(IUILayoutModel uiLayoutModel) { FilePanel.this.uiLayoutModel = uiLayoutModel; } @Override public IUILayoutModel getUILayoutModel() { return FilePanel.this.uiLayoutModel; } @Override public void refreshCache(Object clientObject) { // TODO Auto-generated method stub } /** * 返回此 model 所在的 regionPanel */ @Override public IRegionPanel getRegionPanel() { return regionPanel; } /** * 设置此 model 所在的 regionPanel * @param regionPanel 此 model 所在的 regionPanel */ @Override public void setRegionPanel(IRegionPanel regionPanel) { this.regionPanel = regionPanel; } }; /** * 创建表格面板 * @return */ private VCIJPanel initJTablePanel(){ dataProvider = new FileTableDataProvider(this, factory, getType(), getContext(), getDefination(), this.getBusinessObjectOid(getSourceData()), getType().equals(getContext())); dataTablePanel = new VCIJTablePanel>(dataProvider); dataTablePanel.setColumnDefaultWidth(250); dataTablePanel.setColumnDefaultWidthMax(1500); dataTablePanel.buildTablePanel(); dataTablePanel.refreshTableData(); //setDataModel(FilePanelModel); return dataTablePanel; } public FileTableDataProvider getDataProvider() { return dataProvider; } public void setDataProvider(FileTableDataProvider dataProvider) { this.dataProvider = dataProvider; } public IDataModel getTablePanelModel() { return FilePanelModel; } public void setTablePanelModel(IDataModel tablePanelModel) { this.FilePanelModel = tablePanelModel; } public VCIJTablePanel> getDataTablePanel() { return dataTablePanel; } public void setDataTablePanel(VCIJTablePanel> dataTablePanel) { this.dataTablePanel = dataTablePanel; } public DataModelFactory getFactory() { return factory; } public void setFactory(DataModelFactory factory) { this.factory = factory; } /** * 刷新界面 */ public void refreshUI(){ FilePanel.this.getDataTablePanel().refreshTableData(); } @Override public void setPageDefinition(PLPageDefination pageDefinition) { // TODO Auto-generated method stub } @Override public PLPageDefination getPageDefinition() { // TODO Auto-generated method stub return null; } @Override public void setTab(PLTabPage tabPage) { // TODO Auto-generated method stub } @Override public PLTabPage getTabPage() { // TODO Auto-generated method stub return null; } }