private static MachineElementViewModel CreateViewModel(Models.MachineElement me)
        {
            MachineElementViewModel vm;

            switch (me.ToolHolderType)
            {
            case MachineModels.Enums.ToolHolderType.None:
                vm = new MachineElementViewModel();
                break;

            case MachineModels.Enums.ToolHolderType.Static:
                vm = new StaticToolHolderViewModel().UpdateFromModel(me.ToolHolderData);
                break;

            case MachineModels.Enums.ToolHolderType.AutoSource:
                vm = new AutoSourceToolHolderViewModel().UpdateFromModel(me.ToolHolderData);
                break;

            case MachineModels.Enums.ToolHolderType.AutoSink:
                vm = new AutoSinkToolHolderViewModel().UpdateFromModel(me.ToolHolderData);
                break;

            default:
                throw new NotImplementedException();
            }

            vm.Visible = true;

            return(vm);
        }
        public static IToolHolderViewModel ToViewModel(this IToolHolder model)
        {
            IToolHolderViewModel vm = null;

            if (model is StaticToolHolder sth)
            {
                var svm = new StaticToolHolderViewModel();
                UpdateViewModel(svm, sth);
                vm = svm;
            }
            else if (model is AutoSourceToolHolder asrcth)
            {
                var avm = new AutoSourceToolHolderViewModel();
                UpdateViewModel(avm, asrcth);
                vm = avm;
            }
            else if (model is AutoSinkToolHolder asnkth)
            {
                var avm = new AutoSourceToolHolderViewModel();
                UpdateViewModel(avm, asnkth);
                vm = avm;
            }

            return(vm);
        }