void Mediator_ControlRemoved(object sender, ControlEventArgument e)
 {
     lock (Elements)
     {
         Elements.Remove(e.Package);
     }
 }
        public void DataCopiedTriggersEvent()
        {
            var container = CreateContainer(c =>
            {
                c.RegisterFake <IClipboardCopyInterceptor>();
                c.RegisterFake <IPasteCombinationDurationMediator>();
                c.RegisterFake <IClipboardDataControlPackageFactory>();
            });

            var mediator = container.Resolve <IClipboardUserInterfaceMediator>();

            mediator.Connect(null);

            object eventSender = null;
            ControlEventArgument eventArgument = null;

            mediator.ControlAdded += (sender, e) =>
            {
                eventSender   = sender;
                eventArgument = e;
            };

            var fakeClipboardHookService = container.Resolve <IClipboardCopyInterceptor>();

            fakeClipboardHookService.DataCopied += Raise.Event <EventHandler <DataCopiedEventArgument> >(fakeClipboardHookService, new DataCopiedEventArgument());

            var addedPackage = mediator.ClipboardElements.Single();

            Assert.IsNotNull(addedPackage);

            Assert.AreSame(mediator, eventSender);
            Assert.AreSame(addedPackage, eventArgument.Package);
        }
 void Mediator_ControlAdded(object sender, ControlEventArgument e)
 {
     lock (Elements)
     {
         userInterfaceThread.Invoke(() => Elements.Insert(0, e.Package));
         SelectedElement = e.Package;
     }
 }
 void Mediator_ControlHighlighted(object sender, ControlEventArgument e)
 {
     lock (Elements)
     {
         Elements.Remove(e.Package);
         Elements.Insert(0, e.Package);
     }
 }