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