CloudBuilder/CloudBuilder.Gui/GuiOperateHelper.cs
owenchen 1c0c83af5f ow
2026-05-12 10:09:31 +08:00

901 lines
44 KiB
C#

using CloudBuilder.Core.DependencyInjection.Form;
using CloudBuilder.Core.DependencyInjection.Request;
using CloudBuilder.Gui.DependencyInjection;
using CloudBuilder.Security.Policy;
using CloudBuilder.Security.Utility;
using Krypton.Toolkit;
using Microsoft.AspNetCore.Authorization;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.IdentityModel.Tokens;
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Resources;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace CloudBuilder.Gui
{
public class GuiOperateHelper
{
private LoginContextPermission loginContextPermission;
public GuiOperateHelper()
{
this.loginContextPermission = new LoginContextPermission();
}
public void EnableControls(bool enable, IComponent c)
{
if ((c is Control))
((Control)c).SuspendLayout();
Enable(enable, c);
if ((c is Control))
((Control)c).ResumeLayout();
}
public void EnableControls(bool enable, Control.ControlCollection cc)
{
IEnumerator enumerator = cc.GetEnumerator();
while (enumerator.MoveNext())
{
Control current = (Control)enumerator.Current;
EnableControls(enable, current);
}
}
public void EnableControls(bool enable, params IComponent[] cc)
{
foreach (IComponent c in cc)
{
EnableControls(enable, c);
}
}
public void EnableControls(bool enable, List<IComponent> cc)
{
foreach (IComponent c in cc)
{
EnableControls(enable, c);
}
}
public bool CheckValidate(Control.ControlCollection cc)
{
IEnumerator enumerator = cc.GetEnumerator();
while (enumerator.MoveNext())
{
Control current = (Control)enumerator.Current;
if (!CheckValidate(current)) return false;
}
return true;
}
public bool CheckValidate(params IComponent[] cc)
{
foreach (IComponent c in cc)
{
if (!CheckValidate(c)) return false;
}
return true;
}
public bool CheckValidate(List<IComponent> cc)
{
foreach (IComponent c in cc)
{
if (!CheckValidate(c)) return false;
}
return true;
}
public void ResetControls(params IComponent[] cc)
{
foreach (IComponent c in cc)
{
ResetControls(c);
}
}
public void ResetControls(List<IComponent> cc)
{
ResetControls(cc.ToArray());
}
public void ResetControls(IComponent c)
{
if (!(c is Control)) return;
((Control)c).SuspendLayout();
Reset(((Control)c));
((Control)c).ResumeLayout();
}
public void ResetControls(Control.ControlCollection cc)
{
IEnumerator enumerator = cc.GetEnumerator();
while (enumerator.MoveNext())
{
Control current = (Control)enumerator.Current;
ResetControls(current);
}
}
public void SetControlsText(params IComponent[] cc)
{
foreach (IComponent c in cc)
{
SetControlsText(c);
}
}
public static void SetControlsText(IComponent c, ResourceManager rs)
{
if ((c is Control))
((Control)c).SuspendLayout();
SetText(c, rs);
if ((c is Control))
((Control)c).ResumeLayout();
}
public static void SetControlsText(Control.ControlCollection cc, ResourceManager rs)
{
IEnumerator enumerator = cc.GetEnumerator();
while (enumerator.MoveNext())
{
Control current = (Control)enumerator.Current;
SetControlsText(current, rs);
}
}
public static void SetControlsText(ResourceManager rs, params IComponent[] cc)
{
foreach (IComponent c in cc)
{
SetControlsText(c, rs);
}
}
public static void SetControlsText(List<IComponent> cc, ResourceManager rs)
{
foreach (Control c in cc)
{
SetControlsText(c, rs);
}
}
private void Reset(IComponent c)
{
if (!(c is Control)) return;
if (c is GridViewPagination)
{
((GridViewPagination)c).Reset();
}
else if (c is KryptonTextBox)
{
((KryptonTextBox)c).Text = string.Empty;
}
else if (c is KryptonDateTimePicker)
{
((KryptonDateTimePicker)c).Checked = false;
}
else if (c is KryptonMaskedTextBox)
{
((KryptonMaskedTextBox)c).Text = string.Empty;
}
else if (c is KryptonNumericUpDown)
{
((KryptonNumericUpDown)c).Text = "0";
}
else if (c is KryptonComboBox)
{
((KryptonComboBox)c).SelectedIndex = -1;
}
else if (c is KryptonCheckBox)
{
((KryptonCheckBox)c).Checked = false;
}
else if (c is KryptonDataGridView)
{
((KryptonDataGridView)c).Clear();
}
else if (c is KryptonCheckedListBox)
{
((KryptonCheckedListBox)c).Reset();
}
else if (c is KryptonListBox)
{
((KryptonListBox)c).Items.Clear();
}
else if (c is KryptonRadioButton)
{
((KryptonRadioButton)c).Checked = false;
}
else
{
if (((Control)c).HasChildren) ResetControls(((Control)c).Controls);
}
}
private static void SetText(IComponent c, ResourceManager rs)
{
if (c is Label)
{
var text = rs.GetString(((Label)c).Name);
if (text != null) ((Label)c).Text = (string)text;
}
if (c is KryptonLabel)
{
var text = rs.GetString(((KryptonLabel)c).Name);
if (text != null) ((KryptonLabel)c).Text = (string)text;
}
else if (c is Button)
{
var text = rs.GetString(((Button)c).Name);
if (text != null) ((Button)c).Text = (string)text;
}
else if (c is KryptonButton)
{
var text = rs.GetString(((KryptonButton)c).Name);
if (text != null) ((KryptonButton)c).Text = (string)text;
}
else if (c is DataGridView)
{
SetText(((DataGridView)c).Columns, rs);
}
else if (c is KryptonDataGridView)
{
SetText(((KryptonDataGridView)c).Columns, rs);
}
else if (c is SplitContainer)
{
if (((Control)c).HasChildren) SetControlsText(((SplitContainer)c).Panel1, rs);
if (((Control)c).HasChildren) SetControlsText(((SplitContainer)c).Panel2, rs);
}
else if (c is SplitterPanel)
{
if (((Control)c).HasChildren) SetControlsText(((SplitterPanel)c).Controls, rs);
}
else if (c is Panel)
{
if (((Control)c).HasChildren) SetControlsText(((Panel)c).Controls, rs);
}
else if (c is TableLayoutPanel)
{
if (((Control)c).HasChildren) SetControlsText(((TableLayoutPanel)c).Controls, rs);
}
else if (c is AbstractForm)
{
if (((Control)c).HasChildren) SetControlsText(((AbstractForm)c).Controls, rs);
}
}
private static void SetText(DataGridViewColumnCollection c, ResourceManager rs)
{
foreach (DataGridViewColumn dgvc in c)
{
var text = rs.GetString(((DataGridViewColumn)dgvc).Name);
if (text != null) dgvc.HeaderText = (string)text;
}
}
private void Enable(bool enable, IComponent c)
{
IContext loginContext = null!;
loginContext = ServiceHelper.GetInterfaceService<IContext>()!;
if (c is KryptonTextBox)
{
((KryptonTextBox)c).ReadOnly = !enable;
foreach (ButtonSpecAny but in ((KryptonTextBox)c).ButtonSpecs)
{
but.Enabled = enable ? ButtonEnabled.True : ButtonEnabled.False;
}
BindingContextCustomAttribute guiBindingContext = ServiceHelper.GetService<BindingContextAttributeProvider>()!.GetCustomAttribute((KryptonTextBox)c);
if (enable)
{
if (guiBindingContext == null)
{
//沒有設置時,默认白色
((KryptonTextBox)c).StateCommon.Back.Color1 = Color.White;
}
else if (guiBindingContext.EditModeColor == EnumEditModeColor.Required)
{
((KryptonTextBox)c).StateCommon.Border.Color1 = Color.Peru;
((KryptonTextBox)c).StateActive.Border.DrawBorders = ((Krypton.Toolkit.PaletteDrawBorders)(((
(Krypton.Toolkit.PaletteDrawBorders.Top | Krypton.Toolkit.PaletteDrawBorders.Bottom) |
Krypton.Toolkit.PaletteDrawBorders.Left) | Krypton.Toolkit.PaletteDrawBorders.Right)));
((KryptonTextBox)c).StateCommon.Back.Color1 = Color.White;
}
else if (guiBindingContext.EditModeColor == EnumEditModeColor.ReadOnly)
{
((KryptonTextBox)c).StateCommon.Border.Color1 = Color.Gainsboro;
((KryptonTextBox)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251);
((KryptonTextBox)c).ReadOnly = true;
}
else
{
((KryptonTextBox)c).StateCommon.Back.Color1 = Color.White;
}
}
else
{
((KryptonTextBox)c).StateCommon.Border.Color1 = Color.LightGray;
((KryptonTextBox)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251);
}
if (guiBindingContext != null && !string.IsNullOrEmpty(guiBindingContext.PermissionName) && string.IsNullOrEmpty(guiBindingContext.DependentDetailName))
{
if (guiBindingContext.PermissionMode == Operate.Find && !loginContext.Assert(loginContextPermission.Assert, guiBindingContext.PermissionName, Operate.Find))
{
guiBindingContext.BindDataName = null!;
((KryptonTextBox)c).Text = null!;
((KryptonTextBox)c).ReadOnly = true;
((KryptonTextBox)c).StateCommon.Border.Color1 = Color.Gainsboro;
((KryptonTextBox)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251);
}
if (guiBindingContext.PermissionMode == Operate.Update && !loginContext.Assert(loginContextPermission.Assert, guiBindingContext.PermissionName, Operate.Update))
{
((KryptonTextBox)c).ReadOnly = true;
((KryptonTextBox)c).StateCommon.Border.Color1 = Color.Gainsboro;
((KryptonTextBox)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251);
}
}
else if (guiBindingContext != null && !string.IsNullOrEmpty(guiBindingContext.PermissionName) && !string.IsNullOrEmpty(guiBindingContext.DependentDetailName))
{
if (guiBindingContext.PermissionMode == Operate.Find && !loginContext.AssertDependents(loginContextPermission.AssertDependents, guiBindingContext.PermissionName, guiBindingContext.DependentDetailName, Operate.Find))
{
guiBindingContext.BindDataName = null!;
((KryptonTextBox)c).Text = null!;
((KryptonTextBox)c).ReadOnly = true;
((KryptonTextBox)c).StateCommon.Border.Color1 = Color.Gainsboro;
((KryptonTextBox)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251);
}
if (guiBindingContext.PermissionMode == Operate.Update && !loginContext.AssertDependents(loginContextPermission.AssertDependents, guiBindingContext.PermissionName, guiBindingContext.DependentDetailName, Operate.Update))
{
((KryptonTextBox)c).ReadOnly = true;
((KryptonTextBox)c).StateCommon.Border.Color1 = Color.Gainsboro;
((KryptonTextBox)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251);
}
}
}
else if (c is KryptonComboBox)
{
((KryptonComboBox)c).Enabled = enable;
BindingContextCustomAttribute guiBindingContext = ServiceHelper.GetService<BindingContextAttributeProvider>()!.GetCustomAttribute((KryptonComboBox)c);
if (enable)
{
((KryptonComboBox)c).StateCommon.ComboBox.Border.Width = 1;
if (guiBindingContext == null)
{
//沒有設置時,默认白色
((KryptonComboBox)c).StateCommon.ComboBox.Back.Color1 = Color.White;
((KryptonComboBox)c).StateCommon.ComboBox.Border.Color1 = Color.FromArgb(215, 229, 243);
}
else if (guiBindingContext.EditModeColor == EnumEditModeColor.Required)
{
((KryptonComboBox)c).StateCommon.ComboBox.Back.Color1 = Color.White;
((KryptonComboBox)c).StateCommon.ComboBox.Border.Color1 = Color.Peru;
((KryptonComboBox)c).StateActive.ComboBox.Border.DrawBorders = ((Krypton.Toolkit.PaletteDrawBorders)(((
(Krypton.Toolkit.PaletteDrawBorders.Top | Krypton.Toolkit.PaletteDrawBorders.Bottom) |
Krypton.Toolkit.PaletteDrawBorders.Left) | Krypton.Toolkit.PaletteDrawBorders.Right)));
}
else if (guiBindingContext.EditModeColor == EnumEditModeColor.ReadOnly)
{
((KryptonComboBox)c).StateCommon.ComboBox.Back.Color1 = Color.FromArgb(234, 242, 251);
((KryptonComboBox)c).StateCommon.ComboBox.Border.Color1 = Color.LightGray;
((KryptonComboBox)c).Enabled = false;
}
else
{
((KryptonComboBox)c).StateCommon.ComboBox.Back.Color1 = Color.White;
((KryptonComboBox)c).StateCommon.ComboBox.Border.Color1 = Color.FromArgb(215, 229, 243);
}
}
else
{
((KryptonComboBox)c).StateDisabled.ComboBox.Back.Color1 = Color.FromArgb(234, 242, 251);
((KryptonComboBox)c).StateDisabled.ComboBox.Border.Color1 = Color.LightGray;
((KryptonComboBox)c).StateDisabled.ComboBox.Content.Color1 = Color.Black;
}
if (guiBindingContext != null && !string.IsNullOrEmpty(guiBindingContext.PermissionName) && string.IsNullOrEmpty(guiBindingContext.DependentDetailName))
{
if (guiBindingContext.PermissionMode == Operate.Find && !loginContext.Assert(loginContextPermission.Assert, guiBindingContext.PermissionName, Operate.Find))
{
guiBindingContext.BindDataName = null!;
((KryptonComboBox)c).SelectedIndex = -1;
((KryptonComboBox)c).Enabled = false;
((KryptonComboBox)c).StateCommon.ComboBox.Back.Color1 = Color.FromArgb(234, 242, 251);
((KryptonComboBox)c).StateCommon.ComboBox.Border.Color1 = Color.LightGray;
}
if (guiBindingContext.PermissionMode == Operate.Update && !loginContext.Assert(loginContextPermission.Assert, guiBindingContext.PermissionName, Operate.Update))
{
((KryptonComboBox)c).Enabled = false;
((KryptonComboBox)c).StateCommon.ComboBox.Back.Color1 = Color.FromArgb(234, 242, 251);
((KryptonComboBox)c).StateCommon.ComboBox.Border.Color1 = Color.LightGray;
}
}
else if (guiBindingContext != null && !string.IsNullOrEmpty(guiBindingContext.PermissionName) && !string.IsNullOrEmpty(guiBindingContext.DependentDetailName))
{
if (guiBindingContext.PermissionMode == Operate.Find && !loginContext.AssertDependents(loginContextPermission.AssertDependents, guiBindingContext.PermissionName, guiBindingContext.DependentDetailName, Operate.Find))
{
guiBindingContext.BindDataName = null!;
((KryptonComboBox)c).SelectedIndex = -1;
((KryptonComboBox)c).Enabled = false;
((KryptonComboBox)c).StateCommon.ComboBox.Back.Color1 = Color.FromArgb(234, 242, 251);
((KryptonComboBox)c).StateCommon.ComboBox.Border.Color1 = Color.LightGray;
}
if (guiBindingContext.PermissionMode == Operate.Update && !loginContext.AssertDependents(loginContextPermission.AssertDependents, guiBindingContext.PermissionName, guiBindingContext.DependentDetailName, Operate.Update))
{
((KryptonComboBox)c).Enabled = false;
((KryptonComboBox)c).StateCommon.ComboBox.Back.Color1 = Color.FromArgb(234, 242, 251);
((KryptonComboBox)c).StateCommon.ComboBox.Border.Color1 = Color.LightGray;
}
}
}
else if (c is KryptonCheckBox)
{
((KryptonCheckBox)c).Enabled = enable;
BindingContextCustomAttribute guiBindingContext = ServiceHelper.GetService<BindingContextAttributeProvider>()!.GetCustomAttribute((KryptonCheckBox)c);
if (enable)
{
((KryptonCheckBox)c).StateCommon.ShortText.Color1 = Color.Black;
((KryptonCheckBox)c).StateCommon.LongText.Color1 = Color.Black;
if (guiBindingContext != null && guiBindingContext.EditModeColor == EnumEditModeColor.ReadOnly)
{
((KryptonCheckBox)c).Enabled = false;
}
}
else
{
((KryptonCheckBox)c).StateCommon.ShortText.Color1 = Color.DimGray;
((KryptonCheckBox)c).StateCommon.LongText.Color1 = Color.DimGray;
}
if (guiBindingContext != null && !string.IsNullOrEmpty(guiBindingContext.PermissionName) && string.IsNullOrEmpty(guiBindingContext.DependentDetailName))
{
if (guiBindingContext.PermissionMode == Operate.Find && !loginContext.Assert(loginContextPermission.Assert, guiBindingContext.PermissionName, Operate.Find))
{
guiBindingContext.BindDataName = null!;
((KryptonCheckBox)c).Visible = false;
}
if (guiBindingContext.PermissionMode == Operate.Update && !loginContext.Assert(loginContextPermission.Assert, guiBindingContext.PermissionName, Operate.Update))
{
((KryptonCheckBox)c).Enabled = false;
}
}
else if (guiBindingContext != null && !string.IsNullOrEmpty(guiBindingContext.PermissionName) && !string.IsNullOrEmpty(guiBindingContext.DependentDetailName))
{
if (guiBindingContext.PermissionMode == Operate.Find && !loginContext.AssertDependents(loginContextPermission.AssertDependents, guiBindingContext.PermissionName, guiBindingContext.DependentDetailName, Operate.Find))
{
guiBindingContext.BindDataName = null!;
((KryptonCheckBox)c).Visible = false;
}
if (guiBindingContext.PermissionMode == Operate.Update && !loginContext.AssertDependents(loginContextPermission.AssertDependents, guiBindingContext.PermissionName, guiBindingContext.DependentDetailName, Operate.Update))
{
((KryptonCheckBox)c).Enabled = false;
}
}
}
else if (c is KryptonDateTimePicker)
{
((KryptonDateTimePicker)c).Enabled = enable;
BindingContextCustomAttribute guiBindingContext = ServiceHelper.GetService<BindingContextAttributeProvider>()!.GetCustomAttribute((KryptonDateTimePicker)c);
if (enable)
{
((KryptonDateTimePicker)c).StateCommon.Border.Width = 1;
if (guiBindingContext == null)
{
//沒有設置時,默认白色
((KryptonDateTimePicker)c).StateCommon.Border.Color1 = Color.FromArgb(215, 229, 243);
((KryptonDateTimePicker)c).StateCommon.Back.Color1 = Color.White;
}
else if (guiBindingContext.EditModeColor == EnumEditModeColor.Required)
{
((KryptonDateTimePicker)c).StateCommon.Back.Color1 = Color.White;
((KryptonDateTimePicker)c).StateCommon.Border.Color1 = Color.Peru;
((KryptonDateTimePicker)c).StateActive.Border.DrawBorders = ((Krypton.Toolkit.PaletteDrawBorders)(((
(Krypton.Toolkit.PaletteDrawBorders.Top | Krypton.Toolkit.PaletteDrawBorders.Bottom) |
Krypton.Toolkit.PaletteDrawBorders.Left) | Krypton.Toolkit.PaletteDrawBorders.Right)));
}
else if (guiBindingContext.EditModeColor == EnumEditModeColor.ReadOnly)
{
((KryptonDateTimePicker)c).StateCommon.Border.Color1 = Color.LightGray;
((KryptonDateTimePicker)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251);
((KryptonDateTimePicker)c).Enabled = false;
}
else
{
((KryptonDateTimePicker)c).StateCommon.Back.Color1 = Color.White;
((KryptonDateTimePicker)c).StateCommon.Border.Color1 = Color.FromArgb(215, 229, 243);
}
}
else
{
((KryptonDateTimePicker)c).StateDisabled.Border.Color1 = Color.LightGray;
((KryptonDateTimePicker)c).StateDisabled.Back.Color1 = Color.FromArgb(234, 242, 251);
((KryptonDateTimePicker)c).StateDisabled.Content.Color1 = Color.Black;
}
if (guiBindingContext != null && !string.IsNullOrEmpty(guiBindingContext.PermissionName) && string.IsNullOrEmpty(guiBindingContext.DependentDetailName))
{
if (guiBindingContext.PermissionMode == Operate.Find && !loginContext.Assert(loginContextPermission.Assert, guiBindingContext.PermissionName, Operate.Find))
{
guiBindingContext.BindDataName = null!;
((KryptonDateTimePicker)c).Checked = false;
((KryptonDateTimePicker)c).Enabled = false;
((KryptonDateTimePicker)c).StateCommon.Border.Color1 = Color.LightGray;
((KryptonDateTimePicker)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251);
}
if (guiBindingContext.PermissionMode == Operate.Update && !loginContext.Assert(loginContextPermission.Assert, guiBindingContext.PermissionName, Operate.Update))
{
((KryptonDateTimePicker)c).Enabled = false;
((KryptonDateTimePicker)c).StateCommon.Border.Color1 = Color.LightGray;
((KryptonDateTimePicker)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251);
}
}
else if (guiBindingContext != null && !string.IsNullOrEmpty(guiBindingContext.PermissionName) && !string.IsNullOrEmpty(guiBindingContext.DependentDetailName))
{
if (guiBindingContext.PermissionMode == Operate.Find && !loginContext.AssertDependents(loginContextPermission.AssertDependents, guiBindingContext.PermissionName, guiBindingContext.DependentDetailName, Operate.Find))
{
guiBindingContext.BindDataName = null!;
((KryptonDateTimePicker)c).Checked = false;
((KryptonDateTimePicker)c).Enabled = false;
((KryptonDateTimePicker)c).StateCommon.Border.Color1 = Color.LightGray;
((KryptonDateTimePicker)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251);
}
if (guiBindingContext.PermissionMode == Operate.Update && !loginContext.AssertDependents(loginContextPermission.AssertDependents, guiBindingContext.PermissionName, guiBindingContext.DependentDetailName, Operate.Update))
{
((KryptonDateTimePicker)c).Enabled = false;
((KryptonDateTimePicker)c).StateCommon.Border.Color1 = Color.LightGray;
((KryptonDateTimePicker)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251);
}
}
}
else if (c is KryptonMaskedTextBox)
{
((KryptonMaskedTextBox)c).ReadOnly = !enable;
foreach (ButtonSpecAny but in ((KryptonMaskedTextBox)c).ButtonSpecs)
{
but.Enabled = enable ? ButtonEnabled.True : ButtonEnabled.False;
}
BindingContextCustomAttribute guiBindingContext = ServiceHelper.GetService<BindingContextAttributeProvider>()!.GetCustomAttribute((KryptonMaskedTextBox)c);
if (enable)
{
if (guiBindingContext == null)
{
//沒有設置時,默认白色
((KryptonMaskedTextBox)c).StateCommon.Back.Color1 = Color.White;
}
else if (guiBindingContext.EditModeColor == EnumEditModeColor.Required)
{
((KryptonMaskedTextBox)c).StateCommon.Border.Color1 = Color.Peru;
((KryptonMaskedTextBox)c).StateActive.Border.DrawBorders = ((Krypton.Toolkit.PaletteDrawBorders)(((
(Krypton.Toolkit.PaletteDrawBorders.Top | Krypton.Toolkit.PaletteDrawBorders.Bottom) |
Krypton.Toolkit.PaletteDrawBorders.Left) | Krypton.Toolkit.PaletteDrawBorders.Right)));
((KryptonMaskedTextBox)c).StateCommon.Back.Color1 = Color.White;
}
else if (guiBindingContext.EditModeColor == EnumEditModeColor.ReadOnly)
{
((KryptonMaskedTextBox)c).StateCommon.Border.Color1 = Color.Gainsboro;
((KryptonMaskedTextBox)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251);
((KryptonMaskedTextBox)c).ReadOnly = true;
}
else
{
((KryptonMaskedTextBox)c).StateCommon.Back.Color1 = Color.White;
}
}
else
{
((KryptonMaskedTextBox)c).StateCommon.Border.Color1 = Color.Gainsboro;
((KryptonMaskedTextBox)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251);
((KryptonMaskedTextBox)c).StateCommon.Content.Color1 = Color.Black;
}
if (guiBindingContext != null && !string.IsNullOrEmpty(guiBindingContext.PermissionName) && string.IsNullOrEmpty(guiBindingContext.DependentDetailName))
{
if (guiBindingContext.PermissionMode == Operate.Find && !loginContext.Assert(loginContextPermission.Assert, guiBindingContext.PermissionName, Operate.Find))
{
guiBindingContext.BindDataName = null!;
((KryptonMaskedTextBox)c).Text = null!;
((KryptonMaskedTextBox)c).ReadOnly = true;
((KryptonMaskedTextBox)c).StateCommon.Border.Color1 = Color.Gainsboro;
((KryptonMaskedTextBox)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251);
}
if (guiBindingContext.PermissionMode == Operate.Update && !loginContext.Assert(loginContextPermission.Assert, guiBindingContext.PermissionName, Operate.Update))
{
((KryptonMaskedTextBox)c).ReadOnly = true;
((KryptonMaskedTextBox)c).StateCommon.Border.Color1 = Color.Gainsboro;
((KryptonMaskedTextBox)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251);
}
}
else if (guiBindingContext != null && !string.IsNullOrEmpty(guiBindingContext.PermissionName) && !string.IsNullOrEmpty(guiBindingContext.DependentDetailName))
{
if (guiBindingContext.PermissionMode == Operate.Find && !loginContext.AssertDependents(loginContextPermission.AssertDependents, guiBindingContext.PermissionName, guiBindingContext.DependentDetailName, Operate.Find))
{
guiBindingContext.BindDataName = null!;
((KryptonMaskedTextBox)c).Text = null!;
((KryptonMaskedTextBox)c).ReadOnly = true;
((KryptonMaskedTextBox)c).StateCommon.Border.Color1 = Color.Gainsboro;
((KryptonMaskedTextBox)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251);
}
if (guiBindingContext.PermissionMode == Operate.Update && !loginContext.AssertDependents(loginContextPermission.AssertDependents, guiBindingContext.PermissionName, guiBindingContext.DependentDetailName, Operate.Update))
{
((KryptonMaskedTextBox)c).ReadOnly = true;
((KryptonMaskedTextBox)c).StateCommon.Border.Color1 = Color.Gainsboro;
((KryptonMaskedTextBox)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251);
}
}
}
else if (c is KryptonDataGridView)
{
foreach (DataGridViewColumn column in ((KryptonDataGridView)c).Columns)
{
column.ReadOnly = !enable;
BindingContextCustomAttribute guiBindingContext = column.GetCustomAttribute();
if (enable)
{
if (guiBindingContext == null)
{
//沒有設置時,默认白色
column.DefaultCellStyle.BackColor = Color.White;
}
else if (guiBindingContext.EditModeColor == EnumEditModeColor.Required)
{
column.DefaultCellStyle.BackColor = Color.LightYellow;
}
else if (guiBindingContext.EditModeColor == EnumEditModeColor.ReadOnly)
{
column.DefaultCellStyle.BackColor = Color.Gainsboro;
column.ReadOnly = true;
}
else
{
column.DefaultCellStyle.BackColor = Color.White;
}
}
else
{
column.DefaultCellStyle.BackColor = Color.FromArgb(234, 242, 251);
}
if (guiBindingContext != null && !string.IsNullOrEmpty(guiBindingContext.PermissionName) && string.IsNullOrEmpty(guiBindingContext.DependentDetailName))
{
if (guiBindingContext.PermissionMode == Operate.Find && !loginContext.Assert(loginContextPermission.Assert, guiBindingContext.PermissionName, Operate.Find))
{
column.DataPropertyName = null;
column.ReadOnly = true;
column.DefaultCellStyle.BackColor = Color.FromArgb(234, 242, 251);
}
if (guiBindingContext.PermissionMode == Operate.Update && !loginContext.Assert(loginContextPermission.Assert, guiBindingContext.PermissionName, Operate.Update))
{
column.ReadOnly = true;
column.DefaultCellStyle.BackColor = Color.FromArgb(234, 242, 251);
}
}
else if (guiBindingContext != null && !string.IsNullOrEmpty(guiBindingContext.PermissionName) && !string.IsNullOrEmpty(guiBindingContext.DependentDetailName))
{
if (guiBindingContext.PermissionMode == Operate.Find && !loginContext.AssertDependents(loginContextPermission.AssertDependents, guiBindingContext.PermissionName, guiBindingContext.DependentDetailName, Operate.Find))
{
column.DataPropertyName = null;
column.ReadOnly = true;
column.DefaultCellStyle.BackColor = Color.FromArgb(234, 242, 251);
}
if (guiBindingContext.PermissionMode == Operate.Update && !loginContext.AssertDependents(loginContextPermission.AssertDependents, guiBindingContext.PermissionName, guiBindingContext.DependentDetailName, Operate.Update))
{
column.ReadOnly = true;
column.DefaultCellStyle.BackColor = Color.FromArgb(234, 242, 251);
}
}
}
}
if (c is KryptonCheckedListBox)
{
((KryptonCheckedListBox)c).Enabled = enable;
}
else if (c is KryptonListBox)
{
((KryptonListBox)c).Enabled = enable;
}
else if (c is KryptonRadioButton)
{
((KryptonRadioButton)c).Enabled = enable;
}
else if (c is KryptonButton)
{
BindingContextCustomAttribute guiBindingContext = ServiceHelper.GetService<BindingContextAttributeProvider>()!.GetCustomAttribute((KryptonButton)c);
((KryptonButton)c).Enabled = enable;
if (enable && guiBindingContext != null
&& !string.IsNullOrEmpty(guiBindingContext.PermissionName)
&& loginContext != null)
{
if (string.IsNullOrEmpty(guiBindingContext.DependentDetailName) && !loginContext.Assert(loginContextPermission.Assert, guiBindingContext.PermissionName, guiBindingContext.PermissionMode))
{
((KryptonButton)c).Enabled = false;
}
else if (!string.IsNullOrEmpty(guiBindingContext.DependentDetailName) && !loginContext.AssertDependents(loginContextPermission.AssertDependents, guiBindingContext.PermissionName, guiBindingContext.DependentDetailName, guiBindingContext.PermissionMode))
{
((KryptonButton)c).Enabled = false;
}
}
}
else
{
if (((Control)c).HasChildren) EnableControls(enable, ((Control)c).Controls);
}
}
private bool CheckValidate(IComponent c)
{
IContext loginContext = null!;
loginContext = ServiceHelper.GetInterfaceService<IContext>()!;
SecurityMessagePolicy securityMessagePolicy = ServiceHelper.GetTypeService<SecurityMessagePolicy>()!;
bool isCheck = true;
if (c is KryptonTextBox)
{
BindingContextCustomAttribute guiBindingContext = ServiceHelper.GetService<BindingContextAttributeProvider>()!.GetCustomAttribute((KryptonTextBox)c);
if (!((KryptonTextBox)c).ReadOnly && guiBindingContext != null && guiBindingContext.EditModeColor == EnumEditModeColor.Required)
{
//沒有設置時,默认白色
if (string.IsNullOrEmpty(((KryptonTextBox)c).GetValue()))
{
ShowMessageBox.ShowInfo(securityMessagePolicy.ComposeMessage(SecurityMessagePolicy.GUI_VALID_INPUT, GuiOperateHelper.GetLabelText(guiBindingContext.BindDisplayName)));
((KryptonTextBox)c).Focus();
return false;
}
}
}
else if (c is KryptonComboBox)
{
BindingContextCustomAttribute guiBindingContext = ServiceHelper.GetService<BindingContextAttributeProvider>()!.GetCustomAttribute((KryptonComboBox)c);
if (((KryptonComboBox)c).Enabled && guiBindingContext != null && guiBindingContext.EditModeColor == EnumEditModeColor.Required)
{
//沒有設置時,默认白色
if (((KryptonComboBox)c).SelectedIndex <= 0)
{
ShowMessageBox.ShowInfo(securityMessagePolicy.ComposeMessage(SecurityMessagePolicy.GUI_VALID_SELECT, GuiOperateHelper.GetLabelText(guiBindingContext.BindDisplayName)));
((KryptonComboBox)c).Focus();
return false;
}
}
}
else if (c is KryptonDateTimePicker)
{
BindingContextCustomAttribute guiBindingContext = ServiceHelper.GetService<BindingContextAttributeProvider>()!.GetCustomAttribute((KryptonDateTimePicker)c);
if (((KryptonDateTimePicker)c).Enabled && guiBindingContext != null && guiBindingContext.EditModeColor == EnumEditModeColor.Required)
{
//沒有設置時,默认白色
if (!((KryptonDateTimePicker)c).Checked)
{
ShowMessageBox.ShowInfo(securityMessagePolicy.ComposeMessage(SecurityMessagePolicy.GUI_VALID_INPUT, GuiOperateHelper.GetLabelText(guiBindingContext.BindDisplayName)));
((KryptonDateTimePicker)c).Focus();
return false;
}
}
}
else if (c is KryptonMaskedTextBox)
{
BindingContextCustomAttribute guiBindingContext = ServiceHelper.GetService<BindingContextAttributeProvider>()!.GetCustomAttribute((KryptonMaskedTextBox)c);
if (!((KryptonMaskedTextBox)c).ReadOnly && guiBindingContext != null && guiBindingContext.EditModeColor == EnumEditModeColor.Required)
{
//沒有設置時,默认白色
if (string.IsNullOrEmpty(((KryptonMaskedTextBox)c).GetValue()))
{
ShowMessageBox.ShowInfo(securityMessagePolicy.ComposeMessage(SecurityMessagePolicy.GUI_VALID_INPUT, GuiOperateHelper.GetLabelText(guiBindingContext.BindDisplayName)));
((KryptonMaskedTextBox)c).Focus();
return false;
}
}
}
else if (c is KryptonDataGridView)
{
if (!((KryptonDataGridView)c).Enabled) return isCheck;
foreach (DataGridViewRow row in ((KryptonDataGridView)c).Rows)
{
foreach (DataGridViewColumn column in ((KryptonDataGridView)c).Columns)
{
if (column.ReadOnly) continue;
BindingContextCustomAttribute guiBindingContext = column.GetCustomAttribute();
if (guiBindingContext != null && guiBindingContext.EditModeColor == EnumEditModeColor.Required)
{
if (column is DataGridViewComboBoxColumn || column is KryptonDataGridViewTextBoxColumn)
{
if (string.IsNullOrEmpty(row.Cells[column.Name].Value.ToString()))
{
ShowMessageBox.ShowInfo(securityMessagePolicy.ComposeMessage(SecurityMessagePolicy.GUI_VALID_INPUT, column.HeaderText));
((KryptonDataGridView)c).CurrentCell = ((KryptonDataGridView)c).Rows[row.Index].Cells[column.Index];
((KryptonDataGridView)c).FirstDisplayedScrollingRowIndex = row.Index;
return false;
}
}
else if (column is KryptonDataGridViewDateTimePickerColumn)
{
if (!((KryptonDataGridViewDateTimePickerCell)row.Cells[column.Name]).Checked)
{
ShowMessageBox.ShowInfo(securityMessagePolicy.ComposeMessage(SecurityMessagePolicy.GUI_VALID_INPUT, column.HeaderText));
((KryptonDataGridView)c).CurrentCell = ((KryptonDataGridView)c).Rows[row.Index].Cells[column.Index];
((KryptonDataGridView)c).FirstDisplayedScrollingRowIndex = row.Index;
return false;
}
}
}
}
}
}
else
{
if (((Control)c).HasChildren) isCheck = CheckValidate(((Control)c).Controls);
}
return isCheck;
}
public static string GetLabelText(string text)
{
if (string.IsNullOrEmpty(text)) return null;
return text.Substring(0, text.Length - 1);
}
public void ComposeMessage(string groupName, params Control[] cc)
{
foreach (Control c in cc)
{
c.Text = ApplicationServiceContext.localeMessageManager.ComposeMessage(groupName, c.Name);
}
}
public void ComposeMessage(string groupName, Control.ControlCollection cc)
{
foreach (Control c in cc)
{
c.Text = ApplicationServiceContext.localeMessageManager.ComposeMessage(groupName, c.Name);
}
}
}
}