async Task PerformPaste()
        {
            if (SelectedAction != null)
            {
                await singlePasteLock.WaitAsync();

                try
                {
                    await SelectedAction.Action.PerformAsync(SelectedElement.Data);

                    var oldSelectedElement = SelectedElement;
                    var clone = oldSelectedElement.Clone();
                    SelectedElement = null;

                    Elements.Remove(oldSelectedElement);
                    Elements.Insert(0, clone);

                    SelectedElement = clone;
                }
                finally
                {
                    singlePasteLock.Release();
                }
            }
        }
Ejemplo n.º 2
0
 void FireControlAddedEvent(IClipboardDataControlPackage package)
 {
     if (ControlAdded != null)
     {
         ControlAdded(this, new ControlEventArgument(package));
         //userInterfaceThread.Invoke(() => ControlAdded(this, new ControlEventArgument(package)));
     }
 }
 static async Task <IActionViewModel> GetActionViewModelFromActionAndPackageAsync(
     IClipboardDataControlPackage package,
     IAction action)
 {
     return(new ActionViewModel(
                action,
                await action.GetDescriptionAsync(package.Data)));
 }
 void Mediator_ControlAdded(object sender, ControlEventArgument e)
 {
     lock (Elements)
     {
         userInterfaceThread.Invoke(() => Elements.Insert(0, e.Package));
         SelectedElement = e.Package;
     }
 }
 void FireControlAddedEvent(IClipboardDataControlPackage package)
 {
     if (ControlAdded != null)
     {
         ControlAdded(this, new ControlEventArgument(package));
         //userInterfaceThread.Invoke(() => ControlAdded(this, new ControlEventArgument(package)));
     }
 }
 async Task<IEnumerable<IAction>> GetSupportedActionsFromDataAsync(
     IClipboardDataControlPackage data)
 {
     var allowedActions = await asyncFilter
                                    .FilterAsync(
                                        allActions,
                                        action => action.CanPerformAsync(data.Data));
     return allowedActions
         .OrderBy(x => x.Order);
 }
        void AddElement(IClipboardDataControlPackage package)
        {
            lock (Elements)
            {
                Elements.Insert(0, package);
                SelectedElement = package;

                UserInterfaceDataControlAdded?.Invoke(this, new UserInterfaceDataControlAddedEventArgument(package));
            }
        }
 void HandleUpPressed()
 {
     if (isFocusInActionsList)
     {
         SelectedAction = GetNewSelectedElementAfterHandlingUpKey(Actions, SelectedAction);
     }
     else
     {
         SelectedElement = GetNewSelectedElementAfterHandlingUpKey(Elements, SelectedElement);
     }
 }
        void MediatorPackageAdded(object sender, PackageEventArgument e)
        {
            lock (Elements)
            {
                Elements.Insert(0, e.Package);
                SelectedElement = e.Package;

                while (Elements.Count > settingsViewModel.MaximumAmountOfItemsInClipboard)
                {
                    Elements.RemoveAt(Elements.Count - 1);
                }
            }
        }
Ejemplo n.º 10
0
        private void ClipboardUserInterfaceInteractionMediator_RemovedCurrentItem(object sender, EventArgs e)
        {
            var currentElement = SelectedElement;

            SelectedElement = Elements
                              .Skip(1)
                              .FirstOrDefault();
            Elements.Remove(currentElement);
            if (Elements.Count == 0)
            {
                HideInterface();
            }
        }
Ejemplo n.º 11
0
        async Task <IEnumerable <IAction> > GetSupportedActionsFromDataAsync(
            IClipboardDataControlPackage data)
        {
            using (performanceHandleFactory.StartMeasuringPerformance())
            {
                var allowedActions =
                    await
                    asyncFilter.FilterAsync(allActions, action => action.CanPerformAsync(data.Data))
                    .ConfigureAwait(false);

                return(allowedActions.OrderBy(x => x.Order));
            }
        }
        async Task <IEnumerable <IActionViewModel> > GetSupportedActionsFromDataAsync(
            IClipboardDataControlPackage data)
        {
            var allowedActions = await asyncFilter
                                 .FilterAsync(
                allActions,
                action => action.CanPerformAsync(data.Data));

            var viewModelMappingTasks = allowedActions
                                        .Select(x => GetActionViewModelFromActionAndPackageAsync(data, x));
            var viewModels = await Task.WhenAll(viewModelMappingTasks);

            return(viewModels.OrderBy(x => x.Action.Order));
        }
        void RemoveCurrentElement()
        {
            var currentElement = SelectedElement;
            var currentIndex   = Elements.IndexOf(currentElement);

            Elements.Remove(currentElement);

            if (Elements.Count == 0)
            {
                HideInterface();
            }
            else
            {
                var targetIndex = currentIndex == 0 ? 0 : currentIndex - 1;
                SelectedElement = Elements.ElementAt(targetIndex);
            }
        }
        void ClipboardUserInterfaceInteractionMediator_SelectedPreviousItem(
            object sender,
            EventArgs e)
        {
            switch (clipboardUserInterfaceInteractionMediator.CurrentPane)
            {
            case ClipboardUserInterfacePane.Actions:
                SelectedAction = GetNewSelectedElementAfterHandlingUpKey(Actions, SelectedAction);
                break;

            case ClipboardUserInterfacePane.ClipboardPackages:
                SelectedElement = GetNewSelectedElementAfterHandlingUpKey(Elements, SelectedElement);
                break;

            default:
                throw new InvalidOperationException(
                          "Unknown user interface pane.");
            }
        }
 public UserInterfaceDataControlAddedEventArgument(IClipboardDataControlPackage package)
 {
     Package = package;
 }
 void FireControlAddedEvent(IClipboardDataControlPackage package)
 {
     PackageAdded?.Invoke(this, new PackageEventArgument(package));
 }
        void AddControlPackage(IClipboardDataControlPackage controlPackage)
        {
            clipboardPackages.Add(controlPackage);

            FireControlAddedEvent(controlPackage);
        }
 public ControlEventArgument(IClipboardDataControlPackage package)
 {
     Package = package;
 }
 public PackageEventArgument(IClipboardDataControlPackage package)
 {
     Package = package;
 }
 private void FireControlAddedEvent(IClipboardDataControlPackage package)
 {
     ControlAdded?.Invoke(this, new ControlEventArgument(package));
 }