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;
}
}
}