package com.topsun.posclient.finance.ui.view; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.CellEditor; import org.eclipse.jface.viewers.ICellModifier; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TextCellEditor; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; import org.eclipse.ui.part.ViewPart; import com.topsun.posclient.common.POSClientApp; import com.topsun.posclient.common.POSException; import com.topsun.posclient.common.ui.utils.ImageUtils; import com.topsun.posclient.datamodel.PayRecord; import com.topsun.posclient.datamodel.User; import com.topsun.posclient.datamodel.dto.PayRecordDTO; import com.topsun.posclient.finance.service.IShopPayService; import com.topsun.posclient.finance.service.impl.ShopPayServiceImpl; import com.topsun.posclient.finance.ui.FinanceUIActivator; import com.topsun.posclient.finance.ui.cell.DateCellEditor; /** * 店铺缴款视图 * * @author Dong * */ public class ShopPayView extends ViewPart { public IShopPayService shopPayService = new ShopPayServiceImpl(); public List<PayRecord> payRecords = new ArrayList<PayRecord>(); /** * 店铺缴款记录列表 */ public TableViewer tableViewer; public void createPartControl(Composite parent) { parent.setLayout(new GridLayout(1,false)); Composite opertaionArea = new Composite(parent, SWT.NONE); Composite payRecodeArea = new Composite(parent, SWT.NONE); Composite saveAndCancelArea = new Composite(parent, SWT.NONE); buildOperation(opertaionArea); buildTableViewer(payRecodeArea); } public void buildOperation(Composite parent){ GridLayout gridLayout = new GridLayout(3,true); parent.setLayout(gridLayout); { Button button = new Button(parent, SWT.NONE); button.setText("新增"); button.setImage(ImageUtils.createImage(FinanceUIActivator.PLUGIN_ID, "icons//ok.gif")); GridData data = new GridData(); data.heightHint = 28; data.widthHint = 120; button.setLayoutData(data); button.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { User user = POSClientApp.get().getLoginUser(); if(tableViewer.getInput()!=null){ PayRecord input = new PayRecord(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); String date = dateFormat.format(Calendar.getInstance().getTime()); input.setApproveDate(date); input.setApprove(user.getUserName()); payRecords.add(input); tableViewer.setInput(payRecords); }else{ PayRecord input = new PayRecord(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); String date = dateFormat.format(Calendar.getInstance().getTime()); input.setApproveDate(date); input.setApprove(user.getUserName()); payRecords.add(input); tableViewer.setInput(payRecords); } } @Override public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method stub } }); } { Button button = new Button(parent, SWT.NONE); button.setText("删除"); button.setImage(ImageUtils.createImage(FinanceUIActivator.PLUGIN_ID, "icons//nook.png")); GridData data = new GridData(); data.heightHint = 28; data.widthHint = 120; button.setLayoutData(data); button.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { ISelection iSelection = tableViewer.getSelection(); if(!iSelection.isEmpty()){ Object obj = ((StructuredSelection)iSelection).getFirstElement(); if(obj instanceof PayRecord){ PayRecord item = (PayRecord)obj; List<PayRecord> items = (List<PayRecord>)tableViewer.getInput(); items.remove(item); tableViewer.setInput(items); } } } @Override public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method stub } }); } { Button button = new Button(parent, SWT.NONE); button.setText("保存"); button.setImage(ImageUtils.createImage(FinanceUIActivator.PLUGIN_ID, "icons//ok.gif")); GridData data = new GridData(); data.heightHint = 28; data.widthHint = 120; button.setLayoutData(data); button.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { try { PayRecordDTO payRecordDTO = new PayRecordDTO(); payRecordDTO.setPayRecordList(payRecords); shopPayService.saveShopPay(payRecordDTO); } catch (POSException e1) { Button saveButton = (Button)e.getSource(); MessageDialog.openError(saveButton.getShell(), "提示", e1.getErrorMessage()); return; } } public void widgetDefaultSelected(SelectionEvent e) { } }); } } public void setFocus() {} public void buildTableViewer(Composite parent){ GridLayout gridLayout = new GridLayout(1,false); parent.setLayout(gridLayout); GridData data = new GridData(GridData.FILL_BOTH); parent.setLayoutData(data); tableViewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER|SWT.FULL_SELECTION); tableViewer.setContentProvider(new PayRecordTableContentProvider()); tableViewer.setLabelProvider(new PayRecordTableLableProvider()); Table table = tableViewer.getTable(); { GridData tableData = new GridData(GridData.FILL_BOTH); table.setLayoutData(tableData); table.setHeaderVisible(true); table.setLinesVisible(false); } { TableColumn column = new TableColumn(table, SWT.NONE); column.setWidth(120); column.setText("缴款时间"); } { TableColumn column = new TableColumn(table, SWT.NONE); column.setWidth(100); column.setText("存款银行 "); } { TableColumn column = new TableColumn(table, SWT.NONE); column.setWidth(100); column.setText("银行帐号"); } { TableColumn column = new TableColumn(table, SWT.NONE); column.setWidth(100); column.setText("存款金额"); } { TableColumn column = new TableColumn(table, SWT.NONE); column.setWidth(100); column.setText("存款人"); } { TableColumn column = new TableColumn(table, SWT.NONE); column.setWidth(120); column.setText("审核人"); } { TableColumn column = new TableColumn(table, SWT.NONE); column.setWidth(120); column.setText("审核时间"); } { TableColumn column = new TableColumn(table, SWT.NONE); column.setWidth(120); column.setText("备注"); } table.addListener(SWT.MouseDoubleClick, new Listener() { public void handleEvent(Event event) { //鼠标双击事件 } }); CellEditor[] cellEditor = new CellEditor[8]; cellEditor[0] = new DateCellEditor(this.tableViewer.getTable()); cellEditor[1] = new TextCellEditor(this.tableViewer.getTable()); cellEditor[2] = new TextCellEditor(this.tableViewer.getTable()); cellEditor[3] = new TextCellEditor(this.tableViewer.getTable()); cellEditor[4] = new TextCellEditor(this.tableViewer.getTable()); cellEditor[5] = new TextCellEditor(this.tableViewer.getTable()); cellEditor[6] = new DateCellEditor(this.tableViewer.getTable()); cellEditor[7] = new TextCellEditor(this.tableViewer.getTable()); tableViewer.setCellEditors(cellEditor); String[] properties = new String[] { "payDate", "bankName", "account", "amount", "payer", "approve", "approveDate", "remark" }; tableViewer.setColumnProperties(properties); ICellModifier modifier = new PayReCordCellModifier(tableViewer, parent); tableViewer.setCellModifier(modifier); } }