218 lines
7.7 KiB
C#
218 lines
7.7 KiB
C#
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using System.Windows;
|
|||
|
using System.Windows.Controls;
|
|||
|
using System.Windows.Data;
|
|||
|
using System.Windows.Documents;
|
|||
|
using System.Windows.Input;
|
|||
|
using System.Windows.Media;
|
|||
|
using System.Windows.Media.Imaging;
|
|||
|
using System.Windows.Navigation;
|
|||
|
using System.Windows.Shapes;
|
|||
|
using Aitex.Core.RT.Log;
|
|||
|
using System.Xml;
|
|||
|
using Aitex.Core.RT.ConfigCenter;
|
|||
|
using Aitex.Core.UI.View.Frame;
|
|||
|
|
|||
|
namespace Aitex.Core.UI.View.Common
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// Interaction logic for ParameterView.xaml
|
|||
|
/// </summary>
|
|||
|
public partial class ParameterView : UserControl
|
|||
|
{
|
|||
|
bool _isLoaded;
|
|||
|
ParameterViewModel _vm;
|
|||
|
string _gridEditorOldValue;
|
|||
|
bool _isGridModified;
|
|||
|
|
|||
|
public ParameterView()
|
|||
|
{
|
|||
|
InitializeComponent();
|
|||
|
|
|||
|
this.Loaded += new RoutedEventHandler(ParameterView_Loaded);
|
|||
|
}
|
|||
|
|
|||
|
void ParameterView_Loaded(object sender, RoutedEventArgs e)
|
|||
|
{
|
|||
|
//set permission
|
|||
|
this.IsEnabled = true;
|
|||
|
this.Name = "Parameter";
|
|||
|
|
|||
|
Account.ViewPermission viewPermission; // chaossong@add 20160414 for permission
|
|||
|
if (ViewManager.LoginAccount != null)
|
|||
|
viewPermission = ViewManager.LoginAccount.Permission[this.Name];
|
|||
|
else
|
|||
|
viewPermission = Account.ViewPermission.FullyControl;
|
|||
|
|
|||
|
switch (viewPermission)
|
|||
|
{
|
|||
|
case Account.ViewPermission.FullyControl:
|
|||
|
btnResetParam.IsEnabled = true;
|
|||
|
btnSaveParam.IsEnabled = true;
|
|||
|
dataGrid1.IsEnabled = true;
|
|||
|
break;
|
|||
|
default:
|
|||
|
btnResetParam.IsEnabled = false;
|
|||
|
btnSaveParam.IsEnabled = false;
|
|||
|
dataGrid1.IsEnabled = false;
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
if (_isLoaded)
|
|||
|
return;
|
|||
|
|
|||
|
_vm = DataContext as ParameterViewModel;
|
|||
|
if (_vm == null)
|
|||
|
throw new ApplicationException("系统配置页面没有设置DataContext,需要在窗口创建之前,设置初始配置数据");
|
|||
|
|
|||
|
InitTree();
|
|||
|
|
|||
|
_isLoaded = true;
|
|||
|
}
|
|||
|
|
|||
|
void InitTree()
|
|||
|
{
|
|||
|
treeView1.Items.Clear();
|
|||
|
|
|||
|
List<KeyValuePair<string, string>> lstSections = _vm.GetSectionList();
|
|||
|
foreach (KeyValuePair<string, string> item in lstSections)
|
|||
|
{
|
|||
|
var fNode = new TreeViewFolderItem(item.Key);
|
|||
|
|
|||
|
fNode.Tag = item;
|
|||
|
fNode.Selected += new RoutedEventHandler(sectionNode_Selected);
|
|||
|
|
|||
|
treeView1.Items.Add(fNode);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
void sectionNode_Selected(object sender, RoutedEventArgs e)
|
|||
|
{
|
|||
|
var selectedNode = sender as TreeViewFolderItem;
|
|||
|
if (selectedNode == null)
|
|||
|
return;
|
|||
|
|
|||
|
if (_isGridModified)
|
|||
|
{
|
|||
|
if (MessageBox.Show("是否需要保存未存盘的参数?", "未保存", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
|
|||
|
{
|
|||
|
btnSaveParam_Click(null, null);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
_isGridModified = false;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
KeyValuePair<string, string> keyPair = (KeyValuePair<string, string>)selectedNode.Tag;
|
|||
|
labelTile.Content = keyPair.Key;
|
|||
|
dataGrid1.Tag = keyPair.Value;
|
|||
|
|
|||
|
dataGrid1.ItemsSource = _vm.GetConfigEntries(keyPair.Value);
|
|||
|
}
|
|||
|
|
|||
|
private void GridEditor_LostFocus(object sender, RoutedEventArgs e)
|
|||
|
{
|
|||
|
TextBox tb = (sender as TextBox);
|
|||
|
if (tb != null)
|
|||
|
_isGridModified = tb.Text != _gridEditorOldValue;
|
|||
|
}
|
|||
|
|
|||
|
private void GridEditor_GotFocus(object sender, RoutedEventArgs e)
|
|||
|
{
|
|||
|
TextBox tb = (sender as TextBox);
|
|||
|
if (tb != null)
|
|||
|
_gridEditorOldValue = tb.Text;
|
|||
|
}
|
|||
|
|
|||
|
private void btnSaveParam_Click(object sender, RoutedEventArgs e)
|
|||
|
{
|
|||
|
_isGridModified = false;
|
|||
|
|
|||
|
string reason;
|
|||
|
if (!VerifyInputData(out reason))
|
|||
|
{
|
|||
|
MessageBox.Show(reason, "Aitex", MessageBoxButton.OK, MessageBoxImage.Warning);
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
string xpath = dataGrid1.Tag as string;
|
|||
|
if (_vm.SaveConfigSection(xpath.Substring(xpath.IndexOf("'") + 1, xpath.LastIndexOf("'") - xpath.IndexOf("'")-1), dataGrid1.ItemsSource as List<ConfigEntry>))
|
|||
|
MessageBox.Show("设定值保存成功!", "Aitex", MessageBoxButton.OK, MessageBoxImage.Information);
|
|||
|
else
|
|||
|
MessageBox.Show("设定值保存失败!", "Aitex", MessageBoxButton.OK, MessageBoxImage.Error);
|
|||
|
|
|||
|
btnResetParam_Click(null, null);
|
|||
|
}
|
|||
|
|
|||
|
private void btnResetParam_Click(object sender, RoutedEventArgs e)
|
|||
|
{
|
|||
|
dataGrid1.ItemsSource = _vm.GetConfigEntries(dataGrid1.Tag as string);
|
|||
|
}
|
|||
|
|
|||
|
private bool VerifyInputData(out string reason)
|
|||
|
{
|
|||
|
bool ret = true;
|
|||
|
dataGrid1.CancelEdit();
|
|||
|
var entryList = this.dataGrid1.ItemsSource.Cast<object>();
|
|||
|
reason = string.Empty;
|
|||
|
foreach (ConfigEntry entry in entryList)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
var inputText = entry.Value;
|
|||
|
var typeText = entry.Type;
|
|||
|
var minText = entry.RangeLowLimit;
|
|||
|
var maxText = entry.RangeUpLimit;
|
|||
|
|
|||
|
if (string.IsNullOrEmpty(inputText))
|
|||
|
continue;
|
|||
|
|
|||
|
if (String.Compare(typeText, "Int32", true) == 0)
|
|||
|
{
|
|||
|
int res = 0;
|
|||
|
if (!int.TryParse(inputText, out res))
|
|||
|
throw new Exception();
|
|||
|
int min = Convert.ToInt32(minText);
|
|||
|
int max = Convert.ToInt32(maxText);
|
|||
|
if (res < min || res > max)
|
|||
|
{
|
|||
|
ret = false;
|
|||
|
reason += string.Format("{0} 输入值错误!\n", entry.Description);
|
|||
|
var textBlock = dataGrid1.Columns[7].GetCellContent(entry) as System.Windows.Controls.TextBlock;
|
|||
|
if (textBlock != null)
|
|||
|
textBlock.Background = Brushes.Red;
|
|||
|
}
|
|||
|
}
|
|||
|
else if (String.Compare(typeText, "Double", true) == 0)
|
|||
|
{
|
|||
|
double res = 0;
|
|||
|
if (!double.TryParse(inputText, out res))
|
|||
|
throw new Exception();
|
|||
|
double min = Convert.ToDouble(minText);
|
|||
|
double max = Convert.ToDouble(maxText);
|
|||
|
if (res < min || res > max)
|
|||
|
{
|
|||
|
ret = false;
|
|||
|
reason += string.Format("{0} 输入值错误!\n", entry.Description);
|
|||
|
var textBlock = dataGrid1.Columns[7].GetCellContent(entry) as System.Windows.Controls.TextBlock;
|
|||
|
if (textBlock != null)
|
|||
|
textBlock.Background = Brushes.Red;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception)
|
|||
|
{
|
|||
|
reason += string.Format("{0} 输入值错误!\n", entry.Description);
|
|||
|
ret = false;
|
|||
|
}
|
|||
|
}
|
|||
|
return ret;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|