private TreeViewItemTool CreateTreeViewItem(CategoryTreeModel category)
        {
            TreeViewItemTool result = new TreeViewItemTool
            {
                Header      = category.CategoryName,
                Tag         = category,
                ContextMenu = new ContextMenu()
            };

            MenuItem itemAdd = new MenuItem {
                Header = "Add Child Category"
            };

            MenuItem itemDelete = new MenuItem {
                Header = "Delete Category"
            };

            itemAdd.Click += this.CategoryItem_Add;

            itemDelete.Click += this.CategoryItem_Delete;

            result.ContextMenu.Items.Add(itemAdd);

            result.ContextMenu.Items.Add(itemDelete);

            return(result);
        }
        private void Initialize()
        {
            var resulItems = (EventParser.ParseQuery(this, new ParseQueryEventArguments {
                Title = "QueryTablesStack"
            }));

            bool haveTables = false;

            foreach (TableMenuItem item in ((List <TableMenuItem>)resulItems).OrderBy(n => n.TableName))
            {
                TableModel table = item.TableModelObject;

                if (this.excludeCanvasTables.Contains(table.TableName))
                {
                    continue;
                }

                TreeViewItemTool tool = new TreeViewItemTool
                {
                    Header     = table.TableName,
                    Tag        = table,
                    IsCheckBox = true,
                    IsChecked  = included.Any(tn => tn.TableName == item.TableName)
                };

                this.uxTables.Items.Add(tool);

                haveTables = true;
            }

            if (!haveTables)
            {
                MessageBox.Show("No tables found to select from.");
            }
        }
        private bool SelectCategoryItem(TreeViewItemTool parent, int studyCategoryId)
        {
            if (parent.Tag != null)
            {
                CategoryTreeModel tagValue = parent.Tag.To <CategoryTreeModel>();

                if (tagValue.StudyCategoryId == studyCategoryId)
                {
                    parent.IsSelected = true;

                    return(true);
                }
            }

            if (parent.Items == null)
            {
                return(false);
            }

            foreach (TreeViewItemTool child in parent.Items)
            {
                child.IsExpanded = this.SelectCategoryItem(child, studyCategoryId);

                if (child.IsExpanded)
                {
                    return(true);
                }
            }

            return(false);
        }
        private void CategoryItem_Add(object sender, RoutedEventArgs e)
        {
            try
            {
                if (InputBox.ShowDialog("Category", "Name").IsFalse())
                {
                    return;
                }
                ;

                int studyCategoryId = BiblesData.Database.InsertCategory(InputBox.Result, this.SelectedCategory.StudyCategoryId);

                CategoryTreeModel treeModel = new CategoryTreeModel
                {
                    CategoryName          = InputBox.Result,
                    ParentStudyCategoryId = this.SelectedCategory.StudyCategoryId,
                    StudyCategoryId       = studyCategoryId
                };

                TreeViewItemTool tool = this.CreateTreeViewItem(treeModel);

                ((TreeViewItemTool)this.uxCategoryTree.SelectedItem).Items.Add(tool);

                ((TreeViewItemTool)this.uxCategoryTree.SelectedItem).IsExpanded = true;

                tool.IsSelected = true;
            }
            catch (Exception err)
            {
                ErrorLog.ShowError(err);
            }
        }
        private void CategoryItem_Delete(object sender, RoutedEventArgs e)
        {
            try
            {
                if (MessageDisplay.Show($"Are you sure you would like to delete {this.SelectedCategory.CategoryName}", "Warning", MessageBoxButton.YesNo) != MessageBoxResult.Yes)
                {
                    return;
                }

                BiblesData.Database.DeleteCategory(this.SelectedCategory.StudyCategoryId);

                TreeViewItemTool category = this.uxCategoryTree.SelectedItem.To <TreeViewItemTool>();

                if (category.Parent.GetType() == typeof(TreeViewItemTool))
                {
                    TreeViewItemTool parent = category.Parent.To <TreeViewItemTool>();

                    parent.Items.Remove(category);
                }
                else
                {
                    this.uxCategoryTree.Items.Remove(category);
                }
            }
            catch (Exception err)
            {
                ErrorLog.ShowError(err);
            }
        }
        public void Initialize()
        {
            ContextMenu categoryTreeContextMenu = new ContextMenu();

            MenuItem treeAdd = new MenuItem {
                Header = "Add Category"
            };

            treeAdd.Click += this.CategoryTree_Add;

            categoryTreeContextMenu.Items.Add(treeAdd);

            this.uxCategoryTree.ContextMenu = categoryTreeContextMenu;

            List <CategoryTreeModel> categoriesList = BiblesData.Database.GetCategoryTree();

            foreach (CategoryTreeModel category in categoriesList)
            {
                TreeViewItemTool categoryTreeItem = this.CreateTreeViewItem(category);

                this.LoadCategoryChildren(category, categoryTreeItem);

                this.uxCategoryTree.Items.Add(categoryTreeItem);
            }
        }
        private void AddItem(object item)
        {
            Type itemType = item.GetType();

            TreeViewItemTool headerItem = this.CreateHeader(itemType);

            List <PropertyInfo> propertiesList = new List <PropertyInfo>(itemType.GetProperties());

            List <ModelViewItem> itemsList = new List <ModelViewItem>();

            double maxCaptionWidth = 100;

            foreach (PropertyInfo inf in propertiesList)
            {
                double itemWidth = 0;

                ModelViewItem viewItem = this.CreateField(headerItem.Tag.ToString(), item, inf, out itemWidth);

                if (!viewItem.HasFieldInformation && this.LoadOnlyAttributedFields)
                {
                    continue;
                }

                viewItem.ModelViewItemGotFocus += this.ModelItem_Focus;

                itemsList.Add(viewItem);

                if (itemWidth > maxCaptionWidth)
                {
                    maxCaptionWidth = itemWidth;
                }
            }

            int itemIndex = 0;

            foreach (ModelViewItem modelItem in itemsList.OrderBy(i => i.Sort))
            {
                modelItem.CaptionWidth = maxCaptionWidth;

                string itemKey = $"{headerItem.Tag}:{modelItem.PropertyName}";

                itemsDesiredIndexDic.Add(itemKey, itemIndex);

                this.CreateVisibilityMenuItem(modelItem, itemKey.ToString());

                itemIndex++;

                if (modelItem.Visibility != Visibility.Visible)
                {
                    this.hidenItemsDict.Add(itemKey, modelItem.PropertyInfo);

                    continue;
                }

                headerItem.Items.Add(modelItem);
            }

            base.Items.Add(headerItem);
        }
        private TreeViewItemTool CreateTreeItem(ReportCategoryModel category)
        {
            TreeViewItemTool result = new TreeViewItemTool {
                Header = category.CategoryName, Tag = category.CategoryId
            };

            return(result);
        }
        private TreeViewItemTool BuildTree(long categoryId, TreeViewItemTool parentItem, List <ReportCategoryModel> categories)
        {
            foreach (ReportCategoryModel category in categories.Where(pc => pc.ParentCategoryId == categoryId))
            {
                parentItem.Items.Add(this.BuildTree(category.CategoryId, this.CreateTreeItem(category), categories));
            }

            return(parentItem);
        }
        private TreeViewItemTool CreateTreeItem(ReportCategoryModel category)
        {
            TreeViewItemTool result = new TreeViewItemTool {
                Header = category.CategoryName, Tag = category.CategoryId
            };

            result.Selected += this.TreeViewItemSelection_Changed;

            return(result);
        }
        private void LoadCategoryChildren(CategoryTreeModel category, TreeViewItemTool categoryTreeItem)
        {
            foreach (CategoryTreeModel childCategory in category.ChildCategories)
            {
                TreeViewItemTool childTreeItem = this.CreateTreeViewItem(childCategory);

                this.LoadCategoryChildren(childCategory, childTreeItem);

                categoryTreeItem.Items.Add(childTreeItem);
            }
        }
Beispiel #12
0
        private async void ConnectToGitHub()
        {
            await Task.Run(() =>
            {
                this.Dispatcher.Invoke(() =>
                {
                    this.uxMessage.Content = "Connecting with server";
                });

                this.gitHubClient = new GitHubClient(new ProductHeaderValue("fromtheword"));

                this.gitHubClient.SetRequestTimeout(new TimeSpan(0, 5, 0));

                Task <Repository> repository = this.gitHubClient.Repository.Get("fromtheword", "Bibles-Application");

                long reposirotyId = repository.Result.Id;

                IReadOnlyList <RepositoryContent> allContent = this.gitHubClient.Repository.Content.GetAllContents(reposirotyId).Result;

                foreach (RepositoryContent content in allContent.Where(t => t.Type == ContentType.Dir))
                {
                    if (!this.directoryNames.Contains(content.Name))
                    {
                        continue;
                    }

                    TreeViewItemTool treeItem = null;

                    this.Dispatcher.Invoke(() =>
                    {
                        treeItem = new TreeViewItemTool {
                            Header = content.Name, ResourceImageName = "Folder"
                        };

                        this.uxDownloadTree.Items.Add(treeItem);
                    });

                    this.LoadDirectoryContent(content, treeItem, reposirotyId);
                }

                RepositoryContent biblesRepository = allContent.First(n => n.Name == "Bibles.msi");

                this.Dispatcher.Invoke(() =>
                {
                    TreeViewItemTool treeItem = new TreeViewItemTool {
                        Header = "Bibles Install", IsCheckBox = true, Tag = biblesRepository
                    };

                    this.uxDownloadTree.Items.Add(treeItem);
                });
            });
        }
        private void LoadTreeItems(string verseKey)
        {
            ModelsLink verseTree = BiblesData.Database.GetLinkTree(verseKey);

            TreeViewItemTool item = new TreeViewItemTool
            {
                Header = GlobalStaticData.Intance.GetKeyDescription(verseTree.BibleVerseKey),
                Tag    = verseTree.BibleVerseKey
            };

            this.uxLinkTree.Items.Add(item);

            this.LoadTreeItems(item, verseTree);
        }
        public void IsReadOnly(int parentIndex, string propertyName, bool isReadOnly)
        {
            TreeViewItemTool parent = (TreeViewItemTool)base.Items[parentIndex];

            foreach (ModelViewItem item in parent.Items)
            {
                if (item.PropertyName != propertyName)
                {
                    continue;
                }

                item.IsReadOnly = isReadOnly;

                break;
            }
        }
        private void DeleteCategory_Cliked(object sender, System.Windows.RoutedEventArgs e)
        {
            if (this.SelectedCategory == null)
            {
                MessageBox.Show("Please Select a Category.");

                return;
            }

            try
            {
                long categoryId = this.SelectedCategory.Tag.ToInt64();

                ReportTablesRepository repo = new ReportTablesRepository();

                if (repo.CategoryHaveReports(categoryId))
                {
                    throw new ApplicationException("Cannot delete Category while reports are attached.");
                }

                string message = $"Are you sure that you want to delete '{this.SelectedCategory.Header}'?";

                MessageBoxResult boxResult = MessageBox.Show(message, "Delete", MessageBoxButton.YesNo);

                if (boxResult != MessageBoxResult.Yes)
                {
                    return;
                }

                repo.DeleteCategory(categoryId);

                if (this.SelectedCategory.Parent.GetType() == typeof(TreeViewItemTool))
                {
                    TreeViewItemTool parent = this.SelectedCategory.Parent as TreeViewItemTool;

                    parent.Items.Remove(this.SelectedCategory);
                }
                else
                {
                    this.uxCategoryTree.Items.Remove(this.SelectedCategory);
                }
            }
            catch (Exception err)
            {
                MessageBox.Show(err.InnerExceptionMessage());
            }
        }
        public void SetValue(int parentIndex, string propertyName, object value)
        {
            TreeViewItemTool parent = (TreeViewItemTool)base.Items[parentIndex];

            foreach (ModelViewItem item in parent.Items)
            {
                if (item.PropertyName != propertyName)
                {
                    continue;
                }

                PropertyInfo inf = item.BindingExpression.DataItem.GetType().GetProperty(item.BindingExpression.ParentBinding.Path.Path);

                inf.SetValue(item.BindingExpression.DataItem, value, null);

                break;
            }
        }
        private void OnDelete_Clicked(object sender, System.Windows.RoutedEventArgs e)
        {
            if (this.uxLinkTree.SelectedItem == null)
            {
                MessageDisplay.Show("Please select a Link");

                return;
            }

            try
            {
                string verseKey = ((TreeViewItemTool)this.uxLinkTree.SelectedItem).Tag.ParseToString();

                if (!this.modelsLinksDictionary.ContainsKey(verseKey))
                {
                    MessageDisplay.Show("Cannot delete topmost parent item.");

                    return;
                }

                string message = $"{TranslationDictionary.Translate("Are you sure you would like to delete?")} {GlobalStaticData.Intance.GetKeyDescription(verseKey)}";

                if (MessageDisplay.Show(message, "Warning", MessageBoxButton.YesNo) != MessageBoxResult.Yes)
                {
                    return;
                }

                ModelsLink deleteItem = this.modelsLinksDictionary[verseKey];

                BiblesData.Database.DeleteLink(deleteItem.LinkKeyId);

                this.modelsLinksDictionary.Remove(verseKey);

                TreeViewItemTool deleteTreeItemParent = ((TreeViewItemTool)this.uxLinkTree.SelectedItem).Parent.To <TreeViewItemTool>();

                deleteTreeItemParent.Items.Remove(this.uxLinkTree.SelectedItem);

                this.deletedLinksList.Add(verseKey);
            }
            catch (Exception err)
            {
                ErrorLog.ShowError(err);
            }
        }
        private void LoadTreeItems(TreeViewItemTool parent, ModelsLink verseTree)
        {
            foreach (ModelsLink child in verseTree.BibleVerseChildLinks)
            {
                TreeViewItemTool item = new TreeViewItemTool
                {
                    Header = GlobalStaticData.Intance.GetKeyDescription(child.BibleVerseKey),
                    Tag    = child.BibleVerseKey
                };

                parent.Items.Add(item);

                this.modelsLinksDictionary.Add(child.BibleVerseKey, child);

                if (child.BibleVerseChildLinks.Count > 0)
                {
                    this.LoadTreeItems(item, child);
                }
            }
        }
Beispiel #19
0
        private void InitializeMainTable(long masterReportId)
        {
            List <DataItemModel> systemTables = Integrity.GetSystemTables();

            DataSourceRepository repo = new DataSourceRepository();

            DataSourceMasterModel savedModel = repo.GetDataSourceMasterByPrimaryKey(masterReportId);

            Dictionary <string, DataSourceTableModel> selectedTables = repo
                                                                       .GetDataSourceTableByForeignKeyMasterReport_Id(masterReportId)
                                                                       .ToDictionary(d => d.TableName);

            this.MainTable = savedModel == null ? new DataSourceMasterModel {
                MasterReport_Id = masterReportId
            } : savedModel;

            this.MainTable.SourceTables = systemTables.ToArray();

            this.uxMainTable.Items.Add(this.MainTable);

            this.uxMainTable[0, 0].IsReadOnly = savedModel != null;

            foreach (DataItemModel table in systemTables)
            {
                if (table.DisplayValue == this.MainTable.MainTableName)
                {
                    continue;
                }

                TreeViewItemTool tableItem = new TreeViewItemTool
                {
                    Header     = table.DisplayValue,
                    IsCheckBox = true,
                    IsChecked  = selectedTables.ContainsKey(table.DisplayValue) ? selectedTables[table.DisplayValue].IsAvailable : false
                };

                this.uxOtherTables.Items.Add(tableItem);

                this.treeTableItems.Add(tableItem);
            }
        }
Beispiel #20
0
        private List <RepositoryContent> GetSelectedRepositories(TreeViewItemTool parent)
        {
            List <RepositoryContent> result = new List <RepositoryContent>();

            foreach (TreeViewItemTool item in parent.Items)
            {
                if (!item.IsCheckBox)
                {
                    result.AddRange(this.GetSelectedRepositories(item));

                    continue;
                }

                if (item.IsChecked)
                {
                    result.Add(item.Tag.To <RepositoryContent>());
                }
            }

            return(result);
        }
Beispiel #21
0
        private void LoadDirectoryContent(RepositoryContent parentContent, TreeViewItemTool parentTreeItem, long repositoryId)
        {
            IReadOnlyList <RepositoryContent> repositoryContentList = this.gitHubClient.Repository.Content.GetAllContents(repositoryId, parentContent.Path).Result;

            foreach (RepositoryContent content in repositoryContentList)
            {
                TreeViewItemTool treeItem = null;

                this.Dispatcher.Invoke(() =>
                {
                    treeItem = new TreeViewItemTool {
                        Header = content.Name, IsCheckBox = (content.Type != ContentType.Dir)
                    };
                });

                if (content.Type == ContentType.Dir)
                {
                    this.Dispatcher.Invoke(() =>
                    {
                        treeItem.ResourceImageName = "Folder";
                    });

                    this.LoadDirectoryContent(content, treeItem, repositoryId);
                }
                else
                {
                    this.Dispatcher.Invoke(() =>
                    {
                        treeItem.Tag = content;
                    });
                }

                this.Dispatcher.Invoke(() =>
                {
                    parentTreeItem.Items.Add(treeItem);
                });
            }
        }
        private void VisibilityItem_Checked(object sender, RoutedEventArgs e)
        { // We need to do this as the Visibility set leaves a gap as big as the one in my teeth
            MenuItem item = (MenuItem)sender;

            if (item.IsChecked)
            {
                string itemKey = item.Tag.ToString();

                string[] itemKeysArray = itemKey.Split(new char[] { ':' });

                PropertyInfo propertyItem = this.hidenItemsDict[itemKey];

                int desiredIndex = itemsDesiredIndexDic[itemKey];

                int parentIndex = 0;

                TreeViewItemTool parent = this.FindParentItem(itemKeysArray[0], out parentIndex);

                ModelViewItem modelItem = new ModelViewItem(parent.Tag.ToString(), this.Items[parentIndex], propertyItem);

                if (parent.Items.Count == 0)
                {
                    this.hidenItemsDict.Remove(itemKey);

                    parent.Items.Add(modelItem);

                    return;
                }

                modelItem.ModelViewItemGotFocus += this.ModelItem_Focus;

                string checkItemKey = $"{((ModelViewItem)parent.Items[0]).ParentObjectTypeName}:{((ModelViewItem)parent.Items[0]).PropertyName}";

                int itemsCollectionIndex = itemsDesiredIndexDic[checkItemKey];

                int insertAt = 0;

                while (itemsCollectionIndex < desiredIndex)
                {
                    insertAt++;

                    if (insertAt >= parent.Items.Count)
                    {
                        break;
                    }

                    checkItemKey = $"{((ModelViewItem)parent.Items[insertAt]).ParentObjectTypeName}:{((ModelViewItem)parent.Items[insertAt]).PropertyName}";

                    itemsCollectionIndex = itemsDesiredIndexDic[checkItemKey];
                }

                modelItem.Visibility = Visibility.Visible;

                this.hidenItemsDict.Remove(itemKey);

                parent.Items.Insert(insertAt, modelItem);
            }
            else
            {
                int parentIndex = -1;

                string itemKey = item.Tag.ToString();

                ModelViewItem propertyItem = this.FindItem(itemKey, out parentIndex);

                propertyItem.ModelViewItemGotFocus -= this.ModelItem_Focus;

                TreeViewItemTool parent = ((TreeViewItemTool)base.Items[parentIndex]);

                this.hidenItemsDict.Add(itemKey, propertyItem.PropertyInfo);

                parent.Items.Remove(propertyItem);
            }

            this.RefreshcaptionWidths();
        }