void CreatePluginColumns()
        {
            int i;
            var disabled = DebugKeys.DisabledPlugins;

            var columns =
                PluginsManager.Current.Plugins
                .Where(p => p.Colomn != null)
                .Where(p => !disabled.Contains(p.Name))
                .OrderBy(p => p.Name)
                .Select(p => p.Colomn)
                .ToList();

            // Create a column for each plugin
            for (i = 0; i < columns.Count; i++)
            {
                var control = columns[i].CreateColumnView();
                var def     = new ColumnDefinition {
                    Width = new GridLength(columns[i].PreferredWidth, GridUnitType.Star)
                };

                OverviewContainerRootGrid.ColumnDefinitions.Add(def);
                OverviewContainerRootGrid.Children.Add(control);

                Grid.SetColumn(control, i);
                GridSplitter splitter = null;

                if (i < columns.Count - 1)
                {
                    splitter = CreateSplitter();

                    OverviewContainerRootGrid.Children.Add(splitter);
                    Grid.SetColumn(splitter, i);
                }

                var button = GetChildCollapseButton((FrameworkElement)control);

                // Attach collapse functionality to button
                if (button != null)
                {
                    GridColumnSizeHelper.SetCollapseAction(def, () => CollapseColumn(splitter, def, button.Content.ToString()));

                    button.Click += delegate { GridColumnSizeHelper.GetCollapseAction(def)(); };
                }
            }

            // Add ColumnCollapseView
            collapseView = new ColumnCollapseView();

            OverviewContainerRootGrid.ColumnDefinitions.Add(new ColumnDefinition {
                Width = new GridLength(0, GridUnitType.Auto)
            });
            OverviewContainerRootGrid.Children.Add(collapseView);

            Grid.SetColumn(collapseView, i++);

            List <object> storedColumns;
            bool          success = GridColumnSizeHelper.SetColumnSizes(OverviewContainerRootGrid, out storedColumns);

            // See if column was collapsed the last time we saved app state
            if (success)
            {
                foreach (var def in OverviewContainerRootGrid.ColumnDefinitions)
                {
                    if (def.Width.Value == 0)
                    {
                        // First set old width so that expand/save logic gets executed correctly
                        def.Width = GridColumnSizeHelper.GetPreviousGridLength(def);

                        Action x = GridColumnSizeHelper.GetCollapseAction(def);

                        // Execute collapse action defined when column was created
                        if (x != null)
                        {
                            x();
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        void CreatePluginColumns()
        {
            int i;
            var disabled = DebugKeys.DisabledPlugins;

            var columns =
                PluginsManager.Current.Plugins
                    .Where(p => p.Colomn != null)
                    .Where(p => !disabled.Contains(p.Name))
                    .OrderBy(p => p.Name)
                    .Select(p => p.Colomn)
                    .ToList();

            // Create a column for each plugin
            for (i = 0; i < columns.Count; i++)
            {
                var control = columns[i].CreateColumnView();
                var def = new ColumnDefinition { Width = new GridLength(columns[i].PreferredWidth, GridUnitType.Star) };

                OverviewContainerRootGrid.ColumnDefinitions.Add(def);
                OverviewContainerRootGrid.Children.Add(control);

                Grid.SetColumn(control, i);
                GridSplitter splitter = null;

                if (i < columns.Count - 1)
                {
                    splitter = CreateSplitter();

                    OverviewContainerRootGrid.Children.Add(splitter);
                    Grid.SetColumn(splitter, i);
                }

                var button = GetChildCollapseButton((FrameworkElement)control);

                // Attach collapse functionality to button
                if (button != null)
                {
                    GridColumnSizeHelper.SetCollapseAction(def, () => CollapseColumn(splitter, def, button.Content.ToString()));

                    button.Click += delegate { GridColumnSizeHelper.GetCollapseAction(def)(); };
                }
            }

            // Add ColumnCollapseView
            collapseView = new ColumnCollapseView();

            OverviewContainerRootGrid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(0, GridUnitType.Auto) });
            OverviewContainerRootGrid.Children.Add(collapseView);

            Grid.SetColumn(collapseView, i++);

            List<object> storedColumns;
            bool success = GridColumnSizeHelper.SetColumnSizes(OverviewContainerRootGrid, out storedColumns);

            // See if column was collapsed the last time we saved app state
            if (success)
            {
                foreach (var def in OverviewContainerRootGrid.ColumnDefinitions)
                {
                    if (def.Width.Value == 0)
                    {
                        // First set old width so that expand/save logic gets executed correctly
                        def.Width = GridColumnSizeHelper.GetPreviousGridLength(def);

                        Action x = GridColumnSizeHelper.GetCollapseAction(def);

                        // Execute collapse action defined when column was created
                        if (x != null) x();
                    }
                }
            }
        }