public void TestAddRange()
        {
            BatchObservableCollection<Foo> foos = new BatchObservableCollection<Foo>(4);

            int changeCount = -1;

            NotifyCollectionChangedEventHandler handler = null;

            handler = (s, a) =>
                {
                    if (changeCount > 0)
                    {
                        foos.CollectionChanged -= handler;

                        TestComplete();
                    }
                    changeCount++;
                };

            foos.CollectionChanged += handler;

            List<Foo> fooList = new List<Foo>();

            for (int i = 0; i < 7; i++)
            {
                fooList.Add(new Foo(i, i.ToString()));
            }
            foos.AddRange(fooList);

            // just make sure the add isn't synhronous
            Assert.AreEqual(-1, changeCount);
        }
        public void TestMerge()
        {
            BatchObservableCollection<Foo> original = new BatchObservableCollection<Foo>(10);

            original.Add(new Foo(1, "1"));
            original.Add(new Foo(2, "1"));
            original.Add(new Foo(3, "1"));
            original.Add(new Foo(5, "1"));
            original.Add(new Foo(7, "1"));
            //original.Add(new Foo(11, "1"));
            //original.Add(new Foo(13, "1"));
            //original.Add(new Foo(17, "1"));

            BatchObservableCollection<Foo> update = new BatchObservableCollection<Foo>(10);

            update.Add(new Foo(1, "_2"));
            update.Add(new Foo(3, "_2"));
            update.Add(new Foo(7, "_2"));
            update.Add(new Foo(9, "2"));
            update.Add(new Foo(10, "2"));
            //update.Add(new Foo(6, "1"));
            //update.Add(new Foo(7, "1"));
            //update.Add(new Foo(12, "1"));
            //update.Add(new Foo(13, "1"));
            //update.Add(new Foo(17, "1"));
            //update.Add(new Foo(23, "1"));
            //update.Add(new Foo(19, "1"));
            //update.Add(new Foo(29, "1"));

            original.CollectionChanged += (s, a) =>
            {
                Assert.AreNotEqual(0, original.Count);
            };

            original.Merge(update, (x, y) => { return x.ID - y.ID; }, EquivelentItemMergeBehavior.ReplaceEqualItems);

            Assert.AreEqual(5, original.Count);

            Assert.AreEqual(original[0].ID, 1);
            Assert.AreEqual(original[0].Value, "_2");

            Assert.AreEqual(original[1].ID, 3);
            Assert.AreEqual(original[1].Value, "_2");

            Assert.AreEqual(original[2].ID, 7);
            Assert.AreEqual(original[2].Value, "_2");

            Assert.AreEqual(original[3].ID, 9);
            Assert.AreEqual(original[3].Value, "2");

            Assert.AreEqual(original[4].ID, 10);
            Assert.AreEqual(original[4].Value, "2");
        }
        public ConnectionManagerViewModel(IConnectionManager connectionManager, ICoreShell shell) {
            _connectionManager = connectionManager;
            _shell = shell;
            _disposableBag = DisposableBag.Create<ConnectionManagerViewModel>()
                .Add(() => connectionManager.ConnectionStateChanged -= ConnectionStateChanged);

            _remoteConnections = new BatchObservableCollection<IConnectionViewModel>();
            RemoteConnections = new ReadOnlyObservableCollection<IConnectionViewModel>(_remoteConnections);

            _localConnections = new BatchObservableCollection<IConnectionViewModel>();
            LocalConnections = new ReadOnlyObservableCollection<IConnectionViewModel>(_localConnections);

            connectionManager.ConnectionStateChanged += ConnectionStateChanged;
            IsConnected = connectionManager.IsConnected;
            UpdateConnections();
        }
        public RPackageManagerViewModel(IRPackageManager packageManager, IRSettings settings, ICoreShell coreShell) {
            _packageManager = packageManager;
            _settings = settings;
            _coreShell = coreShell;
            _selectedTab = Tab.None;
            _availablePackages = new List<IRPackageViewModel>();
            _installedPackages = new List<IRPackageViewModel>();
            _loadedPackages = new List<IRPackageViewModel>();
            _availableLock = new BinaryAsyncLock();
            _installedAndLoadedLock = new BinaryAsyncLock();
            _items = new BatchObservableCollection<object>();
            _errorMessages = new ErrorMessageCollection(this);
            Items = new ReadOnlyObservableCollection<object>(_items);

            _packageManager.AvailablePackagesInvalidated += AvailablePackagesInvalidated;
            _packageManager.InstalledPackagesInvalidated += InstalledPackagesInvalidated;
            _packageManager.LoadedPackagesInvalidated += LoadedPackagesInvalidated;
        }
        public RPackageManagerViewModel(IRPackageManager packageManager, IRSettings settings, ICoreShell coreShell)
        {
            _packageManager         = packageManager;
            _settings               = settings;
            _coreShell              = coreShell;
            _selectedTab            = Tab.None;
            _availablePackages      = new List <IRPackageViewModel>();
            _installedPackages      = new List <IRPackageViewModel>();
            _loadedPackages         = new List <IRPackageViewModel>();
            _availableLock          = new BinaryAsyncLock();
            _installedAndLoadedLock = new BinaryAsyncLock();
            _items         = new BatchObservableCollection <object>();
            _errorMessages = new ErrorMessageCollection(this);
            Items          = new ReadOnlyObservableCollection <object>(_items);

            _packageManager.AvailablePackagesInvalidated += AvailablePackagesInvalidated;
            _packageManager.InstalledPackagesInvalidated += InstalledPackagesInvalidated;
            _packageManager.LoadedPackagesInvalidated    += LoadedPackagesInvalidated;
        }
Exemple #6
0
        public RPackageManagerViewModel(IRPackageManager packageManager, IRSession session, IRSettings settings, ICoreShell coreShell)
        {
            _packageManager         = packageManager;
            _session                = session;
            _settings               = settings;
            _coreShell              = coreShell;
            _selectedTab            = SelectedTab.None;
            _availablePackages      = new List <IRPackageViewModel>();
            _installedPackages      = new List <IRPackageViewModel>();
            _loadedPackages         = new List <IRPackageViewModel>();
            _availableLock          = new BinaryAsyncLock();
            _installedAndLoadedLock = new BinaryAsyncLock();
            _items         = new BatchObservableCollection <object>();
            _errorMessages = new Queue <string>();
            Items          = new ReadOnlyObservableCollection <object>(_items);

            _session.Mutated           += RSessionMutated;
            _session.PackagesInstalled += OnPackagesInstalled;
            _session.PackagesRemoved   += OnPackagesRemoved;
        }
        public ConnectionManagerViewModel(IServiceContainer services) :
            base(services)
        {
            _ui                  = services.UI();
            _images              = services.GetService <IImageService>();
            _settings            = services.GetService <IRSettings>();
            _installationService = services.GetService <IRInstallationService>();

            _localConnections = new BatchObservableCollection <IConnectionViewModel>();
            LocalConnections  = new ReadOnlyObservableCollection <IConnectionViewModel>(_localConnections);

            _localDockerConnections = new BatchObservableCollection <IConnectionViewModel>();
            LocalDockerConnections  = new ReadOnlyObservableCollection <IConnectionViewModel>(_localDockerConnections);

            _remoteConnections = new BatchObservableCollection <IConnectionViewModel>();
            RemoteConnections  = new ReadOnlyObservableCollection <IConnectionViewModel>(_remoteConnections);

            IsConnected = ConnectionManager.IsConnected;
            UpdateConnections();
        }
        public RPackageManagerViewModel(IRPackageManager packageManager, IServiceContainer services)
        {
            _packageManager = packageManager;
            _services       = services;
            _settings       = services.GetService <IRSettings>();
            _mainThread     = services.MainThread();

            _selectedTab            = Tab.None;
            _availablePackages      = new List <IRPackageViewModel>();
            _installedPackages      = new List <IRPackageViewModel>();
            _loadedPackages         = new List <IRPackageViewModel>();
            _availableLock          = new BinaryAsyncLock();
            _installedAndLoadedLock = new BinaryAsyncLock();
            _items         = new BatchObservableCollection <object>();
            _errorMessages = new ErrorMessageCollection(this);
            Items          = new ReadOnlyObservableCollection <object>(_items);

            _packageManager.AvailablePackagesInvalidated += AvailablePackagesInvalidated;
            _packageManager.InstalledPackagesInvalidated += InstalledPackagesInvalidated;
            _packageManager.LoadedPackagesInvalidated    += LoadedPackagesInvalidated;
        }
        protected override ISeries ConvertInternal(IDataObject data, ResourceDictionary availableResources,
                Color resolvedColor, ObservableCollection<IDataObject> seriesCollection, Control tooltip)
        {
            // Chart control uses SeriesDataConstants.Visibility property from Tag
            var series = new StackedAreaSeries {
                Tag = data
            };

            var orderedSeriescollection = seriesCollection.OrderBy(s => s[ChartingConstants.SeriesOrderPropertyName] ?? 0);
            foreach (var stackableSeries in orderedSeriescollection) {
                var idoCollection = stackableSeries[SeriesDataConstants.Data] as ICollection<IDataObject>;
                var dataPoints = new IDataObject[idoCollection.Count];
                idoCollection.CopyTo(dataPoints, 0);
                var observableDataPoints = new BatchObservableCollection<IDataObject>(dataPoints);

                SeriesDefinitionConverter.Convert(stackableSeries, observableDataPoints, availableResources,
                    (s) => { series.SeriesDefinitions.Add((SeriesDefinition)s); });
            }

            return series;
        }
Exemple #10
0
        protected override ISeries ConvertInternal(IDataObject data, ResourceDictionary availableResources,
                                                   Color resolvedColor, ObservableCollection <IDataObject> seriesCollection, Control tooltip)
        {
            // Chart control uses SeriesDataConstants.Visibility property from Tag
            var series = new StackedAreaSeries {
                Tag = data
            };

            var orderedSeriescollection = seriesCollection.OrderBy(s => s[ChartingConstants.SeriesOrderPropertyName] ?? 0);

            foreach (var stackableSeries in orderedSeriescollection)
            {
                var idoCollection = stackableSeries[SeriesDataConstants.Data] as ICollection <IDataObject>;
                var dataPoints    = new IDataObject[idoCollection.Count];
                idoCollection.CopyTo(dataPoints, 0);
                var observableDataPoints = new BatchObservableCollection <IDataObject>(dataPoints);

                SeriesDefinitionConverter.Convert(stackableSeries, observableDataPoints, availableResources,
                                                  (s) => { series.SeriesDefinitions.Add((SeriesDefinition)s); });
            }

            return(series);
        }
Exemple #11
0
        public HistoryViewModel()
        {
            _rateMonitor   = new RateMonitor();
            _incomingQueue = new BlockingCollection <Transmission>(100);
            _conversation  = new BatchObservableCollection <ConversationItemViewModel>();
            _conversation.CollectionChanged += (sender, e) => ContentChanged?.Invoke();
            _formatter            = new PlainTextFormatter();
            _updateTimer          = new DispatcherTimer();
            _updateTimer.Interval = new TimeSpan(0, 0, 0, 0, 50);
            _updateTimer.Tick    += (sender, arg) => OnUpdateUI();

            PlainTextSelected = true;

            _rateMonitor.Start();
            _updateTimer.Start();


            Properties.Settings.Default.PropertyChanged +=
                (sender, e) =>
            {
                if (e.PropertyName == nameof(Properties.Settings.Default.HistoryEntries))
                {
                    // just switch out the queue, don't care about potentially lost items.
                    _incomingQueue = new BlockingCollection <Transmission>(Properties.Settings.Default.HistoryEntries);
                }
                else if (e.PropertyName == nameof(Properties.Settings.Default.Encoding))
                {
                    ViewChanged();
                }
                else if (e.PropertyName == nameof(Properties.Settings.Default.HistoryInfoTimestamp) ||
                         e.PropertyName == nameof(Properties.Settings.Default.HistoryInfoIpAdress))
                {
                    // force update.
                    ViewChanged();
                }
            };
        }
        public void TestOffThread()
        {
            ManualResetEvent ev = new ManualResetEvent(false);

            ThreadPool.QueueUserWorkItem((x) =>
            {
                BatchObservableCollection<Foo> bc = new BatchObservableCollection<Foo>(2);

                bc.Add(new Foo());
                bc.Add(new Foo());
                bc.Add(new Foo());

                Thread.Sleep(50);

                bc.Add(new Foo());
                bc.Add(new Foo());
                bc.Add(new Foo());
                bc.Add(new Foo());

                ev.Set();

            },
            null);

            ev.WaitOne();
        }
Exemple #13
0
		public DataModel() {
			Children = new BatchObservableCollection<IDataModel>();
		}