示例#1
0
        /// <summary>
        /// Moves the given layer to the new position.
        /// </summary>
        /// <param name="layer">Layer that gets moved.</param>
        /// <param name="newPosition">Position  the layer gets moved to.</param>
        public void MoveLayer(ILayer layer, int newPosition)
        {
            IFeatureLayer mLayer = layer as IFeatureLayer;

            if (mLayer == null)
            {
                return;
            }

            int index = _layers.FindIndex(f => ReferenceEquals(f.Layer, mLayer));

            if (index < 0 || index == newPosition)
            {
                return;
            }

            LayerSelection old = _layers[index];

            _layers.RemoveAt(index);

            if (_layers.Count <= newPosition) // after the list
            {
                _layers.Add(old);
            }
            else if (newPosition < 0) // before the list
            {
                _layers.Insert(0, old);
            }
            else
            {
                _layers.Insert(newPosition, old);  // somewhere inside
            }
            ChangeDataSource();
        }
示例#2
0
        /// <summary>
        /// Moves the given layer to the new position.
        /// </summary>
        /// <param name="layer">Layer that gets moved.</param>
        /// <param name="newPosition">Position  the layer gets moved to.</param>
        public void MoveLayer(ILayer layer, int newPosition)
        {
            IFeatureLayer mLayer = layer as IFeatureLayer;

            if (mLayer == null)
            {
                return;
            }

            int index = _layers.FindIndex(f => object.ReferenceEquals(f.Layer, mLayer));

            if (index < 0 || index == newPosition)
            {
                return;
            }

            LayerSelection old = _layers[index];

            _layers.RemoveAt(index);

            if (_layers.Count <= newPosition) //hinter der Liste
            {
                _layers.Add(old);
            }
            else if (newPosition < 0) //vor der liste
            {
                _layers.Insert(0, old);
            }
            else
            {
                _layers.Insert(newPosition, old); //irgendwo innerhalb
            }
            ChangeDataSource();
        }
示例#3
0
        /// <summary>
        /// Adds the given layer to the list.
        /// </summary>
        /// <param name="layer">Layer, that should be added.</param>
        public void AddLayer(ILayer layer)
        {
            IFeatureLayer mLayer = layer as IFeatureLayer;
            if (mLayer != null)
            {
                mLayer.SelectionChanged += SelectionChanged;
                LayerSelection layerSelection = _layers.FirstOrDefault(f => object.ReferenceEquals(f.Layer, mLayer));
                if (layerSelection != null)
                    _layers.Remove(layerSelection);
                else
                    layerSelection = new LayerSelection(mLayer);
                _layers.Insert(0, layerSelection);

                ChangeDataSource();
            }
        }
示例#4
0
        /// <summary>
        /// Adds the given layer to the list.
        /// </summary>
        /// <param name="layer">Layer, that should be added.</param>
        public void AddLayer(ILayer layer)
        {
            if (layer is IFeatureLayer mLayer)
            {
                mLayer.SelectionChanged += SelectionChanged;
                LayerSelection layerSelection = _layers.FirstOrDefault(f => ReferenceEquals(f.Layer, mLayer));
                if (layerSelection != null)
                {
                    _layers.Remove(layerSelection);
                }
                else
                {
                    layerSelection = new LayerSelection(mLayer);
                }
                _layers.Insert(0, layerSelection);

                ChangeDataSource();
            }
        }