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; }
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; }
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); }
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(); }
public DataModel() { Children = new BatchObservableCollection<IDataModel>(); }