コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        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
            }