Exemple #1
0
        void GridViewColumnHeader_Click(object sender, RoutedEventArgs e)
        {
            SortGridViewColumnHeader header = sender as SortGridViewColumnHeader;

            if (header == null)
            {
                return;
            }

            if (OrderClick != null && !OrderClick(header.RequestColumn))
            {
                return;
            }

            string canOrder = QueryUtils.CanOrder(header.RequestColumn.Token);

            if (canOrder.HasText())
            {
                //Avoid UI Automation hangs
                Dispatcher.BeginInvoke(() => MessageBox.Show(Window.GetWindow(this), canOrder));

                return;
            }

            header.ChangeOrders(OrderOptions);

            Search(resetPage: true);
        }
Exemple #2
0
        private void filterHeader_Click(object sender, RoutedEventArgs e)
        {
            SortGridViewColumnHeader gvch = GetHeaderColumnHeader(sender);

            FilterOptions.Add(new FilterOption
            {
                Token     = gvch.RequestColumn.Token,
                Operation = FilterOperation.EqualTo,
                Value     = FilterOption.DefaultValue(gvch.RequestColumn.Type),
            });
        }
Exemple #3
0
        private void removeMenu_Click(object sender, RoutedEventArgs e)
        {
            if (!AllowChangeColumns)
            {
                return;
            }

            SortGridViewColumnHeader gvch = GetHeaderColumnHeader(sender);

            gvResults.Columns.Remove(gvch.Column);

            UpdateMultiplyMessage(true);
        }
Exemple #4
0
        private void renameMenu_Click(object sender, RoutedEventArgs e)
        {
            if (!AllowChangeColumns)
            {
                return;
            }

            SortGridViewColumnHeader gvch = GetHeaderColumnHeader(sender);

            string result = gvch.RequestColumn.DisplayName;

            if (ValueLineBox.Show <string>(ref result, SearchMessage.NewColumnSName.NiceToString(), SearchMessage.ChooseTheDisplayNameOfTheNewColumn.NiceToString(), SearchMessage.Name.NiceToString(), null, null, Window.GetWindow(this)))
            {
                gvch.RequestColumn.DisplayName = result;
                gvch.Content = result;
            }
        }
Exemple #5
0
        private void FillGridView()
        {
            gvResults.Columns.Clear();
            foreach (var rc in ResultTable.Columns)
            {
                gvResults.Columns.Add(new GridViewColumn
                {
                    Header = new SortGridViewColumnHeader
                    {
                        Content       = rc.Column.DisplayName,
                        RequestColumn = rc.Column,
                    },
                    CellTemplate = CreateDataTemplate(rc),
                });
            }

            SortGridViewColumnHeader.SetColumnAdorners(gvResults, OrderOptions);
        }
Exemple #6
0
        private SortGridViewColumnHeader GetCellColumnHeader(ContextMenu context)
        {
            Point point = context.PointToScreen(new Point(0, 0));

            Point newPoint = lvResult.PointFromScreen(point);

            Point headerPoint = new Point(newPoint.X, 4);

            HitTestResult hitResult = VisualTreeHelper.HitTest(lvResult, headerPoint);

            if (hitResult == null)
            {
                return(null);
            }

            SortGridViewColumnHeader gvch = hitResult.VisualHit.VisualParents().OfType <SortGridViewColumnHeader>().FirstOrDefault();

            return(gvch);
        }
Exemple #7
0
        void GridViewColumnHeader_Click(object sender, RoutedEventArgs e)
        {
            SortGridViewColumnHeader header = sender as SortGridViewColumnHeader;

            if (header == null)
            {
                return;
            }

            string canOrder = QueryUtils.CanOrder(header.RequestColumn.Token);

            if (canOrder.HasText())
            {
                MessageBox.Show(Window.GetWindow(this), canOrder);
                return;
            }

            header.ChangeOrders(OrderOptions);

            OnGenerateChart();
        }
Exemple #8
0
        private void filterCell_Click(object sender, RoutedEventArgs e)
        {
            ContextMenu context = (ContextMenu)((MenuItem)sender).Parent;

            SortGridViewColumnHeader gvch = GetCellColumnHeader(context);

            if (gvch == null)
            {
                return;
            }

            ResultRow row   = (ResultRow)lvResult.SelectedItem;
            object    value = row[gvch.ResultColumn];

            FilterOptions.Add(new FilterOption
            {
                Token     = gvch.RequestColumn.Token,
                Operation = FilterOperation.EqualTo,
                Value     = value is EmbeddedEntity ? null : value
            });
        }
Exemple #9
0
        public void Reinitialize(List <FilterOption> filters, List <ColumnOption> columns, ColumnOptionsMode columnOptionsMode, List <OrderOption> orders, Pagination pagination)
        {
            try
            {
                avoidPaginationChange = true;

                ColumnOptions.Clear();
                ColumnOptions.AddRange(columns);
                ColumnOption.SetColumnTokens(ColumnOptions, Description);
                ColumnOptionsMode = columnOptionsMode;
                GenerateListViewColumns();

                if (!filters.SequenceEqual(FilterOptions))
                {
                    if (SimpleFilterBuilder != null)
                    {
                        SimpleFilterBuilder = null;
                    }

                    FilterOptions.Clear();
                    FilterOption.SetFilterTokens(filters, Description);
                    FilterOptions.AddRange(filters);
                }

                OrderOptions.Clear();
                OrderOptions.AddRange(orders);
                OrderOption.SetOrderTokens(OrderOptions, Description);
                SortGridViewColumnHeader.SetColumnAdorners(gvResults, OrderOptions);

                UpdateMultiplyMessage(true);

                Pagination = pagination;
            }
            finally
            {
                avoidPaginationChange = false;
            }
        }
Exemple #10
0
        public void OnLoaded()
        {
            if (loaded)
            {
                return;
            }

            loaded = true;

            if (FilterColumn.HasText())
            {
                FilterOptions.Add(new FilterOption
                {
                    ColumnName = FilterColumn,
                    Operation  = FilterOperation.EqualTo,
                    Frozen     = true,
                }.Bind(FilterOption.ValueProperty, new Binding("DataContext" + (FilterRoute.HasText() ? "." + FilterRoute : null))
                {
                    Source = this
                }));

                if (QueryUtils.IsColumnToken(FilterColumn))
                {
                    ColumnOptions.Add(new ColumnOption(FilterColumn));
                    ColumnOptionsMode = ColumnOptionsMode.Remove;
                }
                if (this.NotSet(SearchOnLoadProperty))
                {
                    SearchOnLoad = true;
                }
            }

            if (OrderOptions.IsNullOrEmpty() && !entityColumn.Implementations.Value.IsByAll)
            {
                var orderType = entityColumn.Implementations.Value.Types.All(t => EntityKindCache.GetEntityData(t) == EntityData.Master) ? OrderType.Ascending : OrderType.Descending;

                var column = Description.Columns.SingleOrDefaultEx(c => c.Name == "Id");

                if (column != null)
                {
                    OrderOptions.Add(new OrderOption(column.Name, orderType));
                }
            }

            btCreate.ToolTip = SearchMessage.CreateNew0_G.NiceToString()
                               .ForGenderAndNumber(entityColumn.Implementations.Value.Types.FirstOrDefault()?.GetGender() ?? 'm')
                               .FormatWith(entityColumn.Implementations.Value.Types.CommaOr(a => a.NiceName()));

            if (this.NotSet(SearchControl.NavigateProperty) && Navigate)
            {
                Navigate = Implementations.IsByAll ? true :
                           Implementations.Types.Any(t => Navigator.IsNavigable(t, isSearch: true));
            }

            if (this.NotSet(EntityBase.CreateProperty) && Create)
            {
                Create = Implementations.IsByAll ? false :
                         Implementations.Types.Any(t => Navigator.IsCreable(t, isSearch: true));
            }

            ColumnOption.SetColumnTokens(ColumnOptions, Description);

            if (this.CanAddFilters || this.AllowChangeColumns)
            {
                headerContextMenu = new ContextMenu();

                if (this.CanAddFilters)
                {
                    headerContextMenu.Items.Add(new MenuItem {
                        Header = SearchMessage.AddFilter.NiceToString()
                    }.Handle(MenuItem.ClickEvent, filterHeader_Click));
                }

                if (this.CanAddFilters && this.AllowChangeColumns)
                {
                    headerContextMenu.Items.Add(new Separator());
                }

                if (this.AllowChangeColumns)
                {
                    headerContextMenu.Items.Add(new MenuItem {
                        Header = SearchMessage.Rename.NiceToString()
                    }.Handle(MenuItem.ClickEvent, renameMenu_Click));
                    headerContextMenu.Items.Add(new MenuItem {
                        Header = EntityControlMessage.Remove.NiceToString()
                    }.Handle(MenuItem.ClickEvent, removeMenu_Click));
                }
            }

            GenerateListViewColumns();

            FilterOption.SetFilterTokens(FilterOptions, Description);

            filterBuilder.Filters = FilterOptions;
            ((INotifyCollectionChanged)FilterOptions).CollectionChanged += FilterOptions_CollectionChanged;

            OrderOption.SetOrderTokens(OrderOptions, Description);

            SortGridViewColumnHeader.SetColumnAdorners(gvResults, OrderOptions);

            if (IsVisible)
            {
                FillMenuItems();

                if (SearchOnLoad)
                {
                    Search();
                }
            }
            else
            {
                IsVisibleChanged += SearchControl_IsVisibleChanged;
            }

            UpdateVisibility();

            AutomationProperties.SetName(this, QueryUtils.GetKey(QueryName));

            foreach (var item in FilterOptions)
            {
                item.BindingValueChanged += new DependencyPropertyChangedEventHandler(item_BindingValueChanged);
            }
        }