Пример #1
0
        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("}");
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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("");
        }
Пример #6
0
        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);
            }
        }
Пример #7
0
        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();
        }
Пример #8
0
        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);
        }
Пример #9
0
        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);
        }
Пример #10
0
        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);
                }
            }
        }
Пример #11
0
 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);
             }
         }
     }
 }
Пример #12
0
        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;
        }
Пример #13
0
        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();
        }
Пример #14
0
        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();
        }