public static async Task <IEvent> Paste(EventPanelViewmodelBase destination, PasteLocation location) { return(await Task.Run(() => { var dest = destination.Event; if (CanPaste(destination, location)) { var operation = _operation; using (var enumerator = Clipboard.GetEnumerator()) { if (!enumerator.MoveNext()) { return null; } dest = _paste(enumerator.Current, dest, location, operation); while (enumerator.MoveNext()) { dest = _paste(enumerator.Current, dest, PasteLocation.After, operation); } } } if (_operation == ClipboardOperation.Cut) { Clipboard.Clear(); } return dest; })); }
public static IEvent Paste(EventPanelViewmodelBase destination, TPasteLocation location) { IEvent dest = destination.Event; if (CanPaste(destination, location)) { var operation = _operation; using (var enumerator = Clipboard.GetEnumerator()) { if (!enumerator.MoveNext()) { return(null); } dest = _paste(enumerator.Current, dest, location, operation); while (enumerator.MoveNext()) { dest = _paste(enumerator.Current, dest, TPasteLocation.After, operation); } } } if (_operation == ClipboardOperation.Cut) { Clipboard.Clear(); } return(dest); }
protected void UserControl_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e) { EventPanelViewmodelBase vm = e.NewValue as EventPanelViewmodelBase; if (vm != null) { vm.View = (EventPanelView)sender; _viewName = vm.EventName; if (vm.IsSelected) { this.BringIntoView(); } this.DataContextChanged -= UserControl_DataContextChanged; } }
public static bool CanPaste(EventPanelViewmodelBase destEventVm, PasteLocation location) { if (destEventVm?.Event == null) { return(false); } IEventProperties dest = destEventVm.Event; var operation = _operation; var destStartType = dest.StartType; if (location != PasteLocation.Under && (destStartType == TStartType.Manual || destStartType == TStartType.OnFixedTime) && Clipboard.Any(e => e.EventType != TEventType.Rundown)) { return(false); } using (var enumerator = Clipboard.GetEnumerator()) { if (!enumerator.MoveNext()) { return(false); } if (!_canPaste(enumerator.Current, dest, location, operation)) { return(false); } dest = enumerator.Current; while (enumerator.MoveNext()) { if (!_canPaste(enumerator.Current, dest, PasteLocation.After, operation)) { return(false); } dest = enumerator.Current; } } return(true); }