public GnosisController.TilePosition GetPosition(int currentChildOrder, GnosisSplitController.DirectionType splitDirection) { if (splitDirection == GnosisSplitController.DirectionType.VERTICAL) { if (currentChildOrder == 1) { return(GnosisController.TilePosition.LEFT); } else { return(GnosisController.TilePosition.RIGHT); } } else { if (currentChildOrder == 1) { return(GnosisController.TilePosition.TOP); } else { return(GnosisController.TilePosition.BOTTOM); } } }
private void SetIconAndCaption() { if (SourceController is GnosisParentWindowController) { iconName = "th_icon-nav-window"; caption = "Parent Window"; } else if (SourceController is GnosisNavTileController) { iconName = "th_icon-navigator"; caption = "Navigator"; } else if (SourceController is GnosisTileController) { caption = "Tile " + ((GnosisTileController)SourceController).VisibleTileOrder.ToString(); GnosisController.TilePosition position = GlobalData.Singleton.LayoutController.GetPosition(SourceController.ControlImplementation.Order, ((GnosisSplitController)SourceController.Parent).SplitDirection); if (position == GnosisController.TilePosition.LEFT) { iconName = "th_icon-split-left"; } else if (position == GnosisController.TilePosition.RIGHT) { iconName = "th_icon-split-right"; } else if (position == GnosisController.TilePosition.TOP) { iconName = "th_icon-split-top"; } else { iconName = "th_icon-split-bottom"; } } else if (SourceController is GnosisPrimarySplitController) { caption = "Primary Split"; iconName = "th_icon-nav-window"; } else if (SourceController is GnosisSplitController) { caption = "Split"; GnosisSplitController.DirectionType splitDirection = ((GnosisSplitController)SourceController).SplitDirection; if (splitDirection == GnosisSplitController.DirectionType.VERTICAL) { iconName = "th_icon-parent-vertical"; } else { iconName = "th_icon-parent-horizontal"; } } TreeViewItemImplementation.Caption = caption; TreeViewItemImplementation.GnosisIcon = iconName; }
private void cboSplitDirection_SelectionChanged(object sender, SelectionChangedEventArgs e) { //check if change was caused by user rather than instantiation if (cboSplitDirection.IsDropDownOpen) { ComboBoxItem item = (ComboBoxItem)cboSplitDirection.SelectedItem; string newDirection = item.Content.ToString(); GnosisSplitController.DirectionType direction = (GnosisSplitController.DirectionType)Enum.Parse(typeof(GnosisSplitController.DirectionType), newDirection); ((GnosisSplitController)currentController).ChangeSplitDirection(direction); currentController.Highlight(); } }
//public void BuildContentFixedNavWidth(List<GnosisContainer> containers, // int splitUnits, GnosisSplitController.DirectionType splitDirection) //{ // contentGrid.Children.Clear(); // contentGrid.ColumnDefinitions.Clear(); // if (containers.Count == 1) // { // contentGrid.Children.Add((GnosisContainer)containers[0]); // } // else if (containers.Count == 2) // { // //build columns // //first column // ColumnDefinition colDef0 = new ColumnDefinition(); // colDef0.Width = new GridLength(splitUnits, GridUnitType.Pixel); // contentGrid.ColumnDefinitions.Add(colDef0); // //second column containing gridSplitter // ColumnDefinition colDef1 = new ColumnDefinition(); // colDef1.Width = GridLength.Auto; // contentGrid.ColumnDefinitions.Add(colDef1); // //third column // ColumnDefinition colDef2 = new ColumnDefinition(); // colDef2.Width = new GridLength(1, GridUnitType.Star); //fill remaining space // contentGrid.ColumnDefinitions.Add(colDef2); // splitter = new VerticalGridSplitter(this); // Grid.SetColumn(splitter, 1); // contentGrid.Children.Add(splitter); // //add containers // if (containers[0].Order == 1) // { // Grid.SetColumn((GnosisContainer)containers[0], 0); // Grid.SetColumn((GnosisContainer)containers[1], 2); // } // else // { // Grid.SetColumn((GnosisContainer)containers[1], 0); // Grid.SetColumn((GnosisContainer)containers[0], 2); // } // //add children to parent // contentGrid.Children.Add((GnosisContainer)containers[0]); // contentGrid.Children.Add((GnosisContainer)containers[1]); // } //} public void BuildContentFixedNavWidth(List <GnosisContainer> containers, int splitUnits, GnosisSplitController.DirectionType splitDirection) { contentGrid.Children.Clear(); contentGrid.ColumnDefinitions.Clear(); if (containers.Count == 1) { contentGrid.Children.Add((GnosisContainer)containers[0]); } else if (containers.Count == 2) { //build columns //first column ColumnDefinition colDef0 = new ColumnDefinition(); colDef0.Width = new GridLength(splitUnits, GridUnitType.Pixel); contentGrid.ColumnDefinitions.Add(colDef0); //second column containing gridSplitter ColumnDefinition colDef1 = new ColumnDefinition(); colDef1.Width = GridLength.Auto; contentGrid.ColumnDefinitions.Add(colDef1); //third column ColumnDefinition colDef2 = new ColumnDefinition(); colDef2.Width = new GridLength(1, GridUnitType.Star); //fill remaining space contentGrid.ColumnDefinitions.Add(colDef2); splitter = new VerticalGridSplitter(this); Grid.SetColumn(splitter, 1); contentGrid.Children.Add(splitter); //add containers if (containers[0].Order == 1) { Grid.SetColumn((GnosisContainer)containers[0], 0); Grid.SetColumn((GnosisContainer)containers[1], 2); } else { Grid.SetColumn((GnosisContainer)containers[1], 0); Grid.SetColumn((GnosisContainer)containers[0], 2); } //add children to parent contentGrid.Children.Add((GnosisContainer)containers[0]); contentGrid.Children.Add((GnosisContainer)containers[1]); } }
public void SetSplitterPercent(double newPercent, GnosisSplitController.DirectionType splitDirection) { double bound1 = newPercent / 10; double bound2 = 10 - bound1; if (splitDirection == GnosisSplitController.DirectionType.VERTICAL) { contentGrid.ColumnDefinitions[0].Width = new GridLength(bound1, GridUnitType.Star); contentGrid.ColumnDefinitions[2].Width = new GridLength(bound2, GridUnitType.Star); } else { contentGrid.RowDefinitions[0].Height = new GridLength(bound1, GridUnitType.Star); contentGrid.RowDefinitions[2].Height = new GridLength(bound2, GridUnitType.Star); } }
public override void SplitterMoved(GnosisSplitController.DirectionType splitDirection) { //Calculate new split percentage and split units and pass to the splitterMoved handler double percent; //The gridsplitter is in the second column double splitUnits = contentGrid.ColumnDefinitions[0].ActualWidth; double width2 = contentGrid.ColumnDefinitions[2].ActualWidth; //convert to percentage double total = splitUnits + width2; percent = splitUnits / total * 100; percent = Math.Round(percent, 2); splitterMovedHandler.Invoke(percent, (int)splitUnits); }
public virtual void SplitterMoved(GnosisSplitController.DirectionType splitDirection) { //Calculate new split percentage and pass to the splitterMoved handler double percent; //The gridsplitter is in the second column if (splitDirection == GnosisSplitController.DirectionType.VERTICAL) { //vertical split GridLength gl1 = contentGrid.ColumnDefinitions[0].Width; double width1 = gl1.Value; GridLength gl2 = contentGrid.ColumnDefinitions[2].Width; double width2 = gl2.Value; //convert to percentage double total = width1 + width2; percent = width1 / total * 100; } else { //horizontal split GridLength gl1 = contentGrid.RowDefinitions[0].Height; double height1 = gl1.Value; GridLength gl2 = contentGrid.RowDefinitions[2].Height; double height2 = gl2.Value; //convert to percent double total = height1 + height2; percent = height1 / total * 100; } percent = Math.Round(percent, 2); splitterMovedHandler.Invoke(percent); }
public void BuildContent(List <GnosisContainer> containers, double splitPercentage, GnosisSplitController.DirectionType splitDirection) { contentGrid.Children.Clear(); contentGrid.ColumnDefinitions.Clear(); contentGrid.RowDefinitions.Clear(); if (containers.Count == 1) { contentGrid.Children.Add((GnosisContainer)containers[0]); } else if (containers.Count == 2) { //Convert percentage width to * values double length1 = splitPercentage / 10; double length2 = 10 - length1; if (splitDirection == GnosisSplitController.DirectionType.VERTICAL) { //build columns //first column ColumnDefinition colDef0 = new ColumnDefinition(); colDef0.Width = new GridLength(length1, GridUnitType.Star); contentGrid.ColumnDefinitions.Add(colDef0); //second column containing gridSplitter ColumnDefinition colDef1 = new ColumnDefinition(); colDef1.Width = GridLength.Auto; contentGrid.ColumnDefinitions.Add(colDef1); //third column ColumnDefinition colDef2 = new ColumnDefinition(); colDef2.Width = new GridLength(length2, GridUnitType.Star); contentGrid.ColumnDefinitions.Add(colDef2); //add containers splitter = new VerticalGridSplitter(this); Grid.SetColumn(splitter, 1); contentGrid.Children.Add(splitter); if (containers[0].Order == 1) { Grid.SetColumn((GnosisContainer)containers[0], 0); Grid.SetColumn((GnosisContainer)containers[1], 2); } else { Grid.SetColumn((GnosisContainer)containers[1], 0); Grid.SetColumn((GnosisContainer)containers[0], 2); } } else { //build rows //first row RowDefinition rowDef0 = new RowDefinition(); rowDef0.Height = new GridLength(length1, GridUnitType.Star); contentGrid.RowDefinitions.Add(rowDef0); //second row containing gridSplitter RowDefinition rowDef1 = new RowDefinition(); rowDef1.Height = GridLength.Auto; contentGrid.RowDefinitions.Add(rowDef1); //third row RowDefinition rowDef2 = new RowDefinition(); rowDef2.Height = new GridLength(length2, GridUnitType.Star); contentGrid.RowDefinitions.Add(rowDef2); splitter = new HorizontalGridSplitter(this); Grid.SetRow(splitter, 1); contentGrid.Children.Add(splitter); //add containers if (containers[0].Order == 1) { Grid.SetRow((GnosisContainer)containers[0], 0); Grid.SetRow((GnosisContainer)containers[1], 2); } else { Grid.SetRow((GnosisContainer)containers[1], 0); Grid.SetRow((GnosisContainer)containers[0], 2); } } //add children to parent contentGrid.Children.Add((GnosisContainer)containers[0]); contentGrid.Children.Add((GnosisContainer)containers[1]); } }
public void ChangeSplitDirection(GnosisSplitController.DirectionType newDirection) { SplitDetail._SplitDirection = newDirection; BuildContent(); }