private void Reload()
        {
            var    entities = new List <EntitySchema>();
            string filter   = _filter.Text.ToLower();

            foreach (var item in _api.GetSchema().Entities)
            {
                var  entity  = _api.GetEntitySchema(item);
                bool include = true;

                if (filter.Length > 0)
                {
                    include =
                        entity.Name.ToLower().Contains(filter) ||
                        (entity.Comments != null && entity.Comments.ToLower().Contains(filter));
                }

                if (include)
                {
                    entities.Add(entity);
                }
            }

            entities.Sort(EntitySchemaComparer.Instance);

            _entities.BeginUpdate();

            _entities.Items.Clear();

            string header      = null;
            bool   hadSelected = false;

            foreach (var entity in entities)
            {
                var name = new EntityName(entity.Name);
                if (header != name.Header)
                {
                    _entities.Items.Add(new HeaderDrawer(HumanText.ToHuman(name.Header)));
                    header = name.Header;
                }

                _entities.Items.Add(new EntityDrawer(entity));
                if (!hadSelected)
                {
                    hadSelected             = true;
                    _entities.SelectedIndex = _entities.Items.Count - 1;
                }
            }

            _entities.EndUpdate();
        }
Beispiel #2
0
        public int Compare(EntitySchema x, EntitySchema y)
        {
            if (x == null)
            {
                throw new ArgumentNullException(nameof(x));
            }
            if (y == null)
            {
                throw new ArgumentNullException(nameof(y));
            }

            var aName = new EntityName(x.Name);
            var bName = new EntityName(y.Name);

            int result;

            if (aName.Header == null && bName.Header == null)
            {
                result = 0;
            }
            else if (aName.Header == null)
            {
                result = -1;
            }
            else if (bName.Header == null)
            {
                result = 1;
            }
            else
            {
                result = String.Compare(aName.Header, bName.Header, StringComparison.CurrentCultureIgnoreCase);
            }

            if (result != 0)
            {
                return(result);
            }

            return(String.Compare(aName.Name, bName.Name, StringComparison.CurrentCultureIgnoreCase));
        }