private bool ExecuteCommandIfPresent(List <TypeKeyedActionCommand> commands, string commandName, StreamTreeNode streamTreeNode) { // Check if the command is in the list TypeKeyedActionCommand command = commands.Find(o => o.DisplayName.Equals(commandName, StringComparison.Ordinal)); if (command != null) { VisualizationContainer visualizationContainer = this.DataContext as VisualizationContainer; // If we're adding the stream to an existing Visualization Panel, then make sure it's the selected panel first. // Otherwise, make sure the last current panel is selected so that the new panel is created at the bottom. if (this.hitTestResult != null) { VisualizationPanel visualizationPanel = this.hitTestResult.DataContext as VisualizationPanel; visualizationContainer.CurrentPanel = visualizationPanel; } else if (visualizationContainer.Panels.Count > 0) { visualizationContainer.CurrentPanel = visualizationContainer.Panels[visualizationContainer.Panels.Count - 1]; } // Execute the command command.Execute(streamTreeNode); return(true); } return(false); }
/// <inheritdoc/> public override void SetParentContainer(VisualizationContainer container) { base.SetParentContainer(container); foreach (VisualizationPanel panel in this.Panels) { panel.SetParentContainer(container); panel.ParentPanel = this; } }
/// <summary> /// Initializes a new instance of the <see cref="RunBatchProcessingTaskWindowViewModel"/> class. /// </summary> /// <param name="visualizationContainer">The visualization container.</param> /// <param name="sessionViewModel">The dataset view model.</param> /// <param name="batchProcessingTaskMetadata">The batch processing task metadata.</param> public RunBatchProcessingTaskWindowViewModel(VisualizationContainer visualizationContainer, SessionViewModel sessionViewModel, BatchProcessingTaskMetadata batchProcessingTaskMetadata) { this.visualizationContainer = visualizationContainer; this.sessionViewModel = sessionViewModel; this.batchProcessingTaskMetadata = batchProcessingTaskMetadata; this.Name = batchProcessingTaskMetadata.Name; this.Description = batchProcessingTaskMetadata.Description; this.Target = sessionViewModel.Name; this.DataSize = TimeSpanFormatHelper.FormatTimeSpanApproximate(sessionViewModel.OriginatingTimeInterval.Span); this.Configuration = batchProcessingTaskMetadata.GetDefaultConfiguration(); }
/// <summary> /// Initializes a new instance of the <see cref="RunBatchProcessingTaskWindowViewModel"/> class. /// </summary> /// <param name="visualizationContainer">The visualization container.</param> /// <param name="datasetViewModel">The dataset view model.</param> /// <param name="batchProcessingTaskMetadata">The batch processing task metadata.</param> public RunBatchProcessingTaskWindowViewModel(VisualizationContainer visualizationContainer, DatasetViewModel datasetViewModel, BatchProcessingTaskMetadata batchProcessingTaskMetadata) { this.visualizationContainer = visualizationContainer; this.datasetViewModel = datasetViewModel; this.batchProcessingTaskMetadata = batchProcessingTaskMetadata; this.Name = batchProcessingTaskMetadata.Name; this.Description = batchProcessingTaskMetadata.Description; this.Target = datasetViewModel.Name; this.DataSize = TimeSpanFormatHelper.FormatTimeSpanApproximate( new TimeSpan(datasetViewModel.SessionViewModels.Sum(svm => svm.OriginatingTimeInterval.Span.Ticks))); this.Configuration = batchProcessingTaskMetadata.GetDefaultConfiguration(); }
/// <summary> /// Called internally by the VisualizationContainer to connect the parent chain. /// </summary> /// <param name="container">Container to connect this visualization panel to.</param> internal void SetParentContainer(VisualizationContainer container) { if (this.Container != null) { this.Container.PropertyChanged -= this.Container_PropertyChanged; } this.Container = container; if (this.Container != null) { this.Container.PropertyChanged += this.Container_PropertyChanged; } foreach (var visualizationObject in this.VisualizationObjects) { visualizationObject.AddToPanel(this); } }
private int FindPanelMoveIndices(VisualizationPanel droppedPanel, int panelVerticalCenter, out int currentPanelIndex) { // Find the index of the panel whose vertical center is closest the panel being dragged's vertical center VisualizationContainer visualizationContainer = droppedPanel.Container; currentPanelIndex = -1; // Work out which Visualization Panel's vertical center is closest to the vertical center of the panel being dropped double currentVerticalCenter = 0; double minDelta = double.MaxValue; int targetIndex = -1; for (int index = 0; index < visualizationContainer.Panels.Count; index++) { VisualizationPanel visualizationPanel = visualizationContainer.Panels[index]; // If this is the panel we're dropping, we need that info too if (visualizationPanel == droppedPanel) { currentPanelIndex = index; } // Is this panel's vertical center closer to our panel's vertical center currentVerticalCenter += visualizationPanel.Height / 2; double deltaY = Math.Abs(panelVerticalCenter - currentVerticalCenter); if (deltaY < minDelta) { targetIndex = index; minDelta = deltaY; } currentVerticalCenter += visualizationPanel.Height / 2; } return(targetIndex); }