Exemplo n.º 1
0
        /// <summary>
        /// Creates and adds the required GUI elements
        /// </summary>
        private void CreateGUI()
        {
            // Create the column maps component container
            ColumnMapsPageContainer = new StackPanelCollapsibleVerticalMenu <UIElement>()
            {
                IsOpen = true,
                Text   = "Column configurations",
            };

            // Create the column maps page
            ColumnMapsPage = new PropertyMapsPage(QueryMap)
            {
                AllowVerticalScroll = false
            };

            // Add it to the container
            ColumnMapsPageContainer.Add(ColumnMapsPage);

            // Add it to the stack panel
            ContentStackPanel.Add(ColumnMapsPageContainer);

            // Create the data grid presenters component container
            DataGridPresentersComponentContainer = new StackPanelCollapsibleVerticalMenu <UIElement>()
            {
                IsOpen = true,
                Text   = "Data grid presenters"
            };

            // Create the data grid presenter maps page
            DataGridPresenterMapsPage = new DataGridPresenterMapsPage(QueryMap)
            {
                AllowVerticalScroll = false
            };

            // Add it to the container
            DataGridPresentersComponentContainer.Add(DataGridPresenterMapsPage);

            // Add it to the stack panel
            ContentStackPanel.Add(DataGridPresentersComponentContainer);
        }
        /// <summary>
        /// Creates and adds the required GUI elements
        /// </summary>
        private void CreateGUI()
        {
            Add("Overview", new Grid(), false);

            Host.Get(0).SelectTab(0);

            // Create the application menu options container
            ApplicationMenuOptionsContainer = new StackPanelCollapsibleVerticalMenu()
            {
                Text   = "Application",
                IsOpen = true
            };

            // Add the options button
            OptionsMenuButton = ApplicationMenuOptionsContainer.Add("Options", IconPaths.SettingsPath);

            OptionsMenuButton.Command = new RelayCommand(() =>
            {
                WindowsControlsDI.GetWindowsDialogManager.OpenAsync("Options", IconPaths.SettingsPath, () => new OptionsPage(), "options");
            });

            // Add it to the left side menu
            AddLeftMenuElement(ApplicationMenuOptionsContainer);
        }
        /// <summary>
        /// Recreates the dynamically created menu buttons
        /// </summary>
        public void Refresh()
        {
            // For every button container...
            foreach (var container in mDynamicPageButtonContainers)
            {
                // Remove it
                LeftMenuItemsContainer.Children.Remove(container);
            }

            // Get the manager
            var manager = CeidDiplomatikiDI.GetCeidDiplomatikiManager;

            // For every root page map grouped by category...
            foreach (var rootPageMapGroup in manager.RootPages.OrderBy(x => x.Order).GroupBy(x => x.Category))
            {
                // Create the presenter menu options container
                var presenterMenuOptionsContainer = new StackPanelCollapsibleVerticalMenu()
                {
                    IsOpen = true,
                    Text   = rootPageMapGroup.Key
                };

                // For every map...
                foreach (var rootPageMap in rootPageMapGroup)
                {
                    // Create the button
                    var button = new MenuButton()
                    {
                        Text         = rootPageMap.Name,
                        VectorSource = rootPageMap.PathData,
                        BackColor    = rootPageMap.Color.ToColor(),
                        ForeColor    = rootPageMap.Color.ToColor().DarkOrWhite(),
                        IsEnabled    = !(rootPageMap.Presenter == null && rootPageMap.Pages.Count == 0)
                    };

                    button.Command = new RelayCommand(() =>
                    {
                        WindowsControlsDI.GetWindowsDialogManager.OpenAsync(rootPageMap.Name, rootPageMap.PathData, () =>
                        {
                            // If there are other paged...
                            if (rootPageMap.Pages.Count() > 0)
                            {
                                // Create a sub pages page
                                return(new PageMapPage(rootPageMap));
                            }
                            // Else...
                            else
                            {
                                // Get the presenter
                                var presenter = rootPageMap.Presenter;

                                // Create and return a page
                                return(PresenterPagesFactory.CreatePresenterPage(presenter, rootPageMap));
                            }
                        }, rootPageMap.Id);
                    });

                    // Add it to the menu
                    presenterMenuOptionsContainer.Add(button);
                }

                // Add it to the containers
                mDynamicPageButtonContainers.Add(presenterMenuOptionsContainer);

                // Add it to the left side menu
                AddLeftMenuElement(presenterMenuOptionsContainer);
            }
        }
        /// <summary>
        /// Creates and returns the GUI in a form of a <see cref="FrameworkElement"/>
        /// </summary>
        /// <returns></returns>
        protected override FrameworkElement CreateBaseGUIElement()
        {
            // Create the content stack panel
            ContentStackPanel = new StackPanel()
            {
                Orientation = Orientation.Vertical
            };

            #region SQLite

            // Create the SQLite stack panel collapsible vertical menu
            SQLiteStackPanelCollapsibleVerticalMenu = new StackPanelCollapsibleVerticalMenu <UIElement>()
            {
                IsOpen = true,
                Text   = "SQLite"
            };

            // Create the SQLite options data grid
            SQLiteOptionsDataGrid = CeidDiplomatikiDataModelHelpers.CreateDefaultSQLiteOptionsDataModelDataGrid();

            SQLiteOptionsDataGrid.ConfigureOptions((container, grid, row, model) =>
            {
                container.AddDeleteOption(async(button) => await RemoveOptionAsync(model));
            });


            SQLiteOptionsDataGrid.Margin = new Thickness(NormalUniformMargin);

            // Add it to the collapsible menu
            SQLiteStackPanelCollapsibleVerticalMenu.Add(SQLiteOptionsDataGrid);

            // Add the collapsible menu to the stack panel
            ContentStackPanel.Children.Add(SQLiteStackPanelCollapsibleVerticalMenu);

            #endregion

            #region MySQL

            // Create the MySQL stack panel collapsible vertical menu
            MySQLStackPanelCollapsibleVerticalMenu = new StackPanelCollapsibleVerticalMenu <UIElement>()
            {
                IsOpen = true,
                Text   = "MySQL"
            };

            // Create the MySQL options data grid
            MySQLOptionsDataGrid = CeidDiplomatikiDataModelHelpers.CreateDefaultMySQLOptionsDataModelDataGrid();

            MySQLOptionsDataGrid.ConfigureOptions((container, grid, row, model) =>
            {
                container.AddOpenOption(async(button) =>
                {
                    var provider = SQLDatabaseProvider.MySQL;

                    // Get the analyzer
                    var analyzer = CeidDiplomatikiDI.GetDatabaseAnalyzer(provider);

                    // Get the connection string
                    model.TryGetConnectionString(out var connectionString);

                    // Get the database
                    var database = analyzer.GetDatabases().First(x => x.DatabaseName == model.DatabaseName);

                    // Show the page
                    await WindowsControlsDI.GetWindowsDialogManager.OpenAsync(model.DatabaseName, IconPaths.DatabasePath, () =>
                    {
                        return(new QueryMapsPage(database, model));
                    }, connectionString);
                });
                container.AddDeleteOption(async(button) => await RemoveOptionAsync(model));
            });



            MySQLOptionsDataGrid.Margin = new Thickness(NormalUniformMargin);

            // Add it to the collapsible menu
            MySQLStackPanelCollapsibleVerticalMenu.Add(MySQLOptionsDataGrid);

            // Add the collapsible menu to the stack panel
            ContentStackPanel.Children.Add(MySQLStackPanelCollapsibleVerticalMenu);

            #endregion

            #region SQLServer

            // Create the SQLServer stack panel collapsible vertical menu
            SQLServerStackPanelCollapsibleVerticalMenu = new StackPanelCollapsibleVerticalMenu <UIElement>()
            {
                IsOpen = true,
                Text   = "SQLServer"
            };

            // Create the SQLServer options data grid
            SQLServerOptionsDataGrid = CeidDiplomatikiDataModelHelpers.CreateDefaultSQLServerOptionsDataModelDataGrid();

            SQLServerOptionsDataGrid.ConfigureOptions((container, grid, row, model) =>
            {
                container.AddDeleteOption(async(button) => await RemoveOptionAsync(model));
            });


            SQLServerOptionsDataGrid.Margin = new Thickness(NormalUniformMargin);

            // Add it to the collapsible menu
            SQLServerStackPanelCollapsibleVerticalMenu.Add(SQLServerOptionsDataGrid);

            // Add the collapsible menu to the stack panel
            ContentStackPanel.Children.Add(SQLServerStackPanelCollapsibleVerticalMenu);

            #endregion

            #region PostgreSQL

            // Create the PostgreSQL stack panel collapsible vertical menu
            PostgreSQLStackPanelCollapsibleVerticalMenu = new StackPanelCollapsibleVerticalMenu <UIElement>()
            {
                IsOpen = true,
                Text   = "PostgreSQL"
            };

            // Create the PostgreSQL options data grid
            PostgreSQLOptionsDataGrid = CeidDiplomatikiDataModelHelpers.CreateDefaultPostgreSQLOptionsDataModelDataGrid();

            PostgreSQLOptionsDataGrid.ConfigureOptions((container, grid, row, model) =>
            {
                container.AddDeleteOption(async(button) => await RemoveOptionAsync(model));
            });

            PostgreSQLOptionsDataGrid.Margin = new Thickness(NormalUniformMargin);

            // Add it to the collapsible menu
            PostgreSQLStackPanelCollapsibleVerticalMenu.Add(PostgreSQLOptionsDataGrid);

            // Add the collapsible menu to the stack panel
            ContentStackPanel.Children.Add(PostgreSQLStackPanelCollapsibleVerticalMenu);

            #endregion

            // Return the content stack panel
            return(ContentStackPanel);
        }