Beispiel #1
0
        private async Task <bool> LoadTree()
        {
            List <ArmtesElement> items = null;
            await Task.Factory.StartNew(() =>
            {
                byte attempts = 1;
                items         = null;
                while (items == null && attempts <= 3)
                {
                    if (armtes.LastException != null)
                    {
                        if ((armtes.LastException as WebException) == null)
                        {
                            break;
                        }
                    }

                    if (progressController != null)
                    {
                        if (progressController.IsCanceled)
                        {
                            break;
                        }
                    }

                    if (progressController != null)
                    {
                        this.Dispatcher.Invoke(new Action(() =>
                        {
                            if (progressController.IsOpen)
                            {
                                progressController.SetMessage(String.Format("{0}\r\n{1}-я попытка ...", "Загрузка списка объектов", attempts));
                            }
                        }));
                    }

                    items = armtes.GetElements("e0");
                    attempts++;
                }
            });

            if (items == null || items.Count == 0)
            {
                string errorDescription = this.GetNetErrorDescription(armtes.LastException);
                await this.ShowErrorMessageAsync(String.Format("Список объектов не получен!{0}Описание ошибки: {1}", Environment.NewLine, errorDescription));

                return(false);
            }

            ArmtesElement root = items.FirstOrDefault <ArmtesElement>();

            ExecuteExpandingCommand(root);

            //TODO: А надо ли?
            items = new List <ArmtesElement>();
            items.Add(root);

            this.tree.ItemsSource = items;
            return(true);
        }
Beispiel #2
0
        private void GetTreeElement(ArmtesElement parent)
        {
            string loading = "Loading...";

            if (parent.Items.Count == 1 &&
                parent.Items[0].Label == loading)
            {
                List <ArmtesElement> items = null;

                this.Dispatcher.Invoke(new Action(() => tree.Cursor = Cursors.Wait));

                items = armtes.GetElements(parent.Value);

                if (items == null)
                {
                    string errorDescription = this.GetNetErrorDescription(armtes.LastException);
                    this.ShowErrorMessage(errorDescription);
                }
                else
                {
                    parent.Items.Clear();
                    parent.Items.AddRange(items);
                    // установка родителя
                    foreach (var item in items)
                    {
                        item.Parent = parent;
                    }
                }
            }
            else
            {
                //System.Diagnostics.Debugger.Break();
            }
            this.Dispatcher.Invoke(new Action(() =>
            {
                tree.Cursor = Cursors.Arrow;
            }));
        }
Beispiel #3
0
        private void ExecuteExpandingCommand(object obj)
        {
            if (null == obj)
            {
                return;
            }
            RoutedEventArgs args    = obj as System.Windows.RoutedEventArgs;
            ArmtesElement   element = null;

            System.Windows.Controls.TreeViewItem tvi = null;
            if (null == args)
            {
                if (obj is System.Windows.Controls.TreeViewItem)
                {
                    tvi = obj as System.Windows.Controls.TreeViewItem;
                    if (tvi.Header is ArmtesElement)
                    {
                        element = tvi.Header as ArmtesElement;
                    }
                }
                else
                {
                    element = obj as ArmtesElement;
                }
                if (null == element)
                {
                    return;
                }
                else
                {
                    if (null == element.Items)
                    {
                        return;
                    }
                    SetAppStatus("Загрузка данных подразделения...");
                    GetTreeElement(element);
                    SetAppStatus();
                }
            }
            else
            {
                if (null == args.Source)
                {
                    return;
                }
                System.Windows.Controls.TreeViewItem treeViewItem = args.Source as System.Windows.Controls.TreeViewItem;
                if (null == treeViewItem)
                {
                    return;
                }
                if (null == treeViewItem.Header)
                {
                    return;
                }
                element = treeViewItem.Header as ArmtesElement;
                if (null == element)
                {
                    return;
                }
                if (null == element.Items)
                {
                    return;
                }

                if (element.Items.Count > 1)
                {
                    return;
                }

                args.Handled = true;

                SetAppStatus("Загрузка данных подразделения...");
                GetTreeElement(element);
                SetAppStatus();
            }
        }