コード例 #1
0
        public void ReCreateItems()
        {
            if (FilteredItems.Count == 0)
            {
                Filter();
            }
            RemoveChild(Layout);

            if (Items.Count == 0)
            {
                ScrollArea.RemoveChild(Layout);
                Layout = new GridLayout(GUI, ScrollArea, 1, 1);
                Label label = new Label(GUI, Layout, NoItemsMessage, GUI.DefaultFont);

                Layout.SetComponentPosition(label, 0, 0, 1, 1);

                return;
            }

            int rows = Math.Max(FilteredItems.Count, 6);

            ScrollArea.RemoveChild(Layout);

            Layout = new GridLayout(GUI, ScrollArea, rows + 1, Columns.Count)
            {
                LocalBounds    = new Rectangle(-ScrollArea.ScrollX, -ScrollArea.ScrollY, Math.Max(ScrollArea.LocalBounds.Width - 64, 200), rows * 40),
                HeightSizeMode = SizeMode.Fixed
            };

            for (int i = 0; i < FilteredItems.Count; i++)
            {
                GItem currentResource = FilteredItems[i];
                int   j = 0;
                foreach (Column column in Columns)
                {
                    GUIComponent item = CreateItem(column, FilteredItems[i], i + 1, j);
                    item.OnClicked += () => ItemClicked(currentResource);
                    int row = i;
                    item.OnHover += () => HighlightRow(row + 1);
                    j++;
                }
            }

            Layout.UpdateSizeRecursive();
        }