using CloudBuilder.Core.Service;
using CloudBuilder.Gui;
using CloudBuilder.Request.Security;
using CloudBuilder.Security.Entity;
using CloudBuilder.Security.Policy;
using CloudBuilder.Security.SearchCriteria;
using Krypton.Toolkit;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace CloudBuilder.Security.Gui
{
public partial class SecurityMasterDialogPage : AbstractPage
{
private SecurityMessagePolicy securityMessagePolicy;
private SecurityMasterRequest securityMasterRequest;
private SecurityMasterEntity securityMasterEntity;
private bool allowCancel = false;
public SecurityMasterDialogPage()
{
InitializeComponent();
}
///
/// 第一次加载时执行,只执行一次
///
public override void FunctionLoaded()
{
try
{
base.FunctionLoaded();
//初始化容器-------------------------------------
securityMessagePolicy = ServiceHelper.GetTypeService()!;
securityMasterRequest = ServiceHelper.GetTypeService();
//界面初始化
InitGui();
}
catch (ValidatedException ex)
{
ShowMessageBox.ShowInfo(ex.Message);
}
catch (ServiceErrorException ex)
{
ShowMessageBox.ShowError(ex.Message);
}
catch (Exception ex)
{
ShowMessageBox.ShowError(ex.Message);
}
}
///
/// 弹出界面调用,发生在FunctionLoaded()之后
///
public override void InitInputData(object param, GuiDisplayMode mode)
{
base.InitInputData(param, mode);
if (mode == GuiDisplayMode.Create)
{
Create();
return;
}
SecurityMasterEntity securityMasterEntity = param as SecurityMasterEntity;
if (securityMasterEntity == null) return;
Search(new SecurityMasterEntityKey()
{
MasterCategory = securityMasterEntity.MasterCategory,
MasterSubcategory = securityMasterEntity.MasterSubcategory,
MasterCodeItem = securityMasterEntity.MasterCodeItem
});
if (mode == GuiDisplayMode.Amend)
{
Amend();
}
}
private void InitGui()
{
InitBindingContext();
InitCombo();
InitDisplayMode();
this.ParentAbstractForm.AcceptButton = this.okBut;
// 手动处理 ESC 键
this.ParentAbstractForm.KeyPreview = true; // 允许表单接收按键事件
this.ParentAbstractForm.KeyDown += (sender, e) =>
{
if (e.KeyCode == Keys.Escape)
{
this.ParentAbstractForm.DialogResult = DialogResult.Cancel;
this.ParentAbstractForm.Close();
}
};
}
private void InitCombo()
{
validIndcCombo.SetDataSource(YesNoPolicy.GetInstance().GetComposeMessages(), true);
}
///
/// 有特殊要求的UI控件初始化设置,Init与Add配对后,使用guiOperateHelper管理
///
private void InitBindingContext()
{
//需要绑定数据
guiBindingContext = new GuiBindingContext();
masterCategoryTxt.Set(SecurityMasterEntity.MASTER_CATEGORY, masterCategoryLabel.Text, EnumEditModeColor.Required);
masterSubcategoryTxt.Set(SecurityMasterEntity.MASTER_SUBCATEGORY, masterSubcategoryLabel.Text,EnumEditModeColor.Required);
masterCodeItemTxt.Set(SecurityMasterEntity.MASTER_CODE_ITEM, masterCodeItemLabel.Text, EnumEditModeColor.Required);
localDescriptionTxt.Set(SecurityMasterEntity.LOCAL_DESCRIPTION);
engDescriptionTxt.Set(SecurityMasterEntity.ENG_DESCRIPTION);
valueTxt.Set(SecurityMasterEntity.VALUE, valueLabel.Text, EnumEditModeColor.Required);
validIndcCombo.Set(SecurityMasterEntity.VALID_INDC, validIndcLabel.Text, EnumEditModeColor.Required);
orderByTxt.Set(SecurityMasterEntity.ORDER_BY, orderByLabel.Text, EnumEditModeColor.Required);
remarkTxt.Set(SecurityMasterEntity.REMARK);
guiOperateHelper = new GuiOperateHelper();
}
private void InitDisplayMode()
{
this.DisplayMode = GuiDisplayMode.View;
SetDisplayMode();
}
private void SetDisplayMode()
{
if (this.DisplayMode == GuiDisplayMode.View)
{
okBut.Visible = false;
guiOperateHelper.EnableControls(false, contentPanel);
}
else if (this.DisplayMode == GuiDisplayMode.Amend || this.DisplayMode == GuiDisplayMode.Create)
{
okBut.Visible = true;
guiOperateHelper.EnableControls(true, contentPanel);
if (this.DisplayMode == GuiDisplayMode.Amend) guiOperateHelper.EnableControls(false, masterCategoryTxt, masterCodeItemTxt, masterSubcategoryTxt);
}
}
private void PackUIToEntity()
{
guiBindingContext.DataPack();
securityMasterEntity.MasterCategory = masterCategoryTxt.Text;
securityMasterEntity.MasterSubcategory = masterSubcategoryTxt.Text;
securityMasterEntity.MasterCodeItem = masterCodeItemTxt.Text;
securityMasterEntity.Value = valueTxt.Text;
//.....
}
private bool SaveValidate()
{
if (!guiOperateHelper.CheckValidate(this.mainPanel)) return false;
return true;
}
private void Search(SecurityMasterEntityKey masterEntityKey)
{
try
{
securityMasterEntity = securityMasterRequest.FindByKey(masterEntityKey);
if (securityMasterEntity == null)
{
ShowMessageBox.ShowInfo(securityMessagePolicy.ComposeMessage(SecurityMessagePolicy.GUI_WS_RECORD_NOT_FOUND));
}
else
{
PackEntityToUI();
SetDisplayMode();
}
}
catch (ValidatedException ex)
{
ShowMessageBox.ShowInfo(ex.Message);
}
catch (ServiceErrorException ex)
{
ShowMessageBox.ShowError(ex.Message);
}
catch (Exception ex)
{
ShowMessageBox.ShowError(ex.Message);
}
}
private void Create()
{
this.DisplayMode = GuiDisplayMode.Create;
guiOperateHelper.ResetControls(this.mainPanel);
SetDisplayMode();
securityMasterEntity = new SecurityMasterEntity()
{
CreatedBy = string.Empty,
UpdatedBy = string.Empty,
CreatedDatetime = DateTime.Now,
UpdatedDatetime = DateTime.Now,
};
PackEntityToUI();
}
private void Amend()
{
this.DisplayMode = GuiDisplayMode.Amend;
SetDisplayMode();
}
private void PackEntityToUI()
{
guiBindingContext.DataBind(securityMasterEntity, this);
}
private void okBut_Click(object sender, EventArgs e)
{
try
{
if (!SaveValidate()) return;
PackUIToEntity();
if (this.DisplayMode == GuiDisplayMode.Create)
securityMasterRequest.Insert(securityMasterEntity);
else
securityMasterRequest.Update(securityMasterEntity);
ShowMessageBox.ShowInfo((this.DisplayMode == GuiDisplayMode.Create) ?
securityMessagePolicy.ComposeMessage(SecurityMessagePolicy.GUI_SUCCEED_CREATED_NULL) :
securityMessagePolicy.ComposeMessage(SecurityMessagePolicy.GUI_SUCCEED_UPDATED_NULL));
this.ParentAbstractForm.OutputData = securityMasterEntity;
this.ParentAbstractForm.DialogResult = DialogResult.OK;
}
catch (ValidatedException ex)
{
ShowMessageBox.ShowInfo(ex.Message);
}
catch (ServiceErrorException ex)
{
ShowMessageBox.ShowError(ex.Message);
}
catch (Exception ex)
{
ShowMessageBox.ShowError(ex.Message);
}
}
private void cancelBut_Click(object sender, EventArgs e)
{
if (GuiDisplayMode.View != this.DisplayMode)
{
DialogResult result = ShowMessageBox.ShowOption(securityMessagePolicy.ComposeMessage(SecurityMessagePolicy.GUI_CONFIRM_CANCEL), securityMessagePolicy.ComposeMessage(SecurityMessagePolicy.GUI_CONFIRM));
if (result == DialogResult.No)
{
return;
}
}
this.ParentAbstractForm.DialogResult = DialogResult.Cancel;
}
}
}