package com.topsun.posclient.system.ui.view; import java.util.ArrayList; import java.util.List; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.TableViewer; 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.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.part.ViewPart; import com.co.lane.util.StringUtil; import com.topsun.posclient.common.LoggerUtil; import com.topsun.posclient.common.POSClientApp; import com.topsun.posclient.common.POSException; import com.topsun.posclient.common.core.keyboard.SoftKeyUtil; import com.topsun.posclient.common.service.IBaseService; import com.topsun.posclient.common.service.impl.BaseServiceImpl; import com.topsun.posclient.common.ui.style.CommonCss; import com.topsun.posclient.common.ui.utils.FormatUtils; import com.topsun.posclient.common.ui.utils.ThemeUtils; import com.topsun.posclient.datamodel.SettingData; import com.topsun.posclient.datamodel.Shop; import com.topsun.posclient.system.SystemActivator; import com.topsun.posclient.system.service.ISettingService; import com.topsun.posclient.system.service.impl.SettingServiceImpl; import com.topsun.posclient.system.ui.MessageResources; import com.topsun.widget.calendar.DefaultSettings; /** * Setting View * * @author LiLei * */ public class SettingView extends ViewPart { private ISettingService settingService = new SettingServiceImpl(); public Text serverIP1; public Text serverIP2; public Text serverIP3; public Text serverIP4; public Text serverPort; public Text posNo; public Text cdKey; public Text ogDocNum; public Text docNum; public Combo ownerShop; public TableViewer tableViewer; static SettingData defaultSettingData = null; public SettingView() {} public void createPartControl(Composite parent) { parent.setLayout(new GridLayout(1, false)); parent.setBackground(ThemeUtils.getCurrent().getBackGroundColor()); parent.setBackgroundMode(SWT.INHERIT_FORCE); buildBaseInfo(parent); buildOperation(parent); } private void buildBaseInfo(Composite parent) { try { defaultSettingData = settingService.getSetting(); } catch (POSException e) { MessageDialog.openError(parent.getShell(), MessageResources.message_tips, e.getErrorMessage()); } GridLayout gridLayout = new GridLayout(2, false); gridLayout.marginLeft = 30; parent.setLayout(gridLayout); parent.setLayoutData(new GridData(GridData.FILL_BOTH)); Composite leftComposite = new Composite(parent, SWT.NONE); leftComposite.setLayout(new GridLayout(8, false)); leftComposite.setLayoutData(new GridData(GridData.FILL_BOTH)); Composite rightCompoiste = new Composite(parent, SWT.NONE); rightCompoiste.setLayout(new GridLayout(4, false)); rightCompoiste.setLayoutData(new GridData(GridData.FILL_BOTH)); Composite underCompsite = new Composite(parent, SWT.NONE); underCompsite.setLayout(new GridLayout(4, false)); GridData data2 = new GridData(GridData.FILL_BOTH); data2.horizontalSpan = 2; underCompsite.setLayoutData(data2); String[] ips = new String[]{"0","0","0","0"}; String serverIpStr = defaultSettingData.getServerIp(); if(!StringUtil.isEmpty(serverIpStr)){ ips = serverIpStr.split("\\."); } { Label lable = new Label(leftComposite, SWT.NONE); lable.setFont(CommonCss.getDefaultFont(parent.getDisplay())); lable.setText(MessageResources.message_serverip); GridData data = new GridData(); data.horizontalSpan = 1; lable.setLayoutData(data); } { serverIP1 = new Text(leftComposite, SWT.BORDER); GridData data = CommonCss.getDefaultTextData(); data.horizontalSpan = 1; data.widthHint = 33; serverIP1.setLayoutData(data); serverIP1.setText(ips[0]); serverIP1.setFont(CommonCss.getDefaultFont(parent.getDisplay())); SoftKeyUtil.showSoftKey(serverIP1); } { Label lable = new Label(leftComposite, SWT.NONE); lable.setFont(CommonCss.getDefaultFont(parent.getDisplay())); lable.setText("."); GridData data = new GridData(); data.horizontalSpan = 1; lable.setLayoutData(data); } { serverIP2 = new Text(leftComposite, SWT.BORDER); GridData data = CommonCss.getDefaultTextData(); data.horizontalSpan = 1; data.widthHint = 33; serverIP2.setLayoutData(data); serverIP2.setText(ips[1]); serverIP2.setFont(CommonCss.getDefaultFont(parent.getDisplay())); SoftKeyUtil.showSoftKey(serverIP2); } { Label lable = new Label(leftComposite, SWT.NONE); lable.setFont(CommonCss.getDefaultFont(parent.getDisplay())); lable.setText("."); GridData data = new GridData(); data.horizontalSpan = 1; lable.setLayoutData(data); } { serverIP3 = new Text(leftComposite, SWT.BORDER); GridData data = CommonCss.getDefaultTextData(); data.horizontalSpan = 1; data.widthHint = 33; serverIP3.setLayoutData(data); serverIP3.setText(ips[2]); serverIP3.setFont(CommonCss.getDefaultFont(parent.getDisplay())); SoftKeyUtil.showSoftKey(serverIP3); } { Label lable = new Label(leftComposite, SWT.NONE); lable.setFont(CommonCss.getDefaultFont(parent.getDisplay())); lable.setText("."); GridData data = new GridData(); data.horizontalSpan = 1; lable.setLayoutData(data); } { serverIP4 = new Text(leftComposite, SWT.BORDER); GridData data = CommonCss.getDefaultTextData(); data.horizontalSpan = 1; data.widthHint = 33; serverIP4.setLayoutData(data); serverIP4.setText(ips[3]); serverIP4.setFont(CommonCss.getDefaultFont(parent.getDisplay())); SoftKeyUtil.showSoftKey(serverIP4); } { Label lable = new Label(leftComposite, SWT.NONE); lable.setFont(CommonCss.getDefaultFont(parent.getDisplay())); lable.setText(MessageResources.message_port); GridData data = new GridData(); data.horizontalSpan = 1; lable.setLayoutData(data); } { serverPort = new Text(leftComposite,SWT.BORDER); GridData data = CommonCss.getDefaultTextData(); data.horizontalSpan = 7; data.widthHint = 210; serverPort.setLayoutData(data); serverPort.setText(null == defaultSettingData.getServerPort()?"":defaultSettingData.getServerPort()); serverPort.setFont(CommonCss.getDefaultFont(parent.getDisplay())); SoftKeyUtil.showSoftKey(serverPort); } { Label lable = new Label(leftComposite, SWT.NONE); lable.setText("POS编码"); lable.setFont(CommonCss.getDefaultFont(parent.getDisplay())); GridData data = new GridData(); data.horizontalSpan = 1; lable.setLayoutData(data); } { posNo = new Text(leftComposite, SWT.BORDER); GridData data = CommonCss.getDefaultTextData(); data.horizontalSpan = 7; data.widthHint = 210; posNo.setLayoutData(data); posNo.setText(null == defaultSettingData.getPosNo()?"":defaultSettingData.getPosNo()); posNo.setFont(CommonCss.getDefaultFont(parent.getDisplay())); SoftKeyUtil.showSoftKey(posNo); } { Label lable = new Label(leftComposite, SWT.NONE); lable.setText("授权码"); lable.setFont(CommonCss.getDefaultFont(parent.getDisplay())); GridData data = new GridData(); data.horizontalSpan = 1; lable.setLayoutData(data); } { cdKey = new Text(leftComposite, SWT.BORDER); GridData data = CommonCss.getDefaultTextData(); data.horizontalSpan = 7; data.widthHint = 210; cdKey.setLayoutData(data); cdKey.setText(null == defaultSettingData.getCdKey()?"":defaultSettingData.getCdKey()); cdKey.setFont(CommonCss.getDefaultFont(parent.getDisplay())); SoftKeyUtil.showSoftKey(cdKey); } { Label lable = new Label(leftComposite, SWT.NONE); lable.setText("所属店铺"); lable.setFont(CommonCss.getDefaultFont(parent.getDisplay())); GridData data = new GridData(); data.horizontalSpan = 1; lable.setLayoutData(data); } { ownerShop = new Combo(leftComposite, SWT.BORDER); ownerShop.setFont(CommonCss.getDefaultFont(parent.getDisplay())); GridData data = CommonCss.getDefaultTextData(); data.horizontalSpan = 7; data.widthHint = 210; ownerShop.setLayoutData(data); IBaseService service = new BaseServiceImpl(); List<Shop> shops; try { shops = service.getAllShop().getShopList(); List<String> shopNames = new ArrayList<String>(); for (Shop shop : shops) { shopNames.add(shop.getShpName()); } ownerShop.setData(shops); ownerShop.setItems(shopNames.toArray(new String[]{})); } catch (Exception e) { e.printStackTrace(); } try { Shop shop = service.getShopById(Integer.valueOf(defaultSettingData.getOwnerShop())); ownerShop.setText(shop.getShpName()); } catch (NumberFormatException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } ownerShop.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { Combo combo = (Combo)e.getSource(); String text = combo.getText(); List<Shop> shops = (List<Shop>)combo.getData(); for (Shop shop : shops) { if(shop.getShpName().equals(text)){ combo.setData("shopid", shop.getId()); } } } @Override public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method stub } }); } } private void buildOperation(Composite parent) { Composite operation = new Composite(parent, SWT.NONE); operation.setLayout(new GridLayout(4, true)); operation.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); GridData data = new GridData(); data.heightHint = 45; data.widthHint = 140; Button testConnBtn = new Button(operation, SWT.NONE); testConnBtn.setText("连接测试"); testConnBtn.setFont(CommonCss.getDefaultFont(parent.getDisplay())); testConnBtn.setLayoutData(data); testConnBtn.addSelectionListener(new SelectionListener(){ public void widgetSelected(SelectionEvent e) { Button btn = (Button)e.getSource(); String ipAddress = serverIP1.getText()+"."+serverIP2.getText()+"."+serverIP3.getText()+"."+serverIP4.getText(); String port = serverPort.getText(); boolean connectFlag = false; try { connectFlag = settingService.testConnect(ipAddress, port); } catch (POSException e1) { MessageDialog.openError(btn.getShell(), MessageResources.message_tips, e1.getErrorMessage()); return; } if(connectFlag){ MessageDialog.openInformation(btn.getShell(), MessageResources.message_tips, "连接成功"); }else{ MessageDialog.openError(btn.getShell(), MessageResources.message_tips, "连接失败,请重新设置IP或端口"); } } public void widgetDefaultSelected(SelectionEvent e) {} }); { Button button = new Button(operation, SWT.NONE); button.setText("保存设置"); button.setFont(CommonCss.getDefaultFont(parent.getDisplay())); button.setLayoutData(data); button.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { Button saveButton = (Button)e.getSource(); String ipAdd = serverIP1.getText() + "." + serverIP2.getText() + "." + serverIP3.getText() + "." + serverIP4.getText(); boolean flag = FormatUtils.checkIpFormat(saveButton, ipAdd, "IP地址格式错误"); if(!flag){ return; } if(null == ipAdd || ("").equals(ipAdd)){ MessageDialog.openError(saveButton.getShell(), MessageResources.message_tips, MessageResources.message_tips_inputserverip); serverIP1.forceFocus(); return; } String port = serverPort.getText(); if(null == port || ("").equals(port)){ MessageDialog.openError(saveButton.getShell(), MessageResources.message_tips, MessageResources.message_tips_inputport); serverPort.forceFocus(); return; } String posNoVal = posNo.getText(); if(null == posNoVal || ("").equals(posNoVal)){ MessageDialog.openError(saveButton.getShell(), MessageResources.message_tips, "请输入【POS编码】"); posNo.forceFocus(); return; } String cdKeyVal = cdKey.getText(); if(null == cdKeyVal || ("").equals(cdKeyVal)){ MessageDialog.openError(saveButton.getShell(), MessageResources.message_tips, "请输入【授权码】"); cdKey.forceFocus(); return; } String ownerShopVal= ""; if(ownerShop.getData("shopid") ==null){ IBaseService service = new BaseServiceImpl(); try { for(Shop shop : service.getAllShop().getShopList() ){ if(shop.getShpName().equals(ownerShop.getText())){ ownerShopVal = String.valueOf(shop.getId()); } } } catch (Exception e2) { LoggerUtil.logError(SystemActivator.PLUGIN_ID, "所属店铺加载出错", e2); MessageDialog.openError(saveButton.getShell(), MessageResources.message_tips, e2.getMessage()); return; } }else{ ownerShopVal = ownerShop.getData("shopid").toString(); } if(null == cdKeyVal || ("").equals(cdKeyVal)){ MessageDialog.openError(saveButton.getShell(), MessageResources.message_tips, "请输入【所属店铺】"); ownerShop.forceFocus(); return; } SettingData settingData = new SettingData(); settingData.setServerIp(ipAdd); settingData.setServerPort(port); settingData.setPosNo(posNoVal); settingData.setCdKey(cdKeyVal); settingData.setDocNum(POSClientApp.get().getSysConfig().getDocNum()); settingData.setOgDocNum(POSClientApp.get().getSysConfig().getOgDocNum()); settingData.setrDocNum(POSClientApp.get().getSysConfig().getrDocNum()); settingData.setbDocNum(POSClientApp.get().getSysConfig().getbDocNum()); settingData.setgDocNum(POSClientApp.get().getSysConfig().getgDocNum()); settingData.setOwnerShop(ownerShopVal); settingData.setLastUpdateTime(POSClientApp.get().getSysConfig().getLastUpdateTime()); settingData.setInvoiceNumber(POSClientApp.get().getSysConfig().getInvoiceNumber()); try { settingService.saveSetting(settingData); MessageDialog.openInformation(saveButton.getShell(), MessageResources.message_tips, "操作成功,重新启动配置生效!"); } catch (POSException e1) { LoggerUtil.logError(SystemActivator.PLUGIN_ID, "系统配置保存失败", e1); MessageDialog.openError(saveButton.getShell(), MessageResources.message_tips, e1.getErrorMessage()); } } public void widgetDefaultSelected(SelectionEvent e) { } }); Button clearBtn = new Button(operation, SWT.NONE); clearBtn.setText("清理本地备份数据"); clearBtn.setFont(CommonCss.getDefaultFont(parent.getDisplay())); clearBtn.setLayoutData(data); clearBtn.addSelectionListener(new SelectionListener(){ public void widgetSelected(SelectionEvent e) { Button btn = (Button)e.getSource(); try { settingService.cleanBackData(); } catch (POSException e1) { MessageDialog.openError(btn.getShell(), MessageResources.message_tips, e1.getErrorMessage()); return; } MessageDialog.openInformation(btn.getShell(), MessageResources.message_tips, "操作成功"); } public void widgetDefaultSelected(SelectionEvent e) {} }); Button clearBtn2 = new Button(operation, SWT.NONE); clearBtn2.setText("清理历史数据"); clearBtn2.setFont(CommonCss.getDefaultFont(parent.getDisplay())); clearBtn2.setLayoutData(data); clearBtn2.addSelectionListener(new SelectionListener(){ public void widgetSelected(SelectionEvent e) { Button btn = (Button)e.getSource(); try { settingService.cleanHisData(); } catch (POSException e1) { MessageDialog.openError(btn.getShell(), MessageResources.message_tips, e1.getErrorMessage()); return; } MessageDialog.openInformation(btn.getShell(), MessageResources.message_tips, "操作成功"); } public void widgetDefaultSelected(SelectionEvent e) {} }); } } public void setFocus() { } class Settings extends DefaultSettings { public boolean keyboardNavigatesCalendar() { return false; } } }