/// <summary> /// Sets the mode and notify all properties. /// and copy all selected layerage. /// </summary> /// <param name="customDevice"> The custom-device. </param> /// <param name="layerageCollection"> The layerage-collection. </param> public void SetMode(CanvasDevice customDevice, LayerageCollection layerageCollection) { //Layerages IEnumerable <Layerage> selectedLayerages = LayerageCollection.GetAllSelected(layerageCollection); int count = selectedLayerages.Count(); if (count == 0) { this.SelectionMode = ListViewSelectionMode.None;//None this.Layerage = null; this.Layerages = null; Clipboard.Instances.Clear(); } else if (count == 1) { this.SelectionMode = ListViewSelectionMode.Single;//None Layerage layerage = selectedLayerages.Single(); this.Layerage = layerage.Clone(); this.Layerages = null; Clipboard.Instances.Clear(); LayerageCollection.CopyLayerage(customDevice, this.Layerage); } else if (count >= 2) { this.SelectionMode = ListViewSelectionMode.Multiple;//None this.Layerage = null; this.Layerages = from layerage in selectedLayerages select layerage.Clone(); Clipboard.Instances.Clear(); LayerageCollection.CopyLayerages(customDevice, this.Layerages); } }
/// <summary> /// Arrange all layers's visibility. /// </summary> public static void ArrangeLayersVisibility(Layerage layerage) { Visibility childVisibility = layerage.Self.IsExpand ? Visibility.Visible : Visibility.Collapsed; LayerageCollection._arrangeLayersExpaned(layerage.Children, childVisibility); }
/// <summary> /// Arrange all layers's control, depth, parents and expand. /// </summary> /// <param name="layerageCollection"> The layerage-collection. </param> public static void ArrangeLayers(LayerageCollection layerageCollection) { layerageCollection.RootControls.Clear(); LayerageCollection._arrangeLayers(layerageCollection, null, layerageCollection.RootLayerages, 0, Visibility.Visible); }
/// <summary> /// Arrange all layers's depth. /// </summary> /// <param name="layerageCollection"> The layerage-collection. </param> public static void ArrangeLayersDepth(LayerageCollection layerageCollection) => LayerageCollection._arrangeLayersDepth(layerageCollection.RootLayerages, 0);
/// <summary> /// Paste layerages ( form Clipboard to Layerbase). /// </summary> /// <param name="customDevice"> The custom-device. </param> /// <param name="layerages"> The layerages. </param> public static IEnumerable <Layerage> PasteLayerages(CanvasDevice customDevice, IEnumerable <Layerage> layerages) { return(from l in layerages select LayerageCollection.PasteLayerage(customDevice, l)); }
/// <summary> /// Arrange all layers's "children is zero". /// </summary> public static void ArrangeLayersChildrenZero(LayerageCollection layerageCollection) => LayerageCollection._arrangeLayersChildrenZero(layerageCollection.RootLayerages);
/// <summary> /// Remove a layerage. /// </summary> /// <param name="layerageCollection"> The layerage-collection. </param> /// <param name="removeLayerage"> The remove Layerage. </param> public static void Remove(LayerageCollection layerageCollection, Layerage removeLayerage) { IList <Layerage> parentsChildren = layerageCollection.GetParentsChildren(removeLayerage); parentsChildren.Remove(removeLayerage); }
/// <summary> /// Insert some layers to the top of destination layerage. /// </summary> /// <param name="layerageCollection"> The layerage-collection. </param> /// <param name="destination"> The destination layerage. </param> /// <param name="sources"> The source layers. </param> /// <param name="isBottomInsert"> Insert to the top or bottom. </param> public static void InsertRange(LayerageCollection layerageCollection, Layerage destination, IEnumerable <Layerage> sources, bool isBottomInsert) => LayerageCollection._insert(layerageCollection, destination, null, sources, isBottomInsert);
/// <summary> /// Add some layerages into children. /// </summary> /// <param name="layerageCollection"> The layerage-collection. </param> /// <param name="currentLayerage"> The current layerages. </param> /// <param name="layerages"> The source layerages. </param> public static void AddRange(LayerageCollection layerageCollection, Layerage currentLayerage, IEnumerable <Layerage> layerages) => LayerageCollection._add(layerageCollection, currentLayerage, null, layerages);
private static void _add(LayerageCollection layerageCollection, Layerage currentLayerage, Layerage layerage, IEnumerable <Layerage> layerages) { if (layerage != null) { if (layerage.Parents != null) { //Refactoring ILayer layerageParents = layerage.Parents.Self; layerageParents.IsRefactoringTransformer = true; layerageParents.IsRefactoringRender = true; layerageParents.IsRefactoringIconRender = true; layerage.Parents.RefactoringParentsTransformer(); layerage.Parents.RefactoringParentsRender(); layerage.Parents.RefactoringParentsIconRender(); } IList <Layerage> layerageParentsChildren = layerageCollection.GetParentsChildren(layerage); layerageParentsChildren.Remove(layerage); currentLayerage.Children.Add(layerage); //Refactoring ILayer currentLayer = currentLayerage.Self; currentLayer.IsRefactoringTransformer = true; currentLayer.IsRefactoringRender = true; currentLayer.IsRefactoringIconRender = true; currentLayerage.RefactoringParentsTransformer(); currentLayerage.RefactoringParentsRender(); currentLayerage.RefactoringParentsIconRender(); } else if (layerages != null) { foreach (Layerage child in layerages) { if (child.Parents != null) { //Refactoring ILayer childParents = child.Parents.Self; childParents.IsRefactoringTransformer = true; childParents.IsRefactoringRender = true; childParents.IsRefactoringIconRender = true; child.Parents.RefactoringParentsTransformer(); child.Parents.RefactoringParentsRender(); child.Parents.RefactoringParentsIconRender(); } IList <Layerage> childParentsChildren = layerageCollection.GetParentsChildren(child); childParentsChildren.Remove(child); currentLayerage.Children.Add(child); //Refactoring ILayer currentLayer = currentLayerage.Self; currentLayer.IsRefactoringTransformer = true; currentLayer.IsRefactoringRender = true; currentLayer.IsRefactoringIconRender = true; currentLayerage.RefactoringParentsTransformer(); currentLayerage.RefactoringParentsRender(); currentLayerage.RefactoringParentsIconRender(); } } }
/// <summary> /// Add a current-layerage into source-layerage's children. /// </summary> /// <param name="layerageCollection"> The layerage-collection. </param> /// <param name="currentLayerage"> The current layerage. </param> /// <param name="layerage"> The source layerage. </param> public static void Add(LayerageCollection layerageCollection, Layerage currentLayerage, Layerage layerage) => LayerageCollection._add(layerageCollection, currentLayerage, layerage, null);
private static void _insert(LayerageCollection layerageCollection, Layerage destination, Layerage source, IEnumerable <Layerage> sources, bool isBottomInsert) { IList <Layerage> parentsChildren = layerageCollection.GetParentsChildren(destination); int index = parentsChildren.IndexOf(destination); if (isBottomInsert) { index++; } if (index < 0) { index = 0; } if (index > parentsChildren.Count - 1) { index = parentsChildren.Count - 1; } if (source != null) { if (source.Parents != null) { //Refactoring ILayer sourceParents = source.Parents.Self; sourceParents.IsRefactoringTransformer = true; sourceParents.IsRefactoringRender = true; sourceParents.IsRefactoringIconRender = true; source.Parents.RefactoringParentsTransformer(); source.Parents.RefactoringParentsRender(); source.Parents.RefactoringParentsIconRender(); } IList <Layerage> sourceParentsChildren = layerageCollection.GetParentsChildren(source); sourceParentsChildren.Remove(source); parentsChildren.Insert(index, source); if (destination.Parents != null) { //Refactoring ILayer destinationParents = destination.Parents.Self; destinationParents.IsRefactoringTransformer = true; destinationParents.IsRefactoringRender = true; destinationParents.IsRefactoringIconRender = true; destination.Parents.RefactoringParentsTransformer(); destination.Parents.RefactoringParentsRender(); destination.Parents.RefactoringParentsIconRender(); } } else if (sources != null) { foreach (Layerage child in sources) { if (child.Parents != null) { //Refactoring ILayer childParents = child.Parents.Self; childParents.IsRefactoringTransformer = true; childParents.IsRefactoringRender = true; childParents.IsRefactoringIconRender = true; child.Parents.RefactoringParentsTransformer(); child.Parents.RefactoringParentsRender(); child.Parents.RefactoringParentsIconRender(); } IList <Layerage> childParentsChildren = layerageCollection.GetParentsChildren(child); childParentsChildren.Remove(child); parentsChildren.Insert(index, child); } } if (destination.Parents != null) { //Refactoring ILayer destinationParents = destination.Parents.Self; destinationParents.IsRefactoringTransformer = true; destinationParents.IsRefactoringRender = true; destinationParents.IsRefactoringIconRender = true; destination.Parents.RefactoringParentsTransformer(); destination.Parents.RefactoringParentsRender(); destination.Parents.RefactoringParentsIconRender(); } }
/// <summary> /// Drag complete. /// </summary> /// <param name="layerageCollection"> The layerage-collection. </param> /// <param name="destination"> The destination layerage. </param> /// <param name="source"> The source layerage. </param> /// <param name="destinationOverlayMode"> The destination OverlayMode. </param> /// <param name="sourceIsSelected"> The source SelectMode. </param> public static void DragComplete(LayerageCollection layerageCollection, Layerage destination, Layerage source, OverlayMode destinationOverlayMode, bool sourceIsSelected) { if (source == null) { return; } if (destination == null) { return; } ILayer destinationLayer = destination.Self; ILayer sourceLayer = source.Self; destinationLayer.Control.OverlayMode = OverlayMode.None; if (destinationLayer.IsSelected) { return; } if (destinationOverlayMode == OverlayMode.None) { return; } if (source == destination) { return; } bool isSelected = sourceLayer.IsSelected; if (isSelected == false) { switch (destinationOverlayMode) { case OverlayMode.Top: LayerageCollection.Insert(layerageCollection, destination, source, isBottomInsert: false); break; case OverlayMode.Center: LayerageCollection.Add(layerageCollection, destination, source); break; case OverlayMode.Bottom: LayerageCollection.Insert(layerageCollection, destination, source, isBottomInsert: true); break; } } else { //Layerages IEnumerable <Layerage> selectedLayerages = LayerageCollection.GetAllSelected(layerageCollection); switch (destinationOverlayMode) { case OverlayMode.Top: LayerageCollection.InsertRange(layerageCollection, destination, selectedLayerages, isBottomInsert: false); break; case OverlayMode.Center: LayerageCollection.AddRange(layerageCollection, destination, selectedLayerages); break; case OverlayMode.Bottom: LayerageCollection.InsertRange(layerageCollection, destination, selectedLayerages, isBottomInsert: true); break; } } }
/// <summary> /// Mezzanine a layerage. /// </summary> /// <param name="layerageCollection"> The layerage-collection. </param> /// <param name="mezzanineLayerage"> The mezzanine layerage. </param> public static void Mezzanine(LayerageCollection layerageCollection, Layerage mezzanineLayerage) => LayerageCollection._mezzanine(layerageCollection, mezzanineLayerage, null);
/// <summary> /// Remove all selected layerages. /// </summary> /// <param name="layerageCollection"> The layerage-collection. </param> public static void RemoveAllSelected(LayerageCollection layerageCollection) => LayerageCollection._removeAllSelected(layerageCollection, layerageCollection.RootLayerages);
/// <summary> /// Mezzanine layers. /// </summary> /// <param name="layerageCollection"> The layerage-collection. </param> /// <param name="mezzanineLayerages"> The mezzanine layers. </param> public static void MezzanineRange(LayerageCollection layerageCollection, IEnumerable <Layerage> mezzanineLayerages) => LayerageCollection._mezzanine(layerageCollection, null, mezzanineLayerages);
/// <summary> /// Insert a layerage to the top of destination layerage. /// </summary> /// <param name="layerageCollection"> The layerage-collection. </param> /// <param name="destination"> The destination layerage. </param> /// <param name="source"> The source layerage. </param> /// <param name="isBottomInsert"> Insert to the top or bottom. </param> public static void Insert(LayerageCollection layerageCollection, Layerage destination, Layerage source, bool isBottomInsert) => LayerageCollection._insert(layerageCollection, destination, source, null, isBottomInsert);