示例#1
0
        public IObjectViewModel Add(ObjectType objectType)
        {
            ErrorMessage = string.Empty;

            var id   = MakeId();
            var name = $"Объект {id}";

            IObjectViewModel viewModel;
            IVariableWrapper variable;

            switch (objectType)
            {
            case ObjectType.Label:
                viewModel = new LabelViewModel(id, name, _dataProvider);
                break;

            case ObjectType.TextBox:
                variable  = CreateVariable(VariableType.String);
                viewModel = new TextBoxViewModel(id, name, variable, _dataProvider);
                break;

            case ObjectType.CheckBox:
                variable  = CreateVariable(VariableType.Bool);
                viewModel = new CheckBoxViewModel(id, name, variable, _dataProvider);
                break;

            case ObjectType.RadioButton:
                variable  = CreateVariable(VariableType.Bool);
                viewModel = new RadioViewModel(id, name, variable, _dataProvider)
                {
                    GroupName = GetRadioGroupName()
                };
                break;

            case ObjectType.DatePicker:
                variable  = CreateVariable(VariableType.Date);
                viewModel = new DatePickerViewModel(id, name, variable, _dataProvider);
                break;

            case ObjectType.TimePicker:
                variable  = CreateVariable(VariableType.Time);
                viewModel = new TimePickerViewModel(id, name, variable, _dataProvider);
                break;

            default:
                ErrorMessage = "Неизвестный тип объекта.";
                return(null);
            }

            viewModel.Properties.TabId        = _dataProvider.TabsRepository.SelectedTabIndex;
            viewModel.Properties.Left         = 20;
            viewModel.Properties.Top          = 20;
            viewModel.Properties.FontSettings = new FontSettings();
            ViewModels.Add(viewModel);
            Select(viewModel);
            ObjectModified?.Invoke(viewModel.Properties.Id);

            return(viewModel);
        }
示例#2
0
        public bool Update(IObjectViewModel buffer)
        {
            var viewModel = Find(buffer.Properties.Id);

            if (viewModel == null)
            {
                return(true);
            }

            var nameIsChanged = !Common.IsSameName(buffer.Properties.Name, viewModel.Properties.Name);

            if (nameIsChanged)
            {
                if (NameExists(buffer.Properties.Name))
                {
                    ErrorMessage = $"Объект с именем \"{buffer.Properties.Name}\" уже существует.";
                    return(false);
                }

                UpdateAllAssignedActions(viewModel.Properties.Name, buffer.Properties.Name);
            }

            if (viewModel is RadioViewModel)
            {
                SelectOnlyOneRadioInGroup((RadioViewModel)buffer);
            }

            if (viewModel is IActionProperties && buffer is IActionProperties)
            {
                var vm  = (IActionProperties)viewModel;
                var buf = (IActionProperties)buffer;

                var variableIsChanged = vm.ActionProperties.Variable != null &&
                                        !vm.ActionProperties.Variable.IsEqualTo(buf.ActionProperties.Variable);
                if (variableIsChanged)
                {
                    var oldVariableName =
                        !Common.IsSameName(buf.ActionProperties.Variable.Name, vm.ActionProperties.Variable.Name)
                            ? vm.ActionProperties.Variable.Name
                            : null;
                    if (!_variablesRepository.AddOrUpdate(buf.ActionProperties.Variable, oldVariableName))
                    {
                        ErrorMessage = _variablesRepository.ErrorMessage;
                        return(false);
                    }
                }
            }

            viewModel.Update(buffer);
            Select(viewModel);
            ObjectModified?.Invoke(viewModel.Properties.Id);
            return(true);
        }
示例#3
0
        /// <summary>
        /// Добавление десериализуемого объекта
        /// </summary>
        public void Add(IFormObject formObject)
        {
            IObjectViewModel viewModel = null;

            if (formObject is CheckBoxObject)
            {
                viewModel = new CheckBoxViewModel((CheckBoxObject)formObject, _dataProvider);
            }
            else if (formObject is LabelObject)
            {
                viewModel = new LabelViewModel((LabelObject)formObject, _dataProvider);
            }
            else if (formObject is TextBoxObject)
            {
                viewModel = new TextBoxViewModel((TextBoxObject)formObject, _dataProvider);
            }
            else if (formObject is RadioButtonObject)
            {
                viewModel = new RadioViewModel((RadioButtonObject)formObject, _dataProvider);
            }
            else if (formObject is DateBoxObject)
            {
                viewModel = new DatePickerViewModel((DateBoxObject)formObject, _dataProvider);
            }
            else if (formObject is TimePickerObject)
            {
                viewModel = new TimePickerViewModel((TimePickerObject)formObject, _dataProvider);
            }

            if (viewModel == null)
            {
                return;
            }

            viewModel.Properties.Left       = formObject.Left;
            viewModel.Properties.Top        = formObject.Top;
            viewModel.Properties.IsSelected = false;
            viewModel.Properties.SetVisibility(formObject.IsVisible);
            viewModel.Properties.TabId = formObject.TabId;
            ViewModels.Add(viewModel);
            ObjectModified?.Invoke(viewModel.Properties.Id);
        }
示例#4
0
 private void Db_ObjectModified(object sender, ObjectEventArgs e)
 {
     Modified.Add(e.DBObject.Id);
     ObjectModified?.Invoke(sender, e);
 }