public static void SaveTreeAsFile(Dictionary <string, string> settings, TreeView tview, string filename) { using (System.IO.StreamWriter file = new System.IO.StreamWriter(filename)) { file.WriteLine("{"); file.Write(JsonConvert.SerializeObject("Ad2AventriSyncVersion") + ": "); file.WriteLine(JsonConvert.SerializeObject((float)1) + ", "); file.Write(JsonConvert.SerializeObject("Settings") + ": "); file.WriteLine(JsonConvert.SerializeObject(settings) + ","); string json = ""; foreach (object i in (tview.Items[0] as TreeViewItem).Items) { LdapSearchTreeViewItem citem = i as LdapSearchTreeViewItem; if (citem == null) { continue; } json += ", " + TreeViewItemToJson(citem); } if (json.Length > 0) { json = json.Substring(2); } file.WriteLine("\"LdapQuery\": [" + json + " ]"); file.Write("}"); } }
private static TreeViewItem CreateSearchTreeMenuItem(LdapSearchExprEnum op, string field, LdapSearchCmpEnum cmp, string value) { StackPanel sp = new StackPanel { Orientation = Orientation.Horizontal, Visibility = Visibility.Visible }; /*sp.Children.Add(new Image * { * Source = new BitmapImage(new Uri(img, UriKind.Relative)), * Height = 20, * Width = 20 * });*/ sp.Children.Add(new TextBlock { Text = "" }); LdapSearchTreeViewItem item = new LdapSearchTreeViewItem { Header = sp, ContextMenu = TreeViewContextMenu, SearchOperatorType = op, SearchFieldName = field, SearchComparorType = cmp, SearchValueName = value, IsExpanded = true }; item.SetHeaderText(); return(item); }
public static void CloneTreeview(TreeView tview) { LdapSearchTreeViewItem selectedItem = tview.SelectedItem as LdapSearchTreeViewItem; if (selectedItem == null) { return; } TreeViewItem parent = selectedItem.Parent as TreeViewItem; if (parent == null) { return; } LdapSearchTreeViewItem newItem = CreateSearchTreeMenuItem(selectedItem.SearchOperatorType, selectedItem.SearchFieldName, selectedItem.SearchComparorType, selectedItem.SearchValueName) as LdapSearchTreeViewItem; if (selectedItem.Items.Count > 0) { foreach (object i in selectedItem.Items) { LdapSearchTreeViewItem ci = CloneRecursive(i as LdapSearchTreeViewItem); if (ci != null) { newItem.Items.Add(ci); } } } parent.Items.Add(newItem); }
private static string TreeViewItemToJson(LdapSearchTreeViewItem item) { if (item.SearchOperatorType == LdapSearchExprEnum.Comparison) { return ("{ \"type\": " + JsonConvert.SerializeObject(item.SearchOperatorType) + "," + " \"field\": " + JsonConvert.SerializeObject(item.SearchFieldName) + ", " + " \"cmp\": " + JsonConvert.SerializeObject(item.SearchComparorType) + ", " + " \"value\": " + JsonConvert.SerializeObject(item.SearchValueName) + " }"); } string json = ""; foreach (object i in item.Items) { LdapSearchTreeViewItem citem = i as LdapSearchTreeViewItem; if (citem == null) { continue; } json += ", " + TreeViewItemToJson(citem); } if (json.Length > 0) { json = json.Substring(2); } return("{ \"type\": " + JsonConvert.SerializeObject(item.SearchOperatorType) + ", \"items\": [ " + json + " ]}"); }
public string GetSearchString() { if (SearchOperatorType == LdapSearchExprEnum.Comparison) { switch (SearchComparorType) { case LdapSearchCmpEnum.equal: return("(" + SearchFieldName + "=" + SearchValueName + ")"); case LdapSearchCmpEnum.approxEqual: return("(" + SearchFieldName + "~=" + SearchValueName + ")"); case LdapSearchCmpEnum.lessOrEqual: return("(" + SearchFieldName + "<=" + SearchValueName + ")"); case LdapSearchCmpEnum.moreOrEqual: return("(" + SearchFieldName + ">=" + SearchValueName + ")"); case LdapSearchCmpEnum.notEqual: return("(!(" + SearchFieldName + "=" + SearchValueName + "))"); case LdapSearchCmpEnum.notApproxEqual: return("(!(" + SearchFieldName + "~=" + SearchValueName + "))"); default: return(""); } } string search = ""; foreach (object i in Items) { LdapSearchTreeViewItem item = i as LdapSearchTreeViewItem; if (item == null) { continue; } search += item.GetSearchString(); } switch (SearchOperatorType) { case LdapSearchExprEnum.AndOperator: return("(&" + search + ")"); case LdapSearchExprEnum.OrOperator: return("(|" + search + ")"); case LdapSearchExprEnum.NotOperator: return("(!" + search + ")"); } return(""); }
private void SearchTreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e) { LdapSearchTreeViewItem item = SearchTreeView.SelectedItem as LdapSearchTreeViewItem; if (item != null) { SearchOperatorCombo.IsEnabled = true; switch (item.SearchOperatorType) { case LdapSearchExprEnum.Comparison: // comparator SearchOperatorCombo.SelectedIndex = 0; break; case LdapSearchExprEnum.AndOperator: // and SearchOperatorCombo.SelectedIndex = 1; break; case LdapSearchExprEnum.OrOperator: // or SearchOperatorCombo.SelectedIndex = 2; break; case LdapSearchExprEnum.NotOperator: // not SearchOperatorCombo.SelectedIndex = 3; break; } if (item.SearchOperatorType == LdapSearchExprEnum.Comparison) { setComparerIsEnabled(true); setComparerBoxes(); } else { setComparerIsEnabled(false); if (item.Items.Count > 0) { ((ComboBoxItem)SearchOperatorCombo.Items[0]).IsEnabled = false; } else { ((ComboBoxItem)SearchOperatorCombo.Items[0]).IsEnabled = true; } } } else { SearchOperatorCombo.IsEnabled = false; setComparerIsEnabled(false); } }
private async void SearchFieldInput_TextChanged(object sender, TextChangedEventArgs e) { LdapSearchTreeViewItem item = SearchTreeView.SelectedItem as LdapSearchTreeViewItem; if (item == null) { return; } int len = SearchFieldInput.Text.Length; await Task.Delay(200); if (item != SearchTreeView.SelectedItem || len != SearchFieldInput.Text.Length) { return; } item.SearchFieldName = SearchFieldInput.Text; item.SetHeaderText(); }
public static string GetLdapSearchQuery(TreeView tview) { SanitizeTreeview(tview); if ((tview.Items[0] as TreeViewItem).Items.Count == 0) { return(""); } string search = "(&(objectClass=user)"; foreach (object i in (tview.Items[0] as TreeViewItem).Items) { LdapSearchTreeViewItem item = i as LdapSearchTreeViewItem; if (i == null) { continue; } search += item.GetSearchString(); } search += ")"; return(search); }
private static LdapSearchTreeViewItem CloneRecursive(LdapSearchTreeViewItem selectedItem) { if (selectedItem == null) { return(null); } LdapSearchTreeViewItem newItem = CreateSearchTreeMenuItem(selectedItem.SearchOperatorType, selectedItem.SearchFieldName, selectedItem.SearchComparorType, selectedItem.SearchValueName) as LdapSearchTreeViewItem; if (selectedItem.Items.Count > 0) { foreach (object i in selectedItem.Items) { LdapSearchTreeViewItem ci = CloneRecursive(i as LdapSearchTreeViewItem); if (ci != null) { newItem.Items.Add(ci); } } } return(newItem); }
public static void SanitizeTreeview(TreeView tview) { List <LdapSearchTreeViewItem> itemsToDelete = new List <LdapSearchTreeViewItem>(); foreach (object i in tview.Items) { RunTreeviewRecursive(i, delegate(TreeViewItem item) { LdapSearchTreeViewItem litem = item as LdapSearchTreeViewItem; if (litem == null) { return; } if (litem.SearchOperatorType != LdapSearchExprEnum.Comparison && litem.Items.Count == 0) { itemsToDelete.Add(litem); } }); } while (itemsToDelete.Count > 0) { LdapSearchTreeViewItem item = itemsToDelete.First(); itemsToDelete.Remove(item); TreeViewItem pitem = item.Parent as TreeViewItem; if (pitem == null) { continue; } pitem.Items.Remove(item); LdapSearchTreeViewItem lpitem = pitem as LdapSearchTreeViewItem; if (lpitem == null) { continue; } if (lpitem.SearchOperatorType != LdapSearchExprEnum.Comparison && lpitem.Items.Count == 0) { itemsToDelete.Add(lpitem); } } }
private void SanitizeSelectedSearchItemClick(object sender, RoutedEventArgs e) { if (SearchTreeView.SelectedItem != null) { List <LdapSearchTreeViewItem> itemsToDelete = new List <LdapSearchTreeViewItem>(); TreeViewHelpers.RunTreeviewRecursive(SearchTreeView.SelectedItem, delegate(TreeViewItem item) { LdapSearchTreeViewItem litem = item as LdapSearchTreeViewItem; if (litem == null) { return; } if (litem.SearchOperatorType != LdapSearchExprEnum.Comparison && litem.Items.Count == 0) { itemsToDelete.Add(litem); } }); while (itemsToDelete.Count > 0) { LdapSearchTreeViewItem item = itemsToDelete.First(); itemsToDelete.Remove(item); TreeViewItem pitem = item.Parent as TreeViewItem; if (pitem == null) { continue; } pitem.Items.Remove(item); LdapSearchTreeViewItem lpitem = pitem as LdapSearchTreeViewItem; if (lpitem == null) { continue; } if (lpitem.SearchOperatorType != LdapSearchExprEnum.Comparison && lpitem.Items.Count == 0) { itemsToDelete.Add(lpitem); } } } }
private void setComparerBoxes() { LdapSearchTreeViewItem item = SearchTreeView.SelectedItem as LdapSearchTreeViewItem; if (item == null) { return; } SearchFieldInput.Text = item.SearchFieldName; switch (item.SearchComparorType) { case LdapSearchCmpEnum.equal: // = SearchComparatorCombo.SelectedIndex = 0; break; case LdapSearchCmpEnum.approxEqual: // ~= SearchComparatorCombo.SelectedIndex = 1; break; case LdapSearchCmpEnum.lessOrEqual: // <= SearchComparatorCombo.SelectedIndex = 2; break; case LdapSearchCmpEnum.moreOrEqual: // >= SearchComparatorCombo.SelectedIndex = 3; break; case LdapSearchCmpEnum.notEqual: // != SearchComparatorCombo.SelectedIndex = 4; break; case LdapSearchCmpEnum.notApproxEqual: // !~ SearchComparatorCombo.SelectedIndex = 5; break; } SearchValueInput.Text = item.SearchValueName; }
private void SearchComparatorCombo_SelectionChanged(object sender, SelectionChangedEventArgs e) { LdapSearchTreeViewItem item = SearchTreeView.SelectedItem as LdapSearchTreeViewItem; if (item == null) { return; } switch (SearchComparatorCombo.SelectedIndex) { case 0: // = item.SearchComparorType = LdapSearchCmpEnum.equal; break; case 1: // ~= item.SearchComparorType = LdapSearchCmpEnum.approxEqual; break; case 2: // <= item.SearchComparorType = LdapSearchCmpEnum.lessOrEqual; break; case 3: // >= item.SearchComparorType = LdapSearchCmpEnum.moreOrEqual; break; case 4: // != item.SearchComparorType = LdapSearchCmpEnum.notEqual; break; case 5: // !~ item.SearchComparorType = LdapSearchCmpEnum.notApproxEqual; break; } item.SetHeaderText(); }
private void SearchOperatorCombo_SelectionChanged(object sender, SelectionChangedEventArgs e) { LdapSearchTreeViewItem item = SearchTreeView.SelectedItem as LdapSearchTreeViewItem; if (item == null) { return; } switch (SearchOperatorCombo.SelectedIndex) { case 0: // comparator if (item.Items.Count <= 0) { item.SearchOperatorType = LdapSearchExprEnum.Comparison; setComparerIsEnabled(true); setComparerBoxes(); } break; case 1: // and item.SearchOperatorType = LdapSearchExprEnum.AndOperator; setComparerIsEnabled(false); break; case 2: // or item.SearchOperatorType = LdapSearchExprEnum.OrOperator; setComparerIsEnabled(false); break; case 3: // not item.SearchOperatorType = LdapSearchExprEnum.NotOperator; setComparerIsEnabled(false); break; } item.SetHeaderText(); }