private void InsertMove(RawEntity2D rawEntity2D)
        {
            /*
             * in pratica ora , creo il viewModel poi inserisco.
             *
             * sarebbe più chiaro avere il model , inserirlo li poi riaggirnare parteViewModel
             */
            RawItemViewModel precMove = null;

            var entityToInsert = GetViewModel(rawEntity2D);

            if (SelectedMoveViewModel == null)
            {
                precMove = MoveListViewModels.LastOrDefault();
                MoveListViewModels.Add(entityToInsert);
            }
            else
            {
                precMove = MoveListViewModels.ElementAtOrDefault(MoveListViewModels.IndexOf(SelectedMoveViewModel));
                MoveListViewModels.Insert(MoveListViewModels.IndexOf(SelectedMoveViewModel) + 1, entityToInsert);
            }

            InitEntity(rawEntity2D, precMove.RawEntity);

            SelectedMoveViewModel = entityToInsert;

            RequestUpdateSource();
        }
        private void DelEntity()
        {
            if (SelectedMoveViewModel == null)
            {
                return;
            }

            var index = MoveListViewModels.IndexOf(SelectedMoveViewModel);

            /*
             * non cancello punto iniziale !
             */
            if (SelectedMoveViewModel is RawInitPointViewModel)
            {
                return;
            }

            MoveListViewModels.Remove(SelectedMoveViewModel);

            OnPropertyChanged("MoveListViewModels");

            index--;

            var nextFocused = MoveListViewModels.ElementAtOrDefault(index);

            SelectedMoveViewModel = nextFocused;
        }
        ///// <summary>
        ///// Obsolete
        ///// </summary>
        ///// <param name="moveList"></param>
        ///// <param name="workViewModel"></param>
        ///// <param name="axisSystem"></param>
        //public ProfileEditorViewModel(IEnumerable<RawEntity2D> moveList, EditWorkViewModel workViewModel, AxisSystem axisSystem)
        //    : base("Input Profilo", workViewModel)
        //{
        //    //_workViewModel = workViewModel;

        //    _axisSystem = axisSystem;

        //    MoveListViewModels = new ObservableCollection<RawEntityViewModel>();

        //    foreach (var rawEntity2D in moveList)
        //    {
        //        MoveListViewModels.Add(new RawEntityViewModel(rawEntity2D));
        //    }

        //    SelectedMoveViewModel = MoveListViewModels.LastOrDefault();

        //    UpdatePreview();

        //    UpdateMoveListOrientation();

        //}

        public List <RawEntity2D> GetProfile()
        {
            /*Richiamarlo ad ogni cambio è un po eccessivo ..*/
            // todo : richiamarlo anche su ok dialogo

            var rslt = MoveListViewModels.Select(rawEntityViewModel => rawEntityViewModel.RawEntity).ToList();

            return(rslt);
        }
        private void GotoPrevMove()
        {
            if (SelectedMoveViewModel == MoveListViewModels.First())
            {
                return;
            }

            var index = MoveListViewModels.IndexOf(SelectedMoveViewModel);

            index--;

            if (index < 0)
            {
                return;
            }

            SelectedMoveViewModel = MoveListViewModels[index];
        }
        private void GotoNextMove()
        {
            if (SelectedMoveViewModel == MoveListViewModels.Last())
            {
                return;
            }

            var index = MoveListViewModels.IndexOf(SelectedMoveViewModel);

            index++;

            if (index > MoveListViewModels.Count)
            {
                return;
            }

            SelectedMoveViewModel = MoveListViewModels[index];
        }