int IVectorLayerDefinition.GetPosition(INameStringPair pair)
        {
            if (this.PropertyMapping != null)
            {
                var p = pair as NameStringPairType;
                if (p != null)
                {
                    return(this.PropertyMapping.IndexOf(p));
                }
            }

            return(-1);
        }
        void IVectorLayerDefinition.AddPropertyMapping(INameStringPair pair)
        {
            var p = pair as NameStringPairType;

            if (p != null)
            {
                if (this.PropertyMapping == null)
                {
                    this.PropertyMapping = new BindingList <NameStringPairType>();
                }

                this.PropertyMapping.Add(p);
            }
        }
        void IVectorLayerDefinition.RemovePropertyMapping(INameStringPair pair)
        {
            var p     = pair as NameStringPairType;
            var pmaps = this.PropertyMapping;

            if (p != null && pmaps != null)
            {
                pmaps.Remove(p);
                if (pmaps.Count == 0)
                {
                    this.PropertyMapping = null;
                }
            }
        }
        int IVectorLayerDefinition.MoveDown(INameStringPair pair)
        {
            if (this.PropertyMapping != null)
            {
                int pos = ((IVectorLayerDefinition)this).GetPosition(pair);
                if (pos < this.PropertyMapping.Count - 1)
                {
                    int dest = pos + 1;
                    var p    = this.PropertyMapping[dest];
                    var p2   = (NameStringPairType)pair;

                    //Swap
                    this.PropertyMapping[dest] = p2;
                    this.PropertyMapping[pos]  = p;

                    return(dest);
                }
            }
            return(-1);
        }
        private void OnPropertyMappingChanged(bool state, string propertyName, string displayName)
        {
            INameStringPair nsp = null;

            foreach (var item in _props)
            {
                if (item.Name == propertyName)
                {
                    nsp = item;
                    break;
                }
            }

            if (state)
            {
                if (nsp == null)
                {
                    var pair = _parent.CreatePair(propertyName, displayName);
                    _props.Add(pair);
                    _vl.AddPropertyMapping(pair);
                }
                else
                {
                    nsp.Value = displayName;
                }
            }
            else //Turned off
            {
                if (nsp != null)
                {
                    _props.Remove(nsp);
                    _vl.RemovePropertyMapping(nsp);
                }
            }
            OnResourceChanged();
        }