TreeViewModel.MoveDown C# (CSharp) Method

MoveDown() public method

public MoveDown ( ) : void
return void
    public void MoveDown()
    {
        var ndx = SelectedIndex + 1;
        while (ndx < TreeData.Count)
        {
            if (TreeData[ndx].Visible)
            {
                SelectedIndex = ndx;
                return;
            }
            ndx++;
        }

        ndx = 0;
        while (ndx <= SelectedIndex)
        {
            if (TreeData[ndx].Visible)
            {
                SelectedIndex = ndx;
                return;
            }
            ndx++;
        }
    }

Usage Example

Exemplo n.º 1
0
    public void DrawTreeView(Rect bounds, TreeViewModel viewModel, Action <Vector2, IItem> itemClicked,
                             Action <Vector2, IItem> itemRightClicked = null)
    {
        var boundY = bounds.height;

        if (Event.current != null && Event.current.isKey && Event.current.rawType == EventType.KeyUp)
        {
            switch (Event.current.keyCode)
            {
            case KeyCode.UpArrow:
                viewModel.MoveUp();
                break;

            case KeyCode.DownArrow:
                viewModel.MoveDown();
                break;

            case KeyCode.RightArrow:
            {
                var selectedContainer = viewModel.SelectedData as ITreeItem;
                if (selectedContainer != null)
                {
                    selectedContainer.Expanded = true;
                    viewModel.IsDirty          = true;
                }
            }
            break;

            case KeyCode.LeftArrow:
            {
                var selectedContainer = viewModel.SelectedData as ITreeItem;
                if (selectedContainer != null)
                {
                    selectedContainer.Expanded = false;
                    viewModel.IsDirty          = true;
                }
            }
            break;

            case KeyCode.Return:
                if (viewModel != null)
                {
                    viewModel.InvokeSubmit();
                }
                break;

            default:
                break;
            }
        }
        //   PlatformDrawer.DrawLabel(new Rect().WithSize(100,100).InnerAlignWithBottomRight(bounds),"Total height: {0}, Total Items: {1}");
        var dirty    = false;
        var position = bounds;
        var usedRect = position.WithWidth(Math.Max(bounds.width, PlatformDrawer.CalculateTextSize(viewModel.LargestString, CachedStyles.ListItemTitleStyle).x + 5 * viewModel.MaxIdentLevel)).Pad(0, 0, 15, 0).WithHeight(ItemHeight * viewModel.TreeData.Count(s => s.Visible));

        PlatformDrawer.DrawStretchBox(position.PadSides(-1), CachedStyles.WizardListItemBoxStyle, 10);



        viewModel.Scroll = GUI.BeginScrollView(position, viewModel.Scroll, usedRect);

        var  itemTemplateRect = bounds.WithHeight(ItemHeight);
        bool hasItems         = false;

        foreach (var treeViewItem in viewModel.TreeData)
        {
            if (!treeViewItem.Visible)
            {
                continue;
            }
            hasItems = true;
            var data = treeViewItem.Data;

            var treeData = data as ITreeItem;

            var itemRect = itemTemplateRect.Pad(5 * treeViewItem.Indent, 0, 5 * treeViewItem.Indent, 0);

            var localItemY = itemRect.Translate(0, -position.yMin).y;
            if (localItemY > (viewModel.Scroll.y + position.height))
            {
                break;
            }
            var imageRect = new Rect().WithSize(12, 12)
                            .Align(itemRect)
                            .AlignHorisonallyByCenter(itemRect)
                            .Translate(5, 0);

            var labelRect =
                itemRect.WithWidth(
                    PlatformDrawer.CalculateTextSize(treeViewItem.Data.Title, CachedStyles.BreadcrumbTitleStyle).x)
                .Translate(25, 0);

            if (treeViewItem == viewModel.ScrollTarget)
            {
                viewModel.Scroll = new Vector2(0, localItemY - ItemHeight * 5);
                viewModel.ScrollToItem(null);
            }

            if (treeViewItem.Selected)
            {
                PlatformDrawer.DrawStretchBox(itemRect, CachedStyles.WizardSubBoxStyle, 14);
            }

            PlatformDrawer.DrawLabel(labelRect, treeViewItem.Data.Title, CachedStyles.ListItemTitleStyle);
            PlatformDrawer.DrawImage(imageRect, treeViewItem.Icon, true);
            if (treeViewItem.ColorMark.HasValue)
            {
                var colorMarkRect = new Rect().WithSize(8, 8).InnerAlignWithCenterRight(itemRect).Translate(-24, 0);
                PlatformDrawer.DrawRect(colorMarkRect, treeViewItem.ColorMark.Value);
            }

            if (viewModel.ShowToggle)
            {
                EditorGUI.BeginChangeCheck();
                var toggleRect = new Rect().WithSize(16, 16).InnerAlignWithUpperRight(itemRect).Translate(-50, 0);
                GUI.enabled = viewModel.AllowManualToggle;
                var toggle = GUI.Toggle(toggleRect, treeViewItem.IsChecked, "");
                GUI.enabled = true;

                if (treeViewItem.IsChecked != toggle)
                {
                    viewModel.ToggleItem(treeViewItem, toggle);
                    return;
                }
            }

            var item1 = treeViewItem;
            PlatformDrawer.DoButton(itemRect.Translate(25, 0), "", CachedStyles.ClearItemStyle,
                                    m =>
            {
                viewModel.SelectedIndex = item1.Index;
                //TODO PUBLISH EVENT
                if (itemClicked != null)
                {
                    itemClicked(m, item1.Data);
                }
            }, m => { if (itemRightClicked != null)
                      {
                          itemRightClicked(m, item1.Data);
                      }
                });



            if (treeData != null)
            {
                PlatformDrawer.DoButton(imageRect, "", CachedStyles.ClearItemStyle,
                                        () =>
                {
                    treeData.Expanded = !treeData.Expanded;
                    dirty             = true;
                });
            }

            if (treeViewItem.Highlighted)
            {
                PlatformDrawer.DrawLine(new[]
                {
                    new Vector3(labelRect.x, itemRect.yMax - 1, 0),
                    new Vector3(labelRect.x + 75, itemRect.yMax - 1, 0)
                }, Color.cyan);
            }

            itemTemplateRect = itemTemplateRect.Below(itemTemplateRect);
        }



        GUI.EndScrollView();

        if (!hasItems)
        {
            var textRect   = bounds;
            var cacheColor = GUI.color;
            GUI.color = new Color(GUI.color.r, GUI.color.g, GUI.color.b, 0.4f);
            PlatformDrawer.DrawLabel(textRect, "No Items Found", CachedStyles.WizardSubBoxTitleStyle, DrawingAlignment.MiddleCenter);
            GUI.color = cacheColor;
            return;
        }

        if (dirty)
        {
            viewModel.IsDirty = true;
        }
    }
All Usage Examples Of TreeViewModel::MoveDown