Exemplo n.º 1
0
        protected override void OnBeforeExpand(TreeViewCancelEventArgs e)
        {
            base.OnBeforeExpand(e);

            if (e.Node.Nodes.Count == 0 || e.Node.Nodes[0].Tag != null)
            {
                return;
            }

            e.Node.Nodes.Clear();

            var entity = e.Node.Tag as EntitySchema;

            if (entity == null)
            {
                entity = _api.GetEntitySchema(((EntityForeign)e.Node.Tag).LinkTable);
            }

            foreach (var foreign in entity.Members.OfType <EntityForeign>().OrderBy(HumanText.GetMemberName))
            {
                var node      = new TreeNode(HumanText.GetMemberName(foreign));
                var linkTable = _api.GetEntitySchema(foreign.LinkTable);
                node.Tag = foreign;
                if (linkTable.Members.Any(p => p is EntityForeign))
                {
                    node.Nodes.Add(new TreeNode());
                }
                e.Node.Nodes.Add(node);
            }
        }
Exemplo n.º 2
0
        private void BuildFields(TreeNodeCollection nodes, EntitySchema entity)
        {
            nodes.Clear();

            foreach (var member in entity.Members.OrderBy(HumanText.GetMemberName))
            {
                var node = new TreeNode
                {
                    Text = HumanText.GetMemberName(member),
                    Tag  = member
                };

                switch (member.Type)
                {
                case EntityMemberType.Id:
                case EntityMemberType.Field:
                case EntityMemberType.Calculated:
                    break;

                case EntityMemberType.Foreign:
                    node.Nodes.Add("Dummy");
                    break;

                default:
                    continue;
                }

                nodes.Add(node);
            }
        }
Exemplo n.º 3
0
        private void CreateHeaders(ResultSet resultSet)
        {
            var headerView = new SourceGrid.Cells.Views.ColumnHeader
            {
                ElementText = new DevAge.Drawing.VisualElements.TextRenderer()
            };

            var toolTipController = new ToolTipText();

            _grid.ColumnsCount = _entity.Members.Count;
            _grid.FixedRows    = 1;

            _grid.Rows.Insert(0);

            _columnMap = ApiUtils.BuildColumnMap(resultSet);

            for (int i = 0; i < resultSet.FieldCount; i++)
            {
                var member = _entity.Members[resultSet.GetFieldName(i)];

                _grid[0, _columnMap[i]] = new SourceGrid.Cells.ColumnHeader(HumanText.GetMemberName(member))
                {
                    View                 = headerView,
                    ToolTipText          = HumanText.GetMemberName(member),
                    AutomaticSortEnabled = false
                };

                _grid[0, _columnMap[i]].AddController(toolTipController);
            }
        }
Exemplo n.º 4
0
        private void AddReportField(EntityMemberPath path)
        {
            var item = new ListViewItem(HumanText.GetMemberName(path.Tail))
            {
                Tag = path
            };

            InsertSorted(_reportFields, item, true);
        }
Exemplo n.º 5
0
        private void SetSelectedEntity(EntityMemberPath path)
        {
            if (path.Count == 0)
            {
                _selectedEntity = _entity;
                _path.Text      = HumanText.GetEntityName(_selectedEntity);
            }
            else
            {
                _selectedEntity = _api.GetEntitySchema(((EntityForeign)path.Tail).LinkTable);
                _path.Text      = HumanText.GetEntityMemberPath(path);
            }

            _availableFields.BeginUpdate();
            _availableFields.Items.Clear();

            foreach (var member in _selectedEntity.Members.OrderBy(HumanText.GetMemberName))
            {
                var memberPath = new EntityMemberPath(path, member);

                if (
                    (member is EntityField || member is EntityCalculatedField) &&
                    _reportFields.Items.Cast <ListViewItem>().All(p => !p.Tag.Equals(memberPath))
                    )
                {
                    _availableFields.Items.Add(new ListViewItem(HumanText.GetMemberName(member))
                    {
                        Tag = memberPath
                    });
                }
            }

            _availableFields.EndUpdate();

            UpdateEnabled();

            if (_autoCompleteForm != null)
            {
                _autoCompleteForm.Dispose();
                _autoCompleteForm = null;
            }
        }
Exemplo n.º 6
0
        public void Export(Stream stream, EntitySchema entity, RecordSet recordSet, ApiRowErrorsCollection errors)
        {
            if (stream == null)
            {
                throw new ArgumentNullException(nameof(stream));
            }
            if (entity == null)
            {
                throw new ArgumentNullException(nameof(entity));
            }
            if (recordSet == null)
            {
                throw new ArgumentNullException(nameof(recordSet));
            }

            var workbook = new XSSFWorkbook();

            var sheet = workbook.CreateSheet(PrettifyName(entity.Name));

            sheet.DefaultRowHeightInPoints = 15;

            var errorColor = new XSSFColor(Color.Orange);
            var errorStyle = (XSSFCellStyle)workbook.CreateCellStyle();

            errorStyle.FillForegroundColorColor = errorColor;
            errorStyle.FillPattern = FillPattern.SolidForeground;
            var headerStyle        = CreateHeaderStyle(workbook);
            var dateStyle          = CreateDateStyle(workbook, null, false);
            var dateErrorStyle     = CreateDateStyle(workbook, errorColor, false);
            var dateTimeStyle      = CreateDateStyle(workbook, null, true);
            var dateTimeErrorStyle = CreateDateStyle(workbook, errorColor, true);

            // Create the headers.

            var row = sheet.CreateRow(0);

            var fieldNames = recordSet[0].FieldNames.OrderBy(p => p.ToLower()).ToList();

            for (int i = 0; i < fieldNames.Count; i++)
            {
                var member = entity.Members[fieldNames[i]];
                AddHeader(row, i, HumanText.GetMemberName(member), member.Comments, headerStyle);
            }

            bool haveAutosized = false;
            Dictionary <int, ApiRowErrors> errorMap = null;

            if (errors != null)
            {
                errorMap = errors.ToDictionary(p => p.Row, p => p);
            }

            for (int i = 0; i < recordSet.Count; i++)
            {
                var record = recordSet[i];
                row = sheet.CreateRow(i + 1);
                ApiRowErrors rowErrors = null;
                if (errorMap != null)
                {
                    errorMap.TryGetValue(i, out rowErrors);
                }

                for (int j = 0; j < fieldNames.Count; j++)
                {
                    ICellStyle cellStyle = null;
                    if (rowErrors != null)
                    {
                        cellStyle = errorStyle;
                    }
                    var field = fieldNames[j];

                    switch (((EntityTypedField)entity.Members[field]).DataType)
                    {
                    case EntityDataType.Date:
                        cellStyle = rowErrors == null ? dateStyle : dateErrorStyle;
                        break;

                    case EntityDataType.DateTime:
                    case EntityDataType.DateTimeTz:
                        cellStyle = rowErrors == null ? dateTimeStyle : dateTimeErrorStyle;
                        break;
                    }

                    string fieldError = GetFieldError(rowErrors, field);

                    object value = record.ContainsField(field) ? record[field] : null;
                    AddCell(row, j, value, cellStyle, fieldError);
                }

                // We only auto size the top 20 rows for performance reasons.

                if (i == 20)
                {
                    haveAutosized = true;
                    AutoSizeColumns(fieldNames.Count, sheet);
                }
            }

            if (!haveAutosized)
            {
                AutoSizeColumns(fieldNames.Count, sheet);
            }

            workbook.Write(stream);
        }
Exemplo n.º 7
0
 public override string ToString()
 {
     return(HumanText.GetMemberName(Field));
 }
Exemplo n.º 8
0
        public FilterControl(EntityPhysicalField field)
        {
            if (field == null)
            {
                throw new ArgumentNullException(nameof(field));
            }

            Field = field;

            InitializeComponent();

            _name.Text = HumanText.GetMemberName(Field);

            foreach (var control in new Control[] { _textBox, _date, _dateTime, _numericTextBox })
            {
                control.Visible = false;
            }

            switch (field.DataType)
            {
            case EntityDataType.String:
                _control = _textBox;
                break;

            case EntityDataType.Date:
                _control = _date;
                break;

            case EntityDataType.DateTime:
            case EntityDataType.DateTimeTz:
                _control = _dateTime;
                break;

            case EntityDataType.Decimal:
                _control = _numericTextBox;
                break;

            case EntityDataType.Long:
            case EntityDataType.Int:
                _numericTextBox.NumberScale = 0;
                _control = _numericTextBox;
                break;

            case EntityDataType.Bool:
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            FilterType[] filterTypes;

            switch (field.Type)
            {
            case EntityMemberType.Foreign:
                filterTypes = ForeignFilterTypes;
                break;

            case EntityMemberType.Id:
                filterTypes = IdFilterTypes;
                break;

            default:
                switch (field.DataType)
                {
                case EntityDataType.String:
                    filterTypes = TextFilterTypes;
                    break;

                case EntityDataType.Date:
                case EntityDataType.DateTime:
                case EntityDataType.DateTimeTz:
                case EntityDataType.Decimal:
                case EntityDataType.Long:
                case EntityDataType.Int:
                    filterTypes = OtherFilterTypes;
                    break;

                case EntityDataType.Bool:
                    filterTypes = BoolFilterTypes;
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
                break;
            }

            foreach (var filterType in filterTypes)
            {
                var menuItem = new MenuItem
                {
                    Text = GetFilterText(filterType),
                    Tag  = filterType
                };

                menuItem.Click += FilterSelected;

                _contextMenu.MenuItems.Add(menuItem);
            }

            if (_control != null)
            {
                _control.Visible = true;
            }

            // Force an update.
            _filterType = FilterType.NotEqual;
            FilterType  = Field.DataType == EntityDataType.Bool ? FilterType.IsTrue : FilterType.Equal;
        }