public bool SetElement(IConfigurationItemViewModel element, bool isUp)
        {
            if (ChildStructItemViewModels.Contains(element))
            {
                int  moveIndexFrom = ChildStructItemViewModels.IndexOf(element as IEditorConfigurationItemViewModel);
                int  moveIndexTo;
                bool valid = false;
                if (isUp)
                {
                    moveIndexTo = moveIndexFrom - 1;
                    valid       = (moveIndexTo >= 0) && (moveIndexFrom > 0);
                }
                else
                {
                    moveIndexTo = moveIndexFrom + 1;
                    valid       = moveIndexFrom < ChildStructItemViewModels.Count - 1;
                }
                if (valid)
                {
                    element.Checked?.Invoke(false);
                    ChildStructItemViewModels.Move(moveIndexFrom, moveIndexTo);
                    //}
                    this.Checked?.Invoke(false);
                    this.Checked?.Invoke(true);
                    return(true);
                }
                else
                {
                    throw new Exception("invalid data input");
                }
            }

            return(false);
        }
        public IConfigurationItemViewModel AddMatrix()
        {
            IEditorConfigurationItemViewModel newConfigurationItemViewModel =
                ConfigurationItemEditorViewModelFactory.Create().WithParent(this).VisitMatrix(null);

            ChildStructItemViewModels.Add(newConfigurationItemViewModel);
            return(newConfigurationItemViewModel);
        }
 public void PasteAsChild(object itemToPaste)
 {
     if (itemToPaste is IEditorConfigurationItemViewModel editorConfigurationItemViewModel)
     {
         ChildStructItemViewModels.Add(editorConfigurationItemViewModel);
         editorConfigurationItemViewModel.Parent = this;
     }
 }
        public bool GetIsSetElementPossible(IConfigurationItemViewModel element, bool isUp)
        {
            if (ChildStructItemViewModels.Contains(element))
            {
                int startIndex = ChildStructItemViewModels.IndexOf(element as IEditorConfigurationItemViewModel);
                return(isUp ? startIndex > 0 : ChildStructItemViewModels.Count - 1 > startIndex);
            }

            return(false);
        }
 public void TryTransformToTable()
 {
     if (!IsTableView)
     {
         return;
     }
     if (ChildStructItemViewModels.All(model => model is RuntimeItemGroupViewModel))
     {
         var wasTransponed = TableConfigurationViewModel?.IsTransponed;
         TableConfigurationViewModel = new TableConfigurationViewModel(ChildStructItemViewModels.ToList(), FilterViewModels, wasTransponed);
     }
 }
        public override object Clone()
        {
            ConfigurationGroupEditorViewModel cloneEditorViewModel = new ConfigurationGroupEditorViewModel()
            {
                IsMain             = IsMain,
                IsTableViewAllowed = IsTableViewAllowed,
                Header             = Header
            };

            cloneEditorViewModel.SetIsGroupWithReiteration(IsGroupWithReiteration);
            cloneEditorViewModel.ReiterationStep = ReiterationStep;
            cloneEditorViewModel.SubGroupNames.AddCollection(SubGroupNames.Select(wrapper => new StringWrapper(wrapper.StringValue)).ToList());
            ChildStructItemViewModels.ForEach(model =>
            {
                var child    = (model as ICloneable).Clone() as IConfigurationItemViewModel;
                child.Parent = cloneEditorViewModel;
                cloneEditorViewModel.IsCheckable = true;
                cloneEditorViewModel.ChildStructItemViewModels.Add(
                    child);
            });
            cloneEditorViewModel.FilterViewModels.AddCollection(this.FilterViewModels.Select(model => model.Clone()));
            return(cloneEditorViewModel);
        }
        public bool GetIsSetElementPossible(IConfigurationItemViewModel element, bool isUp)
        {
            if (ChildStructItemViewModels.Contains(element))
            {
                if (isUp)
                {
                    if (ChildStructItemViewModels.IndexOf(element as IEditorConfigurationItemViewModel) >
                        0)
                    {
                        return(true);
                    }
                }
                else
                {
                    if (ChildStructItemViewModels.IndexOf(element as IEditorConfigurationItemViewModel) <
                        ChildStructItemViewModels.Count - 1)
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }