示例#1
0
        private void TreeFunctions_MouseUp(object sender, MouseButtonEventArgs e)
        {
            _dragBoxFromMouseDown = Rect.Empty;
            var p             = e.GetPosition((FrameworkElement)sender);
            var mousePosition = ((FrameworkElement)sender).PointToScreen(p);

            if (e.ChangedButton != MouseButton.Right)
            {
                return;
            }

            var lng = ActiveQueryBuilder.View.WPF.Helpers.ConvertLanguageFromNative(Language);
            ICustomContextMenu menu = ControlFactory.Instance.GetCustomContextMenu();

            object tag = GetNodeTag(sender);

            var aki = tag as AdvancedKeywordInfo;

            if (aki != null)
            {
                menu.AddItem(
                    ActiveQueryBuilder.View.WPF.Helpers.Localizer.GetString("strInsertFunction", lng,
                                                                            LocalizableConstantsUI.strInsertFunction), MenuItem_Clicked, false, true, null, aki.Template);
            }

            if (menu.ItemCount > 0)
            {
                menu.Show(null, mousePosition.X, mousePosition.Y);
            }
        }
        private void TreeFunctions_MouseUp(object sender, MouseEventArgs e)
        {
            _dragBoxFromMouseDown = Rectangle.Empty;

            if (e.Button != MouseButtons.Right)
            {
                return;
            }

            ICustomContextMenu menu = ControlFactory.Instance.GetCustomContextMenu();

            object tag = GetNodeTag(treeFunctions.HitTest(e.Location).Node);

            var aki = tag as AdvancedKeywordInfo;

            if (aki != null)
            {
                menu.AddItem(
                    ActiveQueryBuilder.View.Helpers.Localizer.GetString("strInsertFunction",
                                                                        LocalizableConstantsUI.strInsertFunction), MenuItem_Clicked, false, true, null, aki.Template);
            }

            CPoint point = GetScreenPoint((Control)sender, e.Location.FromNativePoint());

            if (menu.ItemCount > 0)
            {
                menu.Show(null, point.X, point.Y);
            }
        }
示例#3
0
        /// <summary>
        /// ValidateContextMenu event allows to modify or hide any query builder context menu.
        /// </summary>
        private void QBuilder_OnValidateContextMenu(object sender, QueryElement queryelement, ICustomContextMenu menu)
        {
            if (ValidateContextMenu.IsChecked != true)
            {
                return;
            }

            BoxLogEvents.Text = "OnValidateContextMenu" +
                                Environment.NewLine + BoxLogEvents.Text;
            // Insert custom menu item to the top of any context menu
            menu.InsertItem(0, "Custom Item 1", CustomItem1EventHandler);
            menu.InsertSeparator(1);  // separator

            if (queryelement is Link) // Link context menu
            {
                // Add another item in the Link's menu
                menu.AddSeparator(); // separator
                menu.AddItem("Custom Item 2", CustomItem2EventHandler);
            }
            else if (queryelement is DataSourceObject) // Datasource context menu
            {
            }
            else if (queryelement is UnionSubQuery)
            {
                if (sender is IDesignPaneControl) // diagram pane context menu
                {
                }
                else if (sender is NavigationPopupBase)
                {
                }
            }
            else if (queryelement is QueryColumnListItem) // QueryColumnListControl context menu
            {
                var queryColumnListItem = (QueryColumnListItem)queryelement;

                var queryColumnListHitTestInfo =
                    QBuilder.QueryColumnListControl.HitTest(Mouse
                                                            .GetPosition((UIElement)QBuilder.QueryColumnListControl).ToCPoint());

                switch (queryColumnListHitTestInfo.ItemProperty)
                {
                case QueryColumnListItemProperty.Expression:
                    menu.AddSeparator();
                    var menuItemExpression = menu.AddSubMenu("Expression property");
                    menuItemExpression.AddItem("Show full SQL", ExpressionColumnEventHandler, false, true, null,
                                               queryColumnListItem.Expression.GetSQL());
                    break;

                case QueryColumnListItemProperty.Selected:
                case QueryColumnListItemProperty.Alias:
                case QueryColumnListItemProperty.SortType:
                case QueryColumnListItemProperty.SortOrder:
                case QueryColumnListItemProperty.Aggregate:
                case QueryColumnListItemProperty.Grouping:
                case QueryColumnListItemProperty.ConditionType:
                case QueryColumnListItemProperty.Condition:
                case QueryColumnListItemProperty.Custom:
                    menu.AddSeparator();
                    menu.AddItem("Get info of current cell", (o, args) =>
                    {
                        var message =
                            $"Item property [{queryColumnListHitTestInfo.ItemProperty}]\nItem index [{queryColumnListHitTestInfo.ItemIndex}]\nCondition index [{queryColumnListHitTestInfo.ConditionIndex}]\nIs now here [{queryColumnListHitTestInfo.IsNowhere}]";
                        MessageBox.Show(this, message, "Information");
                    });
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
        }