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;
     }));
 }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }