Exemplo n.º 1
0
        public CosmeticTableViewVM(CosmeticTableBaseM cosTable)
        {
            this.MoveToObject = false;
            _axMapLib         = (cosTable.Source as CosmeticDataRepositoryVM).MapViewer;
            _mvLayer          = _axMapLib.getLayer(cosTable.Name);
            _cosTable         = cosTable;
            _isReadOnly       = true;
            _filterVM         = new CosmeticTableViewFilterVM(this, null);
            Title             = String.Format("{0}: \"{1}\"", Rekod.Properties.Resources.CosTableView_CosmeticLayer, cosTable.Text);

            foreach (var field in _cosTable.Fields)
            {
                if (field.Type != AbsM.EFieldType.Geometry)
                {
                    DataColumn dc = new DataColumn(field.Name, typeof(String));
                    Data.Columns.Add(dc);
                    if (cosTable.PrimaryKeyField == field)
                    {
                        dc.ReadOnly     = true;
                        Data.PrimaryKey = new[] { dc };
                    }
                }
            }

            GetColumns();
            Reload();

            PropertyChanged += CosmeticTableViewVM_PropertyChanged;
            SelectedItems.CollectionChanged += SelectedItems_CollectionChanged;
            Reload();
        }
Exemplo n.º 2
0
        public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
        {
            BindingGroup bindingGroup = (BindingGroup)value;

            if (bindingGroup.Items.Count > 0)
            {
                CosmeticTableBaseM cosmLayer = (CosmeticTableBaseM)bindingGroup.Items[0];
                SourcePostgres.Model.PgStyleLayerM layerStyle = (SourcePostgres.Model.PgStyleLayerM)bindingGroup.Items[1];

                CosmeticDataRepositoryVM cosmRepo = cosmLayer.Source as CosmeticDataRepositoryVM;

                String cosmName = (String)bindingGroup.GetValue(cosmLayer, "Text");
                if (String.IsNullOrWhiteSpace(cosmName))
                {
                    return(new ValidationResult(false, "Не задано название косметического слоя"));
                }

                bool cosmNameExists =
                    (from TableBaseM cosmTable in cosmRepo.Tables where (cosmTable.Text == cosmName && cosmLayer != cosmTable) select cosmTable).Count() > 0;
                if (cosmNameExists)
                {
                    return(new ValidationResult(false, "Слой с таким названием уже существует"));
                }

                BooleanYesNoConverter boolYesNo = new BooleanYesNoConverter();
                bool useBounds = Convert.ToBoolean(boolYesNo.ConvertBack(bindingGroup.GetValue(layerStyle, "UseBounds"), null, null, null));

                object minScaleObj = bindingGroup.GetValue(layerStyle, "MinScale");
                object maxScaleObj = bindingGroup.GetValue(layerStyle, "MaxScale");

                int minScale = -1;
                int maxScale = -1;

                try
                {
                    minScale = Convert.ToInt32(minScaleObj);
                }
                catch (Exception ex)
                {
                    String mes = "Ошибка в значении нижней границы масштаба: \n" + ex.Message;
                    return(new ValidationResult(false, mes));
                }
                try
                {
                    maxScale = Convert.ToInt32(maxScaleObj);
                }
                catch (Exception ex)
                {
                    String mes = "Ошибка в значении верхней границы масштаба: \n" + ex.Message;
                    return(new ValidationResult(false, mes));
                }
                if (useBounds)
                {
                    if (minScale < 0)
                    {
                        return(new ValidationResult(false, "Минимальное значение не может быть отрицательным числом"));
                    }
                    if (maxScale < 0)
                    {
                        return(new ValidationResult(false, "Максимальное значение не может быть отрицательным числом"));
                    }
                    if (minScale > maxScale)
                    {
                        return(new ValidationResult(false, "Минимальное значение не может быть больше максимального"));
                    }
                }

                return(ValidationResult.ValidResult);
            }
            else
            {
                return(new ValidationResult(false, "Не выбран объект для отображения"));
            }
        }