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);
}
}