/// <summary> /// Group all selected layerages. /// </summary> public static void GroupAllSelectedLayers() { // Layerages IEnumerable <Layerage> selectedLayerages = LayerManager.GetAllSelected(); Layerage outermost = LayerManager.FindOutermostLayerage(selectedLayerages); if (outermost is null) { return; } Layerage parents = LayerManager.GetParentsChildren(outermost); int index = parents.Children.IndexOf(outermost); if (index < 0) { index = 0; } // GroupLayer Layerage groupLayerage = Layerage.CreateByGuid(); GroupLayer groupLayer = new GroupLayer { Id = groupLayerage.Id, IsSelected = true, IsExpand = false, // Refactoring IsRefactoringTransformer = true, }; LayerBase.Instances.Add(groupLayerage.Id, groupLayer); // Temp foreach (Layerage layerage in selectedLayerages) { ILayer layer = layerage.Self; Layerage childParents = LayerManager.GetParentsChildren(layerage); childParents.Children.Remove(layerage); layer.IsSelected = false; groupLayerage.Children.Add(layerage); } // Insert parents.Children.Insert(index, groupLayerage); }
/// <summary> /// Un group all group layerage /// </summary> public static void UngroupAllSelectedLayer() { // Layerages IEnumerable <Layerage> selectedLayerages = LayerManager.GetAllSelected(); Layerage outermost = LayerManager.FindOutermostLayerage(selectedLayerages); if (outermost is null) { return; } Layerage parents = LayerManager.GetParentsChildren(outermost); int index = parents.Children.IndexOf(outermost); if (index < 0) { index = 0; } do { Layerage groupLayerage = selectedLayerages.FirstOrDefault(l => l.Self.Type == LayerType.Group); if (groupLayerage is null) { break; } ILayer groupLayer = groupLayerage.Self; // Insert foreach (Layerage layerage in groupLayerage.Children) { ILayer layer = layerage.Self; layer.IsSelected = true; parents.Children.Insert(index, layerage); } groupLayerage.Children.Clear(); // Remove { Layerage groupLayerageParents = LayerManager.GetParentsChildren(groupLayerage); groupLayerageParents.Children.Remove(groupLayerage); } } while (selectedLayerages.Any(l => l.Self.Type == LayerType.Group) == false); }
private static void MezzanineCore(Layerage mezzanineLayer, IEnumerable <Layerage> mezzanineLayers) { // Layerages IEnumerable <Layerage> selectedLayerages = LayerManager.GetAllSelected(); Layerage outermost = LayerManager.FindOutermostLayerage(selectedLayerages); //if (outermost is null) return; // If count = 0, it will be useless. Layerage parents = LayerManager.GetParentsChildren(outermost); int index = parents.Children.IndexOf(outermost); if (index < 0) { index = 0; } if ((mezzanineLayer is null) == false) { mezzanineLayer.Self.IsSelected = true; parents.Children.Insert(index, mezzanineLayer); // Insert }