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(); } } } } }
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(); } } } }