示例#1
0
        public void SourceReferenceMemoryLeakTest()
        {
            var handler1Called = false;

            var publisherStrongReference = new InteractionMessenger();
            var publisherWeakReference   = new WeakReference <InteractionMessenger>(publisherStrongReference);
            var message = new GenericInteractionMessage <int>(1, "Dummy1");

            var listener = new MessageListener(publisherStrongReference);

            listener.RegisterAction("Dummy1", _ => handler1Called = true);

            publisherStrongReference.Raise(message);

            handler1Called.Is(true);

            listener.Dispose();
            publisherStrongReference = null;

            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();

            InteractionMessenger resultPublisher = null;

            publisherWeakReference.TryGetTarget(out resultPublisher).Is(false);
            resultPublisher.IsNull();
        }
示例#2
0
 public static T GetResponseSafe <T>(this InteractionMessenger messenger,
                                     Func <T> messageFactory) where T : ResponsiveInteractionMessage
 {
     return(DispatcherHelper.UIDispatcher.CheckAccess()
         ? messenger.GetResponse(messageFactory())
         : DispatcherHelper.UIDispatcher.Invoke(() => messenger.GetResponse(messageFactory())));
 }
示例#3
0
        public UriListViewModel(InteractionMessenger messenger = null)
        {
            if (messenger != null)
            {
                Messenger = messenger;
            }

            CompositeDisposable.Add(OnDispose);
        }
示例#4
0
 public UriListDocument(InteractionMessenger messenger)
 {
     m_viewModel = new UriListViewModel.UriListViewModel(messenger);
     m_viewModel.PropertyChanged += (o, e) =>
     {
         if (e.PropertyName == "Path")
         {
             Title = System.IO.Path.GetFileName(m_viewModel.Path);
         }
     };
 }
示例#5
0
 public static void RaiseSafeSync(this InteractionMessenger messenger,
                                  Func <InteractionMessage> messageFactory)
 {
     if (DispatcherHelper.UIDispatcher.CheckAccess())
     {
         messenger.Raise(messageFactory());
     }
     else
     {
         DispatcherHelper.UIDispatcher.Invoke(() => messenger.Raise(messageFactory()));
     }
 }
示例#6
0
        public TabViewModel(Tab model, InteractionMessenger mainWindowViewModelMessenger)
        {
            this.model = model;
            this.Messenger = mainWindowViewModelMessenger;

            ViewModelHelper.BindNotifyChanged(model, this, (sender, e) =>
            {
                switch (e.PropertyName)
                {
                    case "Name":
                    case "IsRefreshing":
                        this.RaisePropertyChanged(e.PropertyName);
                        break;
                    case "LastErrorMessage":
                        this.RaisePropertyChanged(e.PropertyName);
                        this.RaisePropertyChanged(() => this.LastErrorMessageIsNotEmpty);
                        break;
                }
            });

            var source = new CollectionViewSource();
            source.Source = ViewModelHelper.CreateReadOnlyDispatcherCollection(
                model.Items,
                (ITimelineItem item) =>
                {
                    var re = new TimelineItemViewModel(item);
                    ViewModelHelper.BindNotifyChanged(re, this, (sender, e) =>
                    {
                        if (e.PropertyName == "IsSelected")
                        {
                            var vm = (TimelineItemViewModel)sender;
                            if (vm.IsSelected)
                                this.SelectedItems.Add(vm);
                            else
                                this.SelectedItems.Remove(vm);
                        }
                    });
                    return re;
                },
                DispatcherHelper.UIDispatcher
            );
            source.SortDescriptions.Clear();
            source.SortDescriptions.Add(new SortDescription("CreatedAt", ListSortDirection.Descending));
            source.SortDescriptions.Add(new SortDescription("Id", ListSortDirection.Descending));
            this.Items = source.View;

            this.SelectedItems = new ObservableCollection<TimelineItemViewModel>();
        }
示例#7
0
        public void ResponsiveMessageTest()
        {
            var listenerSuccess = false;

            var publisher = new InteractionMessenger();
            var message   = new GenericResponsiveInteractionMessage <int, string>(1);

            var listener = new MessageListener(publisher, m =>
            {
                var rm = (GenericResponsiveInteractionMessage <int, string>)m;
                rm.Value.Is(1);
                rm.Response     = "test";
                listenerSuccess = true;
            });

            listenerSuccess.Is(false);

            publisher.GetResponse(message).Response.Is("test");
            listenerSuccess.Is(true);
        }
示例#8
0
        public void LifeCycleTest()
        {
            var listenerSuccess = false;

            var publisher = new InteractionMessenger();
            var message = new GenericInteractionMessage<int>(1);

            var listener = new MessageListener(publisher, m => 
            { 
                ((GenericInteractionMessage<int>)m).Value.Is(1);
                listenerSuccess = true;
            });

            //------------------
            listenerSuccess.Is(false);

            publisher.Raise(message);

            listenerSuccess.Is(true);

            //------------------
            listenerSuccess = false;

            listener.Dispose();
            publisher.Raise(message);

            listenerSuccess.Is(false);

            try
            {
                listener.RegisterAction(_ =>{});
            }
            catch (Exception e)
            {
                e.GetType().Is(typeof(ObjectDisposedException));
            }
        }
示例#9
0
        public void LifeCycleTest()
        {
            var listenerSuccess = false;

            var publisher = new InteractionMessenger();
            var message   = new GenericInteractionMessage <int>(1);

            var listener = new MessageListener(publisher, m =>
            {
                ((GenericInteractionMessage <int>)m).Value.Is(1);
                listenerSuccess = true;
            });

            //------------------
            listenerSuccess.Is(false);

            publisher.Raise(message);

            listenerSuccess.Is(true);

            //------------------
            listenerSuccess = false;

            listener.Dispose();
            publisher.Raise(message);

            listenerSuccess.Is(false);

            try
            {
                listener.RegisterAction(_ => {});
            }
            catch (Exception e)
            {
                e.GetType().Is(typeof(ObjectDisposedException));
            }
        }
示例#10
0
        public void AddHandlerKindTest()
        {
            var handler1Called = false;
            var handler2Called = false;
            var handler3Called = false;
            var handler4Called = false;
            var handler5Called = false;

            var publisher = new InteractionMessenger();
            var message0 = new GenericInteractionMessage<int>(1);
            var message1 = new GenericInteractionMessage<int>(1, "Dummy1");
            var message2 = new GenericInteractionMessage<int>(1, "Dummy2");

            var listener1 = new MessageListener(publisher)
            {
                {"Dummy1", _ => handler1Called = true},
                {"Dummy2", 
                        _ => handler2Called = true,
                        _ => handler3Called = true
                },
                _ => handler4Called = true,
                {"Dummy1", _ => handler5Called = true}
            };

            publisher.Raise(message0);

            handler1Called.Is(false);
            handler2Called.Is(false);
            handler3Called.Is(false);
            handler4Called.Is(true);
            handler5Called.Is(false);

            handler4Called = false;

            publisher.Raise(message1);

            handler1Called.Is(true);
            handler2Called.Is(false);
            handler3Called.Is(false);
            handler4Called.Is(true);
            handler5Called.Is(true);

            handler1Called = false;
            handler4Called = false;
            handler5Called = false;

            publisher.Raise(message2);

            handler1Called.Is(false);
            handler2Called.Is(true);
            handler3Called.Is(true);
            handler4Called.Is(true);
            handler5Called.Is(false);

            handler1Called = false;
            handler2Called = false;
            handler3Called = false;
            handler4Called = false;
            handler5Called = false;

            listener1.Dispose();

            publisher.Raise(message0);
            publisher.Raise(message1);
            publisher.Raise(message2);

            handler1Called.Is(false);
            handler2Called.Is(false);
            handler3Called.Is(false);
            handler4Called.Is(false);
            handler5Called.Is(false);

        }
示例#11
0
        public void SourceReferenceMemoryLeakTest()
        {
            var handler1Called = false;

            var publisherStrongReference = new InteractionMessenger();
            var publisherWeakReference = new WeakReference<InteractionMessenger>(publisherStrongReference);
            var message = new GenericInteractionMessage<int>(1, "Dummy1");

            var listener = new MessageListener(publisherStrongReference);
            listener.RegisterAction("Dummy1", _ =>handler1Called = true);

            publisherStrongReference.Raise(message);

            handler1Called.Is(true);

            listener.Dispose();
            publisherStrongReference = null;

            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();

            InteractionMessenger resultPublisher = null;
            publisherWeakReference.TryGetTarget(out resultPublisher).Is(false);
            resultPublisher.IsNull();
        }
示例#12
0
        public void ResponsiveMessageTest()
        {
            var listenerSuccess = false;

            var publisher = new InteractionMessenger();
            var message = new GenericResponsiveInteractionMessage<int,string>(1);

            var listener = new MessageListener(publisher, m =>
            {
                var rm = (GenericResponsiveInteractionMessage<int, string>)m;
                rm.Value.Is(1);
                rm.Response = "test";
                listenerSuccess = true;
            });

            listenerSuccess.Is(false);

            publisher.GetResponse(message).Response.Is("test");
            listenerSuccess.Is(true);
        }
示例#13
0
 public virtual void ShowHelpView(InteractionMessenger Messenger)
 {
 }
示例#14
0
        public void AddHandlerKindTest()
        {
            var handler1Called = false;
            var handler2Called = false;
            var handler3Called = false;
            var handler4Called = false;
            var handler5Called = false;

            var publisher = new InteractionMessenger();
            var message0  = new GenericInteractionMessage <int>(1);
            var message1  = new GenericInteractionMessage <int>(1, "Dummy1");
            var message2  = new GenericInteractionMessage <int>(1, "Dummy2");

            var listener1 = new MessageListener(publisher)
            {
                { "Dummy1", _ => handler1Called = true },
                { "Dummy2",
                  _ => handler2Called = true,
                  _ => handler3Called = true },
                _ => handler4Called = true,
                { "Dummy1", _ => handler5Called = true }
            };

            publisher.Raise(message0);

            handler1Called.Is(false);
            handler2Called.Is(false);
            handler3Called.Is(false);
            handler4Called.Is(true);
            handler5Called.Is(false);

            handler4Called = false;

            publisher.Raise(message1);

            handler1Called.Is(true);
            handler2Called.Is(false);
            handler3Called.Is(false);
            handler4Called.Is(true);
            handler5Called.Is(true);

            handler1Called = false;
            handler4Called = false;
            handler5Called = false;

            publisher.Raise(message2);

            handler1Called.Is(false);
            handler2Called.Is(true);
            handler3Called.Is(true);
            handler4Called.Is(true);
            handler5Called.Is(false);

            handler1Called = false;
            handler2Called = false;
            handler3Called = false;
            handler4Called = false;
            handler5Called = false;

            listener1.Dispose();

            publisher.Raise(message0);
            publisher.Raise(message1);
            publisher.Raise(message2);

            handler1Called.Is(false);
            handler2Called.Is(false);
            handler3Called.Is(false);
            handler4Called.Is(false);
            handler5Called.Is(false);
        }
示例#15
0
 public static async Task RaiseSafeAsync(this InteractionMessenger messenger,
                                         Func <InteractionMessage> messageFactory)
 {
     await DispatcherHelper.UIDispatcher.InvokeAsync(() => messenger.Raise(messageFactory()));
 }
示例#16
0
 public override void ShowHelpView(InteractionMessenger Messenger)
 {
     Messenger.Raise(new TransitionMessage(typeof(Views.WebViewHelpView), this, TransitionMode.NewOrActive));
 }
示例#17
0
 public StatusBarViewModel(InteractionMessenger messenger)
     : this()
 {
     this.Messenger = messenger;
 }
 public void SetMessanger(InteractionMessenger messenger)
 {
     _Messenger = messenger;
 }