예제 #1
0
        /// <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);
            }
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
 /// <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);
 }
예제 #4
0
 /// <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);
예제 #5
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));
 }
예제 #6
0
 /// <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;
                }
            }
        }
예제 #14
0
 /// <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);
예제 #16
0
 /// <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);