/// <inheritdoc/> public void UnregisterStreamValueSubscriber <TTarget>(Guid registrationToken) { lock (this.publishers) { foreach (var epsilonTimeIntervalPublishers in this.publishers.Values) { foreach (var publisher in epsilonTimeIntervalPublishers) { if (publisher.HasSubscriber(registrationToken)) { publisher.UnregisterSubscriber(registrationToken); } } epsilonTimeIntervalPublishers.RemoveAll(publisher => !publisher.HasSubscribers); } foreach (var epsilonTimeInterval in this.publishers.Keys.ToArray()) { if (!this.publishers[epsilonTimeInterval].Any()) { this.publishers.Remove(epsilonTimeInterval); } } } // If no publishers remain, remove the index view if (!this.publishers.Any()) { this.indexView = null; this.indexViewRange = new NavigatorRange(DateTime.MinValue, DateTime.MinValue); } }
private void DoDragTimeline(Point mousePosition) { // Calculate how far we dragged the panel (timewise) double percent = (mousePosition.X - this.lastMousePosition.X) / this.ActualWidth; NavigatorRange viewRange = this.VisualizationPanel.Navigator.ViewRange; TimeSpan timeMoved = TimeSpan.FromTicks((long)((double)viewRange.Duration.Ticks * percent)); // Scroll the view viewRange.ScrollBy(-timeMoved); }
/// <inheritdoc /> public void UnregisterInstantDataTarget(Guid registrationToken) { this.InternalUnregisterInstantDataTarget(registrationToken); // If no instant visualization objects are now using // this stream reader, remove the instant index view if (this.instantStreamReaders.Count <= 0) { this.instantIndexView = null; this.currentIndexViewRange = new NavigatorRange(DateTime.MinValue, DateTime.MinValue); } }