public void Handle(DockWindowLoadedMessage message)
        {
            var manager = IoC.Get <IDockScreenManager>();

            syncer = new CollectionSyncer <IDockScreen, IMenuPart>(manager.Documents, (item) =>
            {
                return(new MenuPart(item.Name, (i) =>
                {
                    MenuPart menu = i as MenuPart;
                    menu.IsChecked = !menu.IsChecked;
                    if (menu.IsChecked)
                    {
                        IoC.Get <IDockScreenManager>()[menu.Name].Show();
                    }
                    else
                    {
                        IoC.Get <IDockScreenManager>()[menu.Name].Close();
                    }
                })
                {
                    IsCheckable = true
                });
            });
            merger = new CollectionMerger <IMenuPart>((this as IObservableParent <IMenuPart>).Items, syncer.SyncCollection);
        }
 public void TestAddRemoveDispose()
 {
     var sourceList = new ObservableList<string>();
     var targetList = new Collection<string>();
     var syncer1 = new CollectionSyncer<string, string>(sourceList, targetList, (x) => x.ToUpper(), (x) => x.ToUpper(), false);
     var syncer2 = new CollectionSyncer<string, string>(sourceList, targetList, (x) => x.ToLower(), (x) => x.ToLower(), false);
     sourceList.Add("Test1");
     Assert.Equal(2, targetList.Count);
     Assert.True(targetList.Contains("test1"));
     Assert.True(targetList.Contains("TEST1"));
     sourceList.Remove("Test1");
     Assert.Equal(sourceList.Count, targetList.Count);
     Assert.Equal(0, targetList.Count);
     syncer2.Dispose();
     sourceList.Add("Test1");
     Assert.Equal(sourceList.Count, targetList.Count);
 }
        public void TestConstruction()
        {
            var badList = new List<string>();
            var sourceList = new ObservableList<string>();
            var targetList = new Collection<string>();
            Assert.Throws<ArgumentNullException>(() => new CollectionSyncer<string, string>(null, targetList, (x) => x, (x) => x, false));
            Assert.Throws<ArgumentNullException>(() => new CollectionSyncer<string, string>(sourceList, null, (x) => x, (x) => x, false));
            Assert.Throws<Exception>(() => new CollectionSyncer<string, string>(badList, targetList, (x) => x, (x) => x, false));

            sourceList.Add("Test1");
            sourceList.Add("Test2");
            var syncer1 = new CollectionSyncer<string, string>(sourceList, targetList, (x) => x, (x) => x, false);
            Assert.Equal(2, sourceList.Count);
            Assert.Equal(0, targetList.Count);

            var syncer2 = new CollectionSyncer<string, string>(sourceList, targetList, (x) => x, (x) => x, true);
            Assert.Equal(sourceList.Count, targetList.Count);
        }
        public override void OnAttached()
        {
            syncer = new CollectionSyncer <IDockScreen, IMenuPart>(IoC.Get <IDockScreenManager>().Screens, (item) =>
            {
                return(new MenuPart(item.Name, (i) =>
                {
                    MenuPart menu = i as MenuPart;
                    menu.IsChecked = !menu.IsChecked;
                    if (menu.IsChecked)
                    {
                        IoC.Get <IDockScreenManager>()[menu.Name].Show();
                    }
                    else
                    {
                        IoC.Get <IDockScreenManager>()[menu.Name].Close();
                    }
                })
                {
                    DisplayName = item.DisplayName, IsCheckable = true, IsChecked = true
                });
            });

            merger = new CollectionMerger <IMenuPart>((this as IObservableParent <IMenuPart>).Items, syncer.SyncCollection);
        }
 public NetworkContentSyncer(IDbContextLocator locator, IW6Api api) {
     _locator = locator;
     _collectionSyncer = new CollectionSyncer(locator, this, api);
 }
 public NetworkContentSyncer(ICollectionInfoFetcher infoFetcher, IW6Api api)
 {
     _infoFetcher      = infoFetcher;
     _collectionSyncer = new CollectionSyncer(_infoFetcher, this, api);
 }