2using System.Collections.Generic;
4using System.Windows.Controls;
13 GreaterThanOrEqualTo = 3,
15 LesserThanOrEqualTo = 5,
25 public Operator Operator;
35 private int nrRules = 1;
36 private int ruleNr = 1;
48 private void OkButton_Click(
object Sender, RoutedEventArgs e)
50 this.DialogResult =
true;
53 private void CancelButton_Click(
object Sender, RoutedEventArgs e)
55 this.DialogResult =
false;
58 private void AddButton_Click(
object Sender, RoutedEventArgs e)
60 string Suffix = (++this.ruleNr).ToString();
62 StackPanel Panel =
new StackPanel()
64 Orientation = Orientation.Horizontal,
65 Margin =
new Thickness(0, 0, 0, 8)
68 ComboBox Field =
new ComboBox()
70 Name =
"Field" + Suffix,
73 ToolTip =
"Select field to searh on."
76 Field.Items.Add(
new ComboBoxItem() { Tag =
"ALT", Content =
"Altitude (ALT)" });
77 Field.Items.Add(
new ComboBoxItem() { Tag =
"APT", Content =
"Apartment (APT)" });
78 Field.Items.Add(
new ComboBoxItem() { Tag =
"AREA", Content =
"Area (AREA)" });
79 Field.Items.Add(
new ComboBoxItem() { Tag =
"BLD", Content =
"Building (BLD)" });
80 Field.Items.Add(
new ComboBoxItem() { Tag =
"CITY", Content =
"City (CITY)" });
81 Field.Items.Add(
new ComboBoxItem() { Tag =
"CLASS", Content =
"Class (CLASS)" });
82 Field.Items.Add(
new ComboBoxItem() { Tag =
"COUNTRY", Content =
"Country (COUNTRY)" });
83 Field.Items.Add(
new ComboBoxItem() { Tag =
"LAT", Content =
"Latitude (LAT)" });
84 Field.Items.Add(
new ComboBoxItem() { Tag =
"LONG", Content =
"Longitude (LONG)" });
85 Field.Items.Add(
new ComboBoxItem() { Tag =
"MAN", Content =
"Manufacturer (MAN)" });
86 Field.Items.Add(
new ComboBoxItem() { Tag =
"MLOC", Content =
"Meter Location (MLOC)" });
87 Field.Items.Add(
new ComboBoxItem() { Tag =
"MNR", Content =
"Meter Number (MNR)" });
88 Field.Items.Add(
new ComboBoxItem() { Tag =
"MODEL", Content =
"Model (MODEL)" });
89 Field.Items.Add(
new ComboBoxItem() { Tag =
"NAME", Content =
"Name (NAME)" });
90 Field.Items.Add(
new ComboBoxItem() { Tag =
"PURL", Content =
"Product URL (PURL)" });
91 Field.Items.Add(
new ComboBoxItem() { Tag =
"REGION", Content =
"Region (REGION)" });
92 Field.Items.Add(
new ComboBoxItem() { Tag =
"ROOM", Content =
"Room (ROOM)" });
93 Field.Items.Add(
new ComboBoxItem() { Tag =
"SN", Content =
"Serial Number (SN)" });
94 Field.Items.Add(
new ComboBoxItem() { Tag =
"STREET", Content =
"Street (STREET)" });
95 Field.Items.Add(
new ComboBoxItem() { Tag =
"STREETNR", Content =
"Street Number (STREETNR)" });
96 Field.Items.Add(
new ComboBoxItem() { Tag =
"V", Content =
"Version (V)" });
98 StackPanel Panel2 =
new StackPanel()
100 Orientation = Orientation.Vertical
103 Panel2.Children.Add(
new Label() { Content =
"Tag:" });
104 Panel2.Children.Add(Field);
105 Panel.Children.Add(Panel2);
107 ComboBox Operator =
new ComboBox()
109 Name =
"Operator" + Suffix,
111 ToolTip =
"Select search operator.",
115 Operator.Items.Add(
new ComboBoxItem() { Tag =
"=", Content =
"Equality (=)" });
116 Operator.Items.Add(
new ComboBoxItem() { Tag =
"<>", Content =
"Non-equality (<>)" });
117 Operator.Items.Add(
new ComboBoxItem() { Tag =
">", Content =
"Greater than (>)" });
118 Operator.Items.Add(
new ComboBoxItem() { Tag =
">=", Content =
"Greater than or equal to (>=)" });
119 Operator.Items.Add(
new ComboBoxItem() { Tag =
"<", Content =
"Lesser than (<)" });
120 Operator.Items.Add(
new ComboBoxItem() { Tag =
"<=", Content =
"Lesser than or equal to (<=)" });
121 Operator.Items.Add(
new ComboBoxItem() { Tag =
"InRange", Content =
"In range" });
122 Operator.Items.Add(
new ComboBoxItem() { Tag =
"NotInRange", Content =
"Not in range" });
123 Operator.Items.Add(
new ComboBoxItem() { Tag =
"Wildcard", Content =
"Wildcard" });
124 Operator.Items.Add(
new ComboBoxItem() { Tag =
"RegularExpression", Content =
"Regular Expression" });
126 Operator.SelectionChanged += this.Operator_SelectionChanged;
128 Panel2 =
new StackPanel()
130 Orientation = Orientation.Vertical,
131 Margin =
new Thickness(16, 0, 0, 0)
134 Panel2.Children.Add(
new Label() { Content =
"Operator:" });
135 Panel2.Children.Add(Operator);
136 Panel.Children.Add(Panel2);
138 TextBox Value1 =
new TextBox()
140 Name =
"Value" + Suffix +
"_1",
142 ToolTip =
"Select value to search on.",
143 Height = this.Operator1.ActualHeight
146 TextBox Value2 =
new TextBox()
148 Name =
"Value" + Suffix +
"_2",
150 ToolTip =
"Select value to search to.",
151 Height = this.Operator1.ActualHeight
154 Panel2 =
new StackPanel()
156 Orientation = Orientation.Vertical,
157 Margin =
new Thickness(16, 0, 0, 0)
160 Panel.Children.Add(Panel2);
162 StackPanel Panel3 =
new StackPanel()
164 Orientation = Orientation.Horizontal,
168 Panel2.Children.Add(Panel3);
170 StackPanel Panel4 =
new StackPanel()
172 Orientation = Orientation.Vertical
175 Panel3.Children.Add(Panel4);
177 Panel4.Children.Add(
new Label() { Content =
"Value:" });
178 Panel4.Children.Add(Value1);
180 Panel4 =
new StackPanel()
182 Orientation = Orientation.Vertical,
183 Visibility = Visibility.Hidden,
184 Margin =
new Thickness(16, 0, 0, 0)
187 Panel3.Children.Add(Panel4);
189 Panel4.Children.Add(
new Label() { Content =
"To:" });
190 Panel4.Children.Add(Value2);
192 Panel2 =
new StackPanel()
194 Orientation = Orientation.Vertical,
195 Margin =
new Thickness(16, 0, 0, 0),
199 Button Delete =
new Button()
201 Name =
"Delete" + Suffix,
203 Height = this.Operator1.ActualHeight,
204 Padding =
new Thickness(-10),
209 Delete.Click += this.Delete_Click;
211 Panel2.Children.Add(Delete);
212 Panel.Children.Add(Panel2);
214 this.SearchFields.Children.Add(Panel);
218 private void Delete_Click(
object Sender, RoutedEventArgs e)
220 if (this.nrRules <= 1)
222 MessageBox.Show(
this,
"At least one rule must exist.",
"Error", MessageBoxButton.OK, MessageBoxImage.Error);
226 Button Button = (Button)Sender;
227 StackPanel Rule = (StackPanel)(((StackPanel)Button.Parent).Parent);
228 ((StackPanel)Rule.Parent).Children.Remove(Rule);
233 public Rule[] GetRules()
235 List<Rule> Result =
new List<Rule>();
237 foreach (StackPanel Rule
in this.SearchFields.Children)
239 StackPanel Panel1 = (StackPanel)Rule.Children[0];
240 StackPanel Panel2 = (StackPanel)Rule.Children[1];
241 StackPanel Panel3 = (StackPanel)Rule.Children[2];
242 StackPanel Panel3_1 = (StackPanel)Panel3.Children[0];
243 StackPanel Panel3_1_1 = (StackPanel)Panel3_1.Children[0];
244 StackPanel Panel3_1_2 = (StackPanel)Panel3_1.Children[1];
245 ComboBox Field = (ComboBox)Panel1.Children[1];
246 ComboBox Operator = (ComboBox)Panel2.Children[1];
247 TextBox Value1 = (TextBox)Panel3_1_1.Children[1];
248 TextBox Value2 = (TextBox)Panel3_1_2.Children[1];
251 TagName = Field.Text;
252 foreach (ComboBoxItem Item
in Field.Items)
254 if (TagName == Item.Content.ToString())
256 TagName = Item.Tag.ToString();
261 Result.Add(
new Dialogs.IoT.Rule()
264 Operator = (Operator)Operator.SelectedIndex,
265 Value1 = Value1.Text,
270 return Result.ToArray();
273 private void Operator_SelectionChanged(
object Sender, SelectionChangedEventArgs e)
275 ComboBox Op = (ComboBox)Sender;
276 Operator Op2 = (Operator)Op.SelectedIndex;
277 StackPanel Panel = (StackPanel)(Op.Parent);
278 StackPanel Rule = (StackPanel)(Panel.Parent);
279 if (Rule.Children.Count < 3)
282 StackPanel Value = (StackPanel)(Rule.Children[2]);
283 StackPanel Values = (StackPanel)(Value.Children[0]);
284 StackPanel Value1Panel = (StackPanel)(Values.Children[0]);
285 StackPanel Value2Panel = (StackPanel)(Values.Children[1]);
286 Label Value1Label = (Label)(Value1Panel.Children[0]);
287 TextBox Value1 = (TextBox)(Value1Panel.Children[1]);
289 if (Op2 == Operator.InRange || Op2 == Operator.NotInRange)
291 Value1Label.Content =
"From:";
293 Value1.ToolTip =
"Select value to search from.";
294 Value2Panel.Visibility = Visibility.Visible;
298 Value1Label.Content =
"Value:";
300 Value2Panel.Visibility = Visibility.Hidden;
304 case Operator.Wildcard:
305 Value1.ToolTip =
"Select value to search on. Use asterisks (*) as wildcards.";
308 case Operator.RegularExpression:
309 Value1.ToolTip =
"Select regular expression to search on.";
313 Value1.ToolTip =
"Select value to search on.";
Interaction logic for SearchForThingsDialog.xaml
void InitializeComponent()
InitializeComponent
SearchForThingsDialog()
Interaction logic for SearchForThingsDialog.xaml
VerticalAlignment
Vertical alignment