Zetbox.Client.Presentables.ZetboxBase.InstanceListViewModel.Merge C# (CSharp) Method

Merge() public method

public Merge ( ) : void
return void
        public void Merge()
        {
            if (!CanMerge()) return;

            if (GetWorkspace() is IContextViewModel && GetWorkspace() is IMultipleInstancesManager)
            {
                // Stay in current workspace
                var ws = (IMultipleInstancesManager)GetWorkspace();
                if(ws != null)
                {
                    var task = ViewModelFactory.CreateViewModel<ObjectEditor.MergeObjectsTaskViewModel.Factory>().Invoke(DataContext, GetWorkspace(), SelectedItems[0].Object, SelectedItems[1].Object);
                    ws.AddItem(task);
                    ws.SelectedItem = task;
                }
            }
            else
            {
                var newScope = ViewModelFactory.CreateNewScope();
                var newCtx = newScope.ViewModelFactory.CreateNewContext();

                var ift = DataType.GetDescribedInterfaceType();
                var target = newCtx.Find(ift, SelectedItems[0].ID);
                var source = newCtx.Find(ift, SelectedItems[1].ID);

                var ws = ObjectEditor.WorkspaceViewModel.Create(newScope.Scope, newCtx);
                var task = newScope.ViewModelFactory.CreateViewModel<ObjectEditor.MergeObjectsTaskViewModel.Factory>().Invoke(newCtx, ws, target, source);
                ws.ShowModel(task);
                newScope.ViewModelFactory.ShowModel(ws, RequestedWorkspaceKind, true);
            }
        }