public void RemoveTile(GnosisTileController tileController) { //Find sibling and grandparent GnosisSplitController parentSplitController = (GnosisSplitController)tileController.Parent; var siblingController = parentSplitController.ChildControllers.Find(x => x.ControlImplementation.ID != tileController.ControlImplementation.ID); GnosisSplitController grandparent = (GnosisSplitController)parentSplitController.Parent; //remove tile and sibling from current parent parentSplitController.RemoveChild(tileController); parentSplitController.RemoveChild(siblingController); //assign parent's name and order to sibling siblingController.ControlImplementation.Order = parentSplitController.ControlImplementation.Order; siblingController.ControlImplementation.GnosisName = parentSplitController.ControlImplementation.GnosisName; //replace current parent with the sibling grandparent.RemoveChild(parentSplitController); grandparent.AddChildController(siblingController); //redraw grandparent.BuildContent(); GnosisParentWindow parentWindow = (GnosisParentWindow)GlobalData.Singleton.ParentWindowController.ControlImplementation; GnosisXMLHelper.SaveParentWindow(parentWindow); }
public virtual void Setup() { if (entityController.Entity.ParentWindow != null) { // IGnosisParentWindowImplementation parentWindowImplementation = GlobalData.Singleton.ParentWindowImplementation; visibleController = new GnosisParentWindowController(entityController.Entity.ParentWindow, entityController); ((GnosisParentWindowController)visibleController).Setup(); } if (entityController.Entity.DocumentFrame != null) { GnosisTileController firstTile = GlobalData.Singleton.PrimarySplitController.GetFirstTile(); // IGnosisDocFrameImplementation docFrameImplementation = GlobalData.Singleton.ImplementationCreator.GetGnosisDocFrameImplementation(); visibleController = new GnosisDocumentFrameController(entityController.Entity.DocumentFrame, this, firstTile); ((GnosisDocumentFrameController)visibleController).Setup(); // firstTile.LoadFrame(docFrameController); } else if (entityController.Entity.ConnectionFrame != null) { // IGnosisConnectionFrameImplementation connectionFrameImplementation = GlobalData.Singleton.ImplementationCreator.GetGnosisConnectionFrameImplementation(); visibleController = new GnosisConnectionFrameController(entityController.Entity.ConnectionFrame, this, null); ((GnosisConnectionFrameController)visibleController).Setup(); } else if (entityController.Entity.NavigatorFrame != null) { // IGnosisNavFrameImplementation navFrameImplementation = GlobalData.Singleton.ImplementationCreator.GetGnosisNavFrameImplementation(); visibleController = new GnosisNavigatorFrameController(entityController.Entity.NavigatorFrame, this, GlobalData.Singleton.PrimarySplitController.NavTileController); ((GnosisNavigatorFrameController)visibleController).Setup(); // GlobalData.Singleton.PrimarySplitController.AddNavFrame((GnosisNavFrameController)visibleController); } else if (entityController.Entity.SearchFrame != null) { GnosisTileController firstTile = GlobalData.Singleton.PrimarySplitController.GetFirstTile(); // IGnosisSearchFrameImplementation searchFrameImp = GlobalData.Singleton.ImplementationCreator.GetGnosisSearchFrameImplementation(); visibleController = new GnosisSearchFrameController(entityController.Entity.SearchFrame, this, firstTile); ((GnosisSearchFrameController)visibleController).Setup(); // firstTile.LoadFrame(searchFrameController); } this.PropertyChanged += GnosisInstanceController_PropertyChanged; visibleController.PropertyChanged += VisibleController_PropertyChanged; }
private void AssignNamesAndOrders(GnosisSplit newParentSplit, GnosisSplitDetail splitDetail, GnosisTileController currentTileController, GnosisTile newSibling, GnosisController.TilePosition newTilePosition) { GnosisController.TilePosition currentTilePosition = GetPosition(currentTileController.ControlImplementation.Order, ((GnosisSplitController)currentTileController.Parent).SplitDirection); newParentSplit.GnosisName = "Split" + newParentSplit.ID.ToString() + Enum.GetName(typeof(GnosisController.TilePosition), currentTilePosition); splitDetail.GnosisName = newParentSplit.GnosisName + "Detail"; if (newTilePosition == GnosisController.TilePosition.TOP) { newSibling.GnosisName = newParentSplit.GnosisName + "TopTile"; newSibling.Order = 1; currentTileController.ControlImplementation.GnosisName = newParentSplit.GnosisName + "BottomTile"; currentTileController.ControlImplementation.Order = 2; } else if (newTilePosition == GnosisController.TilePosition.BOTTOM) { newSibling.GnosisName = newParentSplit.GnosisName + "BottomTile"; newSibling.Order = 2; currentTileController.ControlImplementation.GnosisName = newParentSplit.GnosisName + "TopTile"; currentTileController.ControlImplementation.Order = 1; } else if (newTilePosition == GnosisController.TilePosition.LEFT) { newSibling.GnosisName = newParentSplit.GnosisName + "LeftTile"; newSibling.Order = 1; currentTileController.ControlImplementation.GnosisName = newParentSplit.GnosisName + "RightTile"; currentTileController.ControlImplementation.Order = 2; } else { newSibling.GnosisName = newParentSplit.GnosisName + "RightTile"; newSibling.Order = 2; currentTileController.ControlImplementation.GnosisName = newParentSplit.GnosisName + "LeftTile"; currentTileController.ControlImplementation.Order = 1; } }
public void AddTile(GnosisTileController currentTileController, GnosisController.TilePosition newTilePosition) { //Create new sibling Tile and new parent Split //currentTile becomes a child of the new parent //new parent split GnosisSplit newParentSplit = GnosisControlCreator.CreateGnosisSplit(currentTileController.ControlImplementation.Order); GnosisSplitController newParentSplitController = new GnosisSplitController(newParentSplit, currentTileController.EntityController, currentTileController.Parent); //new split detail GnosisSplitDetail splitDetail = new GnosisSplitDetail(); splitDetail.ID = GlobalData.Singleton.GetNewControlID(); splitDetail.Order = 0; splitDetail._GnosisOrientation = GnosisController.OrientationType.LANDSCAPE; splitDetail.SplitPercentage = 50; if (newTilePosition == GnosisController.TilePosition.TOP || newTilePosition == GnosisController.TilePosition.BOTTOM) { splitDetail._SplitDirection = GnosisController.DirectionType.HORIZONTAL; } else { splitDetail._SplitDirection = GnosisController.DirectionType.VERTICAL; } newParentSplit.SplitDetails = new List <GnosisSplitDetail>(); newParentSplit.SplitDetails.Add(splitDetail); //newParentSplit.GnosisSplitDetails = new GnosisSplitDetail[2]; //newParentSplit.GnosisSplitDetails[0] = splitDetail; //new sibling tile GnosisTile newSiblingTile = new GnosisTile(); newSiblingTile.ID = GlobalData.Singleton.GetNewControlID(); AssignNamesAndOrders(newParentSplit, splitDetail, currentTileController, newSiblingTile, newTilePosition); //store old parent GnosisSplitController oldParent = (GnosisSplitController)currentTileController.Parent; //remove current tile from old parent oldParent.RemoveChild(currentTileController); //add current tile and new sibling to new parent newParentSplitController.AddChildModel(newSiblingTile); newParentSplitController.AddChildController(currentTileController); newParentSplitController.BuildContent(); //add new parent to old parent oldParent.AddChildController(newParentSplitController); oldParent.BuildContent(); //GnosisParentWindow parentWindow = (GnosisParentWindow)GlobalData.Singleton.ParentWindowController.ControlImplementation; //GnosisXMLHelper.SaveParentWindow(parentWindow); //newParentSplit.GnosisTiles = new GnosisTile[2]; //if (currentTileController.ControlImplementation.Order == 1) //{ // newParentSplit.GnosisTiles[0] = (GnosisTile)currentTileController.ControlImplementation; // newParentSplit.GnosisTiles[1] = newSiblingTile; //} //else //{ // newParentSplit.GnosisTiles[0] = newSiblingTile; // newParentSplit.GnosisTiles[1] = (GnosisTile)currentTileController.ControlImplementation; //} ////remove current tile from old parent and replace it with new split //GnosisSplit oldParent = (GnosisSplit)currentTileController.ParentSplitController.ControlImplementation; //oldParent.RemoveTile((GnosisTile)currentTileController.ControlImplementation); //oldParent.AddSplit(newParentSplit); //currentTileController.ParentSplitController.ReplaceChild(currentTileController, newParentSplitController); //notify listeners //currentParent.Altered = true; }