Example #1
0
        /// <inheritdoc/>
        public virtual void AppendContextMenuItems(List <MenuItem> menuItems)
        {
            if (this.DataContext is VisualizationObject visualizationObject)
            {
                // If the visualization object is bound and allows snapping to its stream, add the snap to stream menuitem.
                if (visualizationObject is IStreamVisualizationObject streamVisualizationObject && streamVisualizationObject.IsBound)
                {
                    if (visualizationObject.CanSnapToStream)
                    {
                        menuItems.Add(MenuItemHelper.CreateMenuItem(
                                          IconSourcePath.SnapToStream,
                                          visualizationObject.IsSnappedToStream ? $"Unsnap from Stream" : $"Snap to Stream",
                                          new VisualizationCommand(() => visualizationObject.ToggleSnapToStream())));
                    }
                }

                // Add the show/hide menuitem.
                menuItems.Add(MenuItemHelper.CreateMenuItem(
                                  IconSourcePath.ToggleVisibility,
                                  visualizationObject.Visible ? "Hide Visualizer" : "Show Visualizers",
                                  visualizationObject.ToggleVisibilityCommand,
                                  null,
                                  true,
                                  null));

                // Add the remove from panel menuitem.
                menuItems.Add(MenuItemHelper.CreateMenuItem(
                                  IconSourcePath.RemovePanel,
                                  $"Remove Visualizer",
                                  visualizationObject.Panel.DeleteVisualizationCommand,
                                  null,
                                  true,
                                  visualizationObject));
            }
        }
        /// <inheritdoc/>
        public override void AppendContextMenuItems(List <MenuItem> menuItems)
        {
            base.AppendContextMenuItems(menuItems);

            // Add Set Cursor Epsilon menu with sub-menu items
            var rangeModeMenuItem = MenuItemHelper.CreateMenuItem(
                string.Empty,
                "Set Range Mode",
                null,
                true);

            rangeModeMenuItem.Items.Add(
                MenuItemHelper.CreateMenuItem(
                    string.Empty,
                    DepthImageRangeMode.Auto.ToString(),
                    new RelayCommand(
                        () => this.DepthImageVisualizationObject.RangeMode = DepthImageRangeMode.Auto),
                    true));

            rangeModeMenuItem.Items.Add(
                MenuItemHelper.CreateMenuItem(
                    string.Empty,
                    DepthImageRangeMode.Maximum.ToString(),
                    new RelayCommand(
                        () => this.DepthImageVisualizationObject.RangeMode = DepthImageRangeMode.Maximum),
                    true));

            menuItems.Add(rangeModeMenuItem);
        }
Example #3
0
        /// <inheritdoc/>
        public virtual void AppendContextMenuItems(List <MenuItem> menuItems)
        {
            if (this.DataContext is VisualizationPanel visualizationPanel)
            {
                if (visualizationPanel.VisualizationObjects.Count > 0)
                {
                    var visible = visualizationPanel.VisualizationObjects.Any(vo => vo.Visible);
                    menuItems.Add(
                        MenuItemHelper.CreateMenuItem(
                            IconSourcePath.ToggleVisibility,
                            visible ? "Hide All Visualizers" : "Show All Visualizers",
                            visualizationPanel.ToggleAllVisualizersVisibilityCommand,
                            null,
                            true));
                }

                menuItems.Add(
                    MenuItemHelper.CreateMenuItem(
                        IconSourcePath.ClearPanel,
                        $"Remove All Visualizers",
                        visualizationPanel.ClearPanelCommand,
                        null,
                        visualizationPanel.VisualizationObjects.Count > 0));

                // Add copy to clipboard menu with sub-menu items
                var copyToClipboardMenuItem = MenuItemHelper.CreateMenuItem(
                    string.Empty,
                    "Copy to Clipboard",
                    null);

                copyToClipboardMenuItem.Items.Add(
                    MenuItemHelper.CreateMenuItem(
                        null,
                        "Cursor Time",
                        visualizationPanel.Navigator.CopyToClipboardCommand,
                        null,
                        true,
                        visualizationPanel.Navigator.Cursor.ToString("M/d/yyyy HH:mm:ss.ffff")));
                copyToClipboardMenuItem.Items.Add(
                    MenuItemHelper.CreateMenuItem(
                        null,
                        "Session Name & Cursor Time",
                        visualizationPanel.Navigator.CopyToClipboardCommand,
                        null,
                        VisualizationContext.Instance.DatasetViewModel?.CurrentSessionViewModel != null,
                        VisualizationContext.Instance.DatasetViewModel.CurrentSessionViewModel.Name.ToString() + "@" + visualizationPanel.Navigator.Cursor.ToString("M/d/yyyy HH:mm:ss.ffff")));

                menuItems.Add(copyToClipboardMenuItem);

                menuItems.Add(
                    MenuItemHelper.CreateMenuItem(
                        null,
                        $"Go To Time ...",
                        visualizationPanel.Container.GoToTimeCommand,
                        null,
                        true));
            }
        }
 /// <inheritdoc/>
 public void AppendContextMenuItems(List <MenuItem> menuItems)
 {
     if (this.DataContext is VisualizationContainer visualizationContainer)
     {
         menuItems.Add(MenuItemHelper.CreateMenuItem(IconSourcePath.ZoomToSelection, "Zoom to Selection", visualizationContainer.ZoomToSelectionCommand));
         menuItems.Add(MenuItemHelper.CreateMenuItem(IconSourcePath.ClearSelection, "Clear Selection", visualizationContainer.ClearSelectionCommand));
         menuItems.Add(MenuItemHelper.CreateMenuItem(IconSourcePath.ZoomToSession, "Zoom to Session Extents", visualizationContainer.ZoomToSessionExtentsCommand));
     }
 }
        /// <inheritdoc/>
        public override void AppendContextMenuItems(List <MenuItem> menuItems)
        {
            if (this.DataContext is AudioVisualizationObject audioVisualizationObject && audioVisualizationObject.IsBound)
            {
                menuItems.Add(MenuItemHelper.CreateMenuItem(audioVisualizationObject.ContextMenuIconSource, audioVisualizationObject.EnableAudioCommandText, audioVisualizationObject.EnableAudioCommand));
            }

            base.AppendContextMenuItems(menuItems);
        }
Example #6
0
        /// <inheritdoc/>
        public override void AppendContextMenuItems(List <MenuItem> menuItems)
        {
            menuItems.Add(MenuItemHelper.CreateMenuItem(
                              null,
                              "Auto-Fit Axes",
                              this.VisualizationPanel.SetAutoAxisComputeModeCommand,
                              null,
                              this.VisualizationPanel.AxisComputeMode == AxisComputeMode.Manual));

            base.AppendContextMenuItems(menuItems);
        }
        private void AddAnnotationEditMenuItems(List <MenuItem> menuItems)
        {
            // All of the following must be true to edit an annotation:
            //
            // 1) We must be bound to a source
            // 2) Edit annotations values must be enabled.
            // 3) The cursor must be over an annotation.
            if (this.IsBound && this.EnableAnnotationValueEdit)
            {
                int index = this.GetAnnotationIndexByTime(this.Container.Navigator.Cursor);
                if (index >= 0)
                {
                    // Get the annotation to be edited
                    Message <TimeIntervalAnnotation> annotation = this.Data[index];

                    // Get the collection of schema definitions in the annotation
                    foreach (AnnotationSchemaDefinition schemaDefinition in this.Definition.SchemaDefinitions)
                    {
                        // Create a menuitem for the value
                        var valueMenuItem = MenuItemHelper.CreateMenuItem(IconSourcePath.Annotation, schemaDefinition.Name, null);

                        // If this is a finite schema, then get the list of possible values
                        if (schemaDefinition.Schema.IsFiniteAnnotationSchema)
                        {
                            // Get the collection of possible values
                            Type        schemaType     = schemaDefinition.Schema.GetType();
                            MethodInfo  valuesProperty = schemaType.GetProperty("Values").GetGetMethod();
                            IEnumerable values         = (IEnumerable)valuesProperty.Invoke(schemaDefinition.Schema, new object[] { });

                            // Create a menuitem for each value, with a command to update the value on the annotation.
                            foreach (object value in values)
                            {
                                var metadata = this.GetAnnotationValueMetadata(value, schemaDefinition.Schema);
                                valueMenuItem.Items.Add(MenuItemHelper.CreateAnnotationMenuItem(
                                                            value.ToString(),
                                                            metadata.BorderColor,
                                                            metadata.FillColor,
                                                            new PsiCommand(() => this.SetAnnotationValue(annotation, schemaDefinition.Name, value))));
                            }
                        }
                        else
                        {
                            valueMenuItem.Items.Add(MenuItemHelper.CreateMenuItem(
                                                        null,
                                                        annotation.Data.Values[schemaDefinition.Name].ToString(),
                                                        null));
                        }

                        menuItems.Add(valueMenuItem);
                    }
                }
            }
        }
        /// <inheritdoc/>
        public override IEnumerable <MenuItem> GetAdditionalContextMenuItems()
        {
            List <MenuItem> menuItems = new List <MenuItem>();

            // Add annotation edit menu items if we're above an annotation
            this.AddAnnotationEditMenuItems(menuItems);

            // Add the add annotation and delete annotation context menu items.
            menuItems.Add(MenuItemHelper.CreateMenuItem(null, "Add Annotation", this.GetAddAnnotationCommand()));
            menuItems.Add(MenuItemHelper.CreateMenuItem(null, "Delete Annotation", this.GetDeleteAnnotationCommand()));

            return(menuItems);
        }
Example #9
0
        /// <inheritdoc/>
        public override void AppendContextMenuItems(List <MenuItem> menuItems)
        {
            if (this.DataContext is TimeIntervalAnnotationVisualizationObject annotationVisualizationObject && annotationVisualizationObject.IsBound)
            {
                // Add the add annotation context menu item
                menuItems.Add(MenuItemHelper.CreateMenuItem(IconSourcePath.Annotation, "Add Annotation", annotationVisualizationObject.GetAddAnnotationCommand()));

                // Add the delete annotation context menu item
                ICommand deleteCommand = annotationVisualizationObject.GetDeleteAnnotationCommand();
                menuItems.Add(MenuItemHelper.CreateMenuItem(IconSourcePath.Annotation, "Delete Annotation", deleteCommand, null, deleteCommand != null));
            }

            base.AppendContextMenuItems(menuItems);
        }
        /// <inheritdoc/>
        public override void AppendContextMenuItems(List <MenuItem> menuItems)
        {
            if (this.DataContext is TimelineVisualizationPanel timelineVisualizationPanel)
            {
                // The show/hide legend menu
                menuItems.Add(
                    MenuItemHelper.CreateMenuItem(
                        IconSourcePath.Legend,
                        timelineVisualizationPanel.ShowLegend ? $"Hide Legend" : $"Show Legend",
                        timelineVisualizationPanel.ShowHideLegendCommand));
            }

            base.AppendContextMenuItems(menuItems);
        }
Example #11
0
        private void InsertPanelContextMenuItems(ContextMenu contextMenu)
        {
            contextMenu.Items.Add(MenuItemHelper.CreateMenuItem(IconSourcePath.Legend, this.ShowLegend ? "Hide Legend" : "Show Legend", this.ShowHideLegendCommand));
            contextMenu.Items.Add(MenuItemHelper.CreateMenuItem(IconSourcePath.RemovePanel, "Remove Panel", this.RemovePanelCommand));
            contextMenu.Items.Add(MenuItemHelper.CreateMenuItem(IconSourcePath.ClearPanel, "Clear", this.ClearPanelCommand));

            // Get the visualization object currently being snapped to (if any)
            VisualizationObject snappedVisualizationObject = this.Container.SnapToVisualizationObject;

            // Work out how many visualization objects we could potentially snap to.  If one of
            // this panel's visualization objects is currently being snapped to, then this total
            // is actually one fewer, and we'll also need to add an "unsnap" menu item.
            int snappableVisualizationObjectsCount = this.VisualizationObjects.Count;

            if ((snappedVisualizationObject != null) && this.VisualizationObjects.Contains(snappedVisualizationObject))
            {
                snappableVisualizationObjectsCount--;
                contextMenu.Items.Add(MenuItemHelper.CreateMenuItem(IconSourcePath.Stream, string.Format("Unsnap from {0}", this.Container.SnapToVisualizationObject.Name), new VisualizationCommand <VisualizerMetadata>((v) => this.Container.SnapToVisualizationObject.ToggleSnapToStream())));
            }

            // If there's only 1 snappable visualization object in this panel, then create a
            // direct menu, if there's more than 1 then create a cascading menu.
            if (snappableVisualizationObjectsCount == 1)
            {
                VisualizationObject snappableVisualizationObject = this.VisualizationObjects.First(vo => vo != this.Container.SnapToVisualizationObject);
                contextMenu.Items.Add(MenuItemHelper.CreateMenuItem(IconSourcePath.SnapToStream, string.Format("Snap to {0}", snappableVisualizationObject.Name), new VisualizationCommand <VisualizerMetadata>((v) => snappableVisualizationObject.ToggleSnapToStream())));
            }
            else if (snappableVisualizationObjectsCount > 1)
            {
                // Create the top-level menu item
                var snapMenuItem = MenuItemHelper.CreateMenuItem(IconSourcePath.SnapToStream, "Snap To", null);

                // create the child menu items for each visualization object.
                foreach (VisualizationObject visualizationObject in this.VisualizationObjects)
                {
                    if (visualizationObject != this.Container.SnapToVisualizationObject)
                    {
                        snapMenuItem.Items.Add(MenuItemHelper.CreateMenuItem(IconSourcePath.SnapToStream, visualizationObject.Name, new VisualizationCommand <VisualizerMetadata>((v) => visualizationObject.ToggleSnapToStream())));
                    }
                }

                contextMenu.Items.Add(snapMenuItem);
            }

            contextMenu.Items.Add(MenuItemHelper.CreateMenuItem(IconSourcePath.ZoomToSelection, "Zoom to Selection", this.ZoomToSelectionCommand));
            contextMenu.Items.Add(MenuItemHelper.CreateMenuItem(IconSourcePath.ZoomToSession, "Zoom to Session Extents", this.ZoomToSessionExtentsCommand));
        }
        /// <inheritdoc/>
        public override IEnumerable <MenuItem> GetAdditionalContextMenuItems()
        {
            List <MenuItem> menuItems = new List <MenuItem>();

            // Add the add annotation context menu item
            menuItems.Add(MenuItemHelper.CreateMenuItem(null, "Add Annotation", this.GetAddAnnotationCommand()));

            // If the mouse is above an existing annotation, add the delete annotation context menu item.
            ICommand deleteCommand = this.GetDeleteAnnotationCommand();

            if (deleteCommand != null)
            {
                menuItems.Add(MenuItemHelper.CreateMenuItem(null, "Delete Annotation", deleteCommand));
            }

            return(menuItems);
        }
Example #13
0
        private void AddContextMenuItems(IContextMenuItemsSource menuItemSource, bool addAsCascadingMenu)
        {
            // Assume the menu root is the main context menu.
            ItemsControl root = this.ContextMenu;

            // If we're adding a cascading menu, add the top level of the cascading
            // menu to the main context menu and set the root to it instead.
            if (addAsCascadingMenu)
            {
                if (root.Items.Count > 0)
                {
                    root.Items.Add(new Separator());
                }

                ItemsControl newRoot = MenuItemHelper.CreateMenuItem(IconSourcePath.Stream, menuItemSource.ContextMenuObjectName, null);
                root.Items.Add(newRoot);
                root = newRoot;
            }

            // Get the list of context menu items from the context menu items source
            var menuItems = new List <MenuItem>();

            menuItemSource.AppendContextMenuItems(menuItems);

            // Add the context menu items to the context menu root.
            if (menuItems != null && menuItems.Any())
            {
                if (root.Items.Count > 0)
                {
                    root.Items.Add(new Separator());
                }

                foreach (var menuItem in menuItems)
                {
                    if (menuItem != null)
                    {
                        root.Items.Add(menuItem);
                    }
                    else
                    {
                        root.Items.Add(new Separator());
                    }
                }
            }
        }
Example #14
0
        /// <inheritdoc/>
        public void AppendContextMenuItems(List <MenuItem> menuItems)
        {
            if (this.DataContext is InstantVisualizationContainer instantVisualizationContainer)
            {
                // Find the child panel that the mouse is over
                // Run a hit test at the mouse cursor
                this.mouseOverVisualizationPanel = null;
                VisualTreeHelper.HitTest(
                    this,
                    null,
                    new HitTestResultCallback(this.ContextMenuHitTestResult),
                    new PointHitTestParameters(Mouse.GetPosition(this)));

                if (this.mouseOverVisualizationPanel != null)
                {
                    menuItems.Add(MenuItemHelper.CreateMenuItem(IconSourcePath.InstantContainerAddCellLeft, $"Insert Cell to the Left", instantVisualizationContainer.CreateIncreaseCellCountCommand(this.mouseOverVisualizationPanel, true)));
                    menuItems.Add(MenuItemHelper.CreateMenuItem(IconSourcePath.InstantContainerAddCellRight, $"Insert Cell to the Right", instantVisualizationContainer.CreateIncreaseCellCountCommand(this.mouseOverVisualizationPanel, false)));
                    menuItems.Add(MenuItemHelper.CreateMenuItem(null, $"Remove Cell", instantVisualizationContainer.CreateRemoveCellCommand(this.mouseOverVisualizationPanel)));
                    menuItems.Add(MenuItemHelper.CreateMenuItem(IconSourcePath.InstantContainerRemoveCell, $"Remove {instantVisualizationContainer.Name}", instantVisualizationContainer.RemovePanelCommand));
                }
            }
        }
Example #15
0
        /// <inheritdoc/>
        public override void AppendContextMenuItems(List <MenuItem> menuItems)
        {
            base.AppendContextMenuItems(menuItems);

            if (this.DataContext is PlotVisualizationObject <TData> plotVisualizationObject)
            {
                if (plotVisualizationObject.MarkerStyle == MarkerStyle.None)
                {
                    menuItems.Add(MenuItemHelper.CreateMenuItem(
                                      null,
                                      "Show Markers",
                                      new VisualizationCommand(() => plotVisualizationObject.MarkerStyle = MarkerStyle.Circle)));
                }
                else
                {
                    menuItems.Add(MenuItemHelper.CreateMenuItem(
                                      null,
                                      "Hide Markers",
                                      new VisualizationCommand(() => plotVisualizationObject.MarkerStyle = MarkerStyle.None)));
                }
            }
        }
Example #16
0
        /// <inheritdoc/>
        public virtual void AppendContextMenuItems(List <MenuItem> menuItems)
        {
            if (this.DataContext is VisualizationPanel visualizationPanel)
            {
                if (visualizationPanel.VisualizationObjects.Count > 0)
                {
                    var visible = visualizationPanel.VisualizationObjects.Any(vo => vo.Visible);
                    menuItems.Add(MenuItemHelper.CreateMenuItem(
                                      IconSourcePath.ToggleVisibility,
                                      visible ? "Hide All Visualizers" : "Show All Visualizers",
                                      visualizationPanel.ToggleAllVisualizersVisibilityCommand,
                                      null,
                                      true));
                }

                menuItems.Add(MenuItemHelper.CreateMenuItem(
                                  IconSourcePath.ClearPanel,
                                  $"Remove All Visualizers",
                                  visualizationPanel.ClearPanelCommand,
                                  null,
                                  visualizationPanel.VisualizationObjects.Count > 0));
            }
        }
Example #17
0
        /// <inheritdoc/>
        public override void AppendContextMenuItems(List <MenuItem> menuItems)
        {
            if (this.DataContext is InstantVisualizationPanel visualizationPanel)
            {
                // Add Set Cursor Epsilon menu with sub-menu items
                var setCursorEpsilonMenuItem = MenuItemHelper.CreateMenuItem(
                    string.Empty,
                    "Set Default Cursor Epsilon",
                    null);

                _ = setCursorEpsilonMenuItem.Items.Add(
                    MenuItemHelper.CreateMenuItem(
                        null,
                        "Infinite Past",
                        new RelayCommand(() => this.UpdateDefaultCursorEpsilon(visualizationPanel, "Infinite Past", int.MaxValue, 0), true)));
                setCursorEpsilonMenuItem.Items.Add(
                    MenuItemHelper.CreateMenuItem(
                        null,
                        "Last 5 seconds",
                        new RelayCommand(() => this.UpdateDefaultCursorEpsilon(visualizationPanel, "Last 5 seconds", 5000, 0), true)));
                setCursorEpsilonMenuItem.Items.Add(
                    MenuItemHelper.CreateMenuItem(
                        null,
                        "Last 1 second",
                        new RelayCommand(() => this.UpdateDefaultCursorEpsilon(visualizationPanel, "Last 1 second", 1000, 0), true)));
                setCursorEpsilonMenuItem.Items.Add(
                    MenuItemHelper.CreateMenuItem(
                        null,
                        "Last 50 milliseconds",
                        new RelayCommand(() => this.UpdateDefaultCursorEpsilon(visualizationPanel, "Last 50 milliseconds", 50, 0), true)));

                menuItems.Add(setCursorEpsilonMenuItem);
            }

            base.AppendContextMenuItems(menuItems);
        }