コード例 #1
0
        protected virtual GridDisplayConfiguration CreateDisplayedColumns()
        {
            var result = new GridDisplayConfiguration();

            result.BuildColumns(ReferencedClass, GridDisplayConfiguration.Mode.ReadOnly, false);
            return(result);
        }
コード例 #2
0
        public void RefreshGridView(GridDisplayConfiguration cfg)
        {
            cfg.Columns.CollectionChanged += (s, e) => RefreshGridView(cfg);

            GridView view = new GridView()
            {
                AllowsColumnReorder = true
            };

            this.View = view;

            foreach (var desc in cfg.Columns)
            {
                var col = new GridViewColumn()
                {
                    Header = desc.Header
                };
                if (desc.RequestedWidth > 0)
                {
                    col.Width = desc.RequestedWidth;
                }

                DataTemplate result = new DataTemplate();
                var          cpFef  = new FrameworkElementFactory(typeof(ContentPresenter));
                cpFef.SetBinding(ContentPresenter.ContentProperty, new Binding()
                {
                    Path = new PropertyPath(desc.Name), Mode = BindingMode.OneWay
                });
                cpFef.SetValue(FrameworkElement.HorizontalAlignmentProperty, HorizontalAlignment.Stretch);
                result.VisualTree = cpFef;
                col.CellTemplate  = result;
                view.Columns.Add(col);
            }
        }
コード例 #3
0
        protected virtual GridDisplayConfiguration CreateDisplayedColumns()
        {
            var result = new GridDisplayConfiguration();

            GridDisplayConfiguration.Mode mode = GridDisplayConfiguration.Mode.Editable;

            result.BuildColumns(ValueModel.CompoundObjectDefinition, mode, true);
            return(result);
        }
コード例 #4
0
        protected virtual GridDisplayConfiguration CreateDisplayedColumns()
        {
            var result = new GridDisplayConfiguration();

            GridDisplayConfiguration.Mode mode = IsInlineEditable ?
                                                 GridDisplayConfiguration.Mode.Editable
                : GridDisplayConfiguration.Mode.ReadOnly;

            result.BuildColumns(ReferencedClass, mode, true);
            return(result);
        }
コード例 #5
0
        protected virtual GridDisplayConfiguration CreateDisplayedColumns()
        {
            var result = new GridDisplayConfiguration();

            result.BuildColumns(_dataType, GridDisplayConfiguration.Mode.Editable, true);

            // Fix column control kinds
            var editKind = NamedObjects.Gui.ControlKinds.Zetbox_App_GUI_EnumerationSelectorKind.Find(FrozenContext);

            foreach (var col in result.Columns)
            {
                col.ControlKind     = editKind;
                col.GridPreEditKind = editKind;
            }

            return(result);
        }
コード例 #6
0
        private void Load()
        {
            Parent.FilterList.ResetUserFilter();
            if (_selectedItem != null)
            {
                // Filter
                foreach (var f in _selectedItem.Object.Filter)
                {
                    var props = f.Properties.Select(i => FrozenContext.FindPersistenceObject <Property>(i)).ToList();
                    var mdl   = FilterModel.FromProperty(FrozenContext, props);
                    int idx   = 0;
                    foreach (var val in f.Values ?? new object[] { })
                    {
                        if (idx >= mdl.FilterArguments.Count)
                        {
                            break;
                        }
                        var valueMdl = mdl.FilterArguments[idx].Value;
                        valueMdl.SetUntypedValue(ResolveUntypedValue(val, valueMdl));
                        idx++;
                    }
                    Parent.FilterList.AddFilter(mdl, true, props);
                }

                // Cols
                if (_selectedItem.Object.Columns != null && _selectedItem.Object.Columns.Count > 0)
                {
                    Parent.DisplayedColumns.Columns.Clear();
                    foreach (var col in _selectedItem.Object.Columns)
                    {
                        var props = col.Properties.Select(i => FrozenContext.FindPersistenceObject <Property>(i)).ToArray();
                        Parent.DisplayedColumns.Columns.Add(GridDisplayConfiguration.CreateColumnDisplayModel(GridDisplayConfiguration.Mode.ReadOnly, props));
                    }
                }
            }
        }
コード例 #7
0
        public static void RefreshGridView(ListView lst, GridDisplayConfiguration cfg, DependencyProperty sortProperty)
        {
            GridView view = new GridView()
            {
                AllowsColumnReorder = true
            };

            lst.View = view;
            if (cfg.ShowIcon)
            {
                view.Columns.Add(new GridViewColumn()
                {
                    CellTemplate = (DataTemplate)lst.FindResource("iconCellTemplate")
                });
            }

            if (cfg.ShowId)
            {
                var col = new GridViewColumn()
                {
                    CellTemplate = (DataTemplate)lst.FindResource("idCellTemplate"), Header = "ID"
                };
                view.Columns.Add(col);
                // SetSortPropertyName(col, "ID");
            }

            if (cfg.ShowName)
            {
                var col = new GridViewColumn()
                {
                    CellTemplate = (DataTemplate)lst.FindResource("nameCellTemplate"), Header = "Name"
                };
                view.Columns.Add(col);
                // Not possible
                // SetSortPropertyName(col, "Name");
            }

            foreach (var desc in cfg.Columns)
            {
                // TODO: use default controls after moving labeling to infrastructure
                var col = new GridViewColumn()
                {
                    Header = desc.Header
                };
                if (desc.RequestedWidthAbsolute != null)
                {
                    col.Width = desc.RequestedWidthAbsolute.Value;
                }
                else if (desc.RequestedWidth != WidthHint.Default)
                {
                    col.Width = TranslateWidth(desc.RequestedWidth);
                }

                DataTemplate result = new DataTemplate();
                var          cpFef  = new FrameworkElementFactory(typeof(ContentPresenter));
                switch (desc.Type)
                {
                case ColumnDisplayModel.ColumnType.MethodModel:
                    cpFef.SetBinding(ContentPresenter.ContentProperty, new Binding()
                    {
                        Path = new PropertyPath(String.Format("ActionViewModelsByName[{0}]", desc.Name)), Mode = BindingMode.OneWay
                    });
                    break;

                case ColumnDisplayModel.ColumnType.PropertyModel:
                {
                    if (sortProperty != null)
                    {
                        col.SetValue(sortProperty, desc.Name);
                    }

                    var tmp     = desc.Name.Split('.').Select(i => String.Format("PropertyModelsByName[{0}]", i));
                    var binding = string.Join(".Value.", tmp.ToArray());
                    cpFef.SetBinding(ContentPresenter.ContentProperty, new Binding()
                        {
                            Path = new PropertyPath(binding), Mode = BindingMode.OneWay
                        });
                    break;
                }

                case ColumnDisplayModel.ColumnType.Property:
                    cpFef.SetBinding(ContentPresenter.ContentProperty, new Binding()
                    {
                        Path = new PropertyPath(desc.Name), Mode = BindingMode.OneWay
                    });
                    break;
                }
                cpFef.SetValue(VisualTypeTemplateSelector.RequestedKindProperty, desc.ControlKind);
                cpFef.SetValue(ContentPresenter.ContentTemplateSelectorProperty, lst.FindResource("defaultTemplateSelector"));
                cpFef.SetValue(FrameworkElement.HorizontalAlignmentProperty, HorizontalAlignment.Stretch);
                result.VisualTree = cpFef;
                col.CellTemplate  = result;
                view.Columns.Add(col);
            }
        }
コード例 #8
0
        public static void RefreshGridView(DataGrid lst, GridDisplayConfiguration cfg, DependencyProperty sortProperty)
        {
            lst.Columns.Clear();
            if (cfg.ShowIcon)
            {
                lst.Columns.Add(new DataGridTemplateColumn()
                {
                    CellTemplate = (DataTemplate)lst.FindResource("iconCellTemplate")
                });
            }

            if (cfg.ShowId)
            {
                var col = new DataGridTemplateColumn()
                {
                    CellTemplate = (DataTemplate)lst.FindResource("idCellTemplate"), Header = "ID"
                };
                lst.Columns.Add(col);
                // SetSortPropertyName(col, "ID");
            }

            if (cfg.ShowName)
            {
                var col = new DataGridTemplateColumn()
                {
                    CellTemplate = (DataTemplate)lst.FindResource("nameCellTemplate"), Header = "Name"
                };
                lst.Columns.Add(col);
                // Not possible
                // SetSortPropertyName(col, "Name");
            }

            foreach (var desc in cfg.Columns)
            {
                // TODO: use default controls after moving labeling to infrastructure
                var col = new DataGridTemplateColumn()
                {
                    Header = desc.Header
                };
                if (desc.RequestedWidthAbsolute != null)
                {
                    col.Width = desc.RequestedWidthAbsolute.Value;
                }
                else if (desc.RequestedWidth != App.GUI.WidthHint.Default)
                {
                    col.Width = TranslateWidth(desc.RequestedWidth);
                }

                var needEditor = desc.ControlKind != desc.GridPreEditKind;

                var editorFactory = needEditor ? new FrameworkElementFactory(typeof(ContentPresenter)) : null;
                var labelFactory  = new FrameworkElementFactory(typeof(ContentPresenter));
                switch (desc.Type)
                {
                case ColumnDisplayModel.ColumnType.MethodModel:
                    if (needEditor)
                    {
                        editorFactory.SetBinding(ContentPresenter.ContentProperty, new Binding()
                        {
                            Path = new PropertyPath(String.Format("Object.ActionViewModelsByName[{0}]", desc.Name)), Mode = BindingMode.OneWay
                        });
                    }
                    labelFactory.SetBinding(ContentPresenter.ContentProperty, new Binding()
                    {
                        Path = new PropertyPath(String.Format("Object.ActionViewModelsByName[{0}]", desc.Name)), Mode = BindingMode.OneWay
                    });
                    break;

                case ColumnDisplayModel.ColumnType.PropertyModel:
                {
                    // Only database properties can be sorted
                    // TODO: On the client side, maybe also Calculated Properties and ViewModels Properties
                    if (sortProperty != null)
                    {
                        col.SetValue(sortProperty, desc.Name);
                    }

                    var tmp     = desc.Name.Split('.').Select(i => String.Format("PropertyModelsByName[{0}]", i));
                    var binding = "Object." + string.Join(".Value.", tmp.ToArray());
                    if (needEditor)
                    {
                        editorFactory.SetBinding(ContentPresenter.ContentProperty, new Binding()
                            {
                                Path = new PropertyPath(binding), Mode = BindingMode.OneWay
                            });
                    }
                    labelFactory.SetBinding(ContentPresenter.ContentProperty, new Binding()
                        {
                            Path = new PropertyPath(binding), Mode = BindingMode.OneWay
                        });
                    break;
                }

                case ColumnDisplayModel.ColumnType.Property:
                    if (needEditor)
                    {
                        editorFactory.SetBinding(ContentPresenter.ContentProperty, new Binding()
                        {
                            Path = new PropertyPath("Object." + desc.Name), Mode = BindingMode.OneWay
                        });
                    }
                    labelFactory.SetBinding(ContentPresenter.ContentProperty, new Binding()
                    {
                        Path = new PropertyPath("Object." + desc.Name), Mode = BindingMode.OneWay
                    });
                    break;
                }
                if (needEditor)
                {
                    editorFactory.SetValue(VisualTypeTemplateSelector.RequestedKindProperty, desc.ControlKind);
                    editorFactory.SetValue(ContentPresenter.ContentTemplateSelectorProperty, lst.FindResource("defaultTemplateSelector"));
                    editorFactory.SetValue(FrameworkElement.HorizontalAlignmentProperty, HorizontalAlignment.Stretch);
                }

                labelFactory.SetValue(VisualTypeTemplateSelector.RequestedKindProperty, desc.GridPreEditKind);
                labelFactory.SetValue(ContentPresenter.ContentTemplateSelectorProperty, lst.FindResource("defaultTemplateSelector"));
                labelFactory.SetValue(FrameworkElement.HorizontalAlignmentProperty, HorizontalAlignment.Stretch);

                col.CellTemplate = new DataTemplate()
                {
                    VisualTree = labelFactory
                };
                // set editing template only if different
                if (needEditor)
                {
                    col.CellEditingTemplate = new DataTemplate()
                    {
                        VisualTree = editorFactory
                    };
                }
                lst.Columns.Add(col);
            }
        }