public ClipboardListViewModel(
            IAction[] allActions,
            IClipboardUserInterfaceMediator clipboardUserInterfaceMediator,

            // ReSharper disable once SuggestBaseTypeForParameter
            IKeyInterceptor hotkeyInterceptor,
            IAsyncListDictionaryBinder <IClipboardDataControlPackage, IAction> packageActionBinder,
            IAsyncFilter asyncFilter,
            IPerformanceHandleFactory performanceHandleFactory,
            IUserInterfaceThread userInterfaceThread)
        {
            Elements = new ObservableCollection <IClipboardDataControlPackage>();
            Actions  = new ObservableCollection <IAction>();

            Actions.CollectionChanged += Actions_CollectionChanged;

            var pasteAction = allActions.OfType <IPasteAction>()
                              .Single();

            this.allActions = allActions.Where(x => x != pasteAction)
                              .ToArray();
            this.clipboardUserInterfaceMediator = clipboardUserInterfaceMediator;
            this.packageActionBinder            = packageActionBinder;
            this.asyncFilter = asyncFilter;
            this.performanceHandleFactory = performanceHandleFactory;
            this.userInterfaceThread      = userInterfaceThread;

            PreparePackageBinder(pasteAction);

            RegisterMediatorEvents(clipboardUserInterfaceMediator);
            RegisterKeyEvents(hotkeyInterceptor);
        }
        public SelectedElementToActionsSwitchMechanism(
            IAction[] allActions,
            IAsyncFilter asyncFilter,
            IAsyncListDictionaryBinder<IClipboardDataControlPackage, IAction> packageActionBinder)
        {
            this.asyncFilter = asyncFilter;
            this.packageActionBinder = packageActionBinder;

            PrepareActions(allActions);
        }
Beispiel #3
0
        public SelectedElementToActionsSwitchMechanism(
            IAction[] allActions,
            IAsyncFilter asyncFilter,
            IAsyncListDictionaryBinder <IClipboardDataControlPackage, IActionViewModel> packageActionBinder)
        {
            this.asyncFilter         = asyncFilter;
            this.packageActionBinder = packageActionBinder;

            PrepareActions(allActions);
        }
 private void PreparePackageBinder(IAsyncListDictionaryBinder <IClipboardDataControlPackage, IAction> packageActionBinder, IPasteAction defaultAction)
 {
     packageActionBinder.Default = defaultAction;
     packageActionBinder.Bind(Elements, Actions, GetSupportedActionsFromDataAsync);
 }