示例#1
0
        private void OnTreeSelectionChanged(object sender, EventArgs e)
        {
            ElementTreeItem item = Tree.SelectedItem as ElementTreeItem;

            if (item != null)
            {
                ViewModel.SelectedItem = item;
            }
        }
示例#2
0
        public ElementTreeDocument(ElementTreeItem elementTreeItem)
        {
            ElementTreeItem = elementTreeItem;
            Properties      = new ObservableCollection <ElementTreeItemProperty>();

            Title = ElementTreeItem.ElementType;

            RefreshPropertiesCommand = ReactiveCommand.CreateFromTask(RefreshProperties);
        }
示例#3
0
    protected override TreeViewItem BuildRoot()
    {
        Stack <ElementTreeItem> stack = StackPool <ElementTreeItem> .Get();

        // todo -- maybe pool tree items

        TreeViewItem root = new TreeViewItem(-9999, -1);

        foreach (UIView uiView in views)
        {
            if (uiView.RootElement == null)
            {
                continue;
            }
            if (uiView.RootElement.isDisabled && !showDisabled)
            {
                continue;
            }

            ElementTreeItem firstChild = new ElementTreeItem(uiView.RootElement);
            firstChild.displayName = uiView.RootElement.ToString();
            stack.Push(firstChild);

            while (stack.Count > 0)
            {
                ElementTreeItem current = stack.Pop();
                if (current.element.isDisabled && !showDisabled)
                {
                    continue;
                }

                UIElement element = current.element;

                List <UIElement> ownChildren = element.GetChildren();

                if (ownChildren.Count == 0)
                {
                    ListPool <UIElement> .Release(ref ownChildren);

                    continue;
                }

                for (int i = 0; i < ownChildren.Count; i++)
                {
                    ElementTreeItem childItem = new ElementTreeItem(ownChildren[i]);
                    if (childItem.element.isDisabled && !showDisabled)
                    {
                        continue;
                    }
                    childItem.displayName = ownChildren[i].ToString();
                    current.AddChild(childItem);
                    stack.Push(childItem);
                }
            }

            root.AddChild(firstChild);
        }

        root.displayName = "ROOT";
        SetupDepthsFromParentsAndChildren(root);
        needsReload = false;
        if (root.children == null)
        {
            root.children = new List <TreeViewItem>();
        }
        return(root);
    }
示例#4
0
    protected override void RowGUI(RowGUIArgs args)
    {
        ElementTreeItem item      = (ElementTreeItem)args.item;
        GUIStyleState   textStyle = s_ElementNameStyle.normal;

        bool isTemplateRoot = (item.element.flags & UIElementFlags.TemplateRoot) != 0;

        Color mainColor = isTemplateRoot
            ? UIForiaEditorTheme.mainColorTemplateRoot
            : UIForiaEditorTheme.mainColorRegularChild;

        if (item.element.style.LayoutBehavior == LayoutBehavior.TranscludeChildren)
        {
            mainColor = UIForiaEditorTheme.mainColorChildrenElement;
        }

        textStyle.textColor = AdjustColor(mainColor, item.element);

        float indent   = GetContentIndent(args.item);
        float rowWidth = args.rowRect.width;

        args.rowRect.x     += indent;
        args.rowRect.width -= indent;
        s_Content.text      = item.element.GetDisplayName();

        if (showLayoutStats)
        {
            s_Content.text += $"w: {item.element.layoutBox.cacheHit}, {item.element.layoutBox.cacheMiss}";
        }

        if (item.element.isEnabled && item.element.renderBox != null)
        {
            if (item.element.renderBox.overflowX != Overflow.Visible || item.element.renderBox.overflowY != Overflow.Visible)
            {
                s_Content.text += " [Clipper]";
            }
        }

        if ((item.element.flags & UIElementFlags.DebugLayout) != 0)
        {
            s_Content.text = "{Debug Layout} " + s_Content.text;
        }

        Vector2 v = s_ElementNameStyle.CalcSize(s_Content);
        Rect    r = new Rect(args.rowRect);

        GUI.Label(args.rowRect, s_Content, s_ElementNameStyle);
        r.x     += v.x + 5f;
        r.width -= v.x + 5f;

        List <string> names = ListPool <string> .Get();

        item.element.style.GetStyleNameList(names);
        string styleName = string.Empty;

        for (int i = 0; i < names.Count; i++)
        {
            styleName += names[i] + " ";
        }

        ListPool <string> .Release(ref names);

        if (styleName.Length > 0)
        {
            styleName = '[' + styleName.TrimEnd() + "] ";
        }

        s_Content.text = styleName; // + "(children: " + box.children.Count + ", id: " + item.element.id + ")";

        if (showChildrenAndId)
        {
            s_Content.text += "(id: " + item.element?.id + ")";
        }

        textStyle.textColor = AdjustColor(UIForiaEditorTheme.elementStyleNormal, item.element);

        GUI.Label(r, s_Content, s_ElementNameStyle);

        v        = s_ElementNameStyle.CalcSize(s_Content);
        r.x     += v.x + 5f;
        r.width -= v.x + 5f;

        r = DrawAdditionalInfo(item.element, r);

        if (!isTemplateRoot)
        {
            return;
        }

        ViewState viewState;

        m_ViewState.TryGetValue(item.element.id, out viewState);

        r.x            = rowWidth - 16;
        r.width        = 16;
        s_Content.text = viewState.showTemplateContents ? "+" : "-";
        GUI.Label(r, s_Content);

        if (Event.current.type == EventType.MouseDown)
        {
            if (r.Contains(Event.current.mousePosition))
            {
                viewState.showTemplateContents = !viewState.showTemplateContents;
                m_ViewState[item.element.id]   = viewState;
                needsReload = true;
            }
        }
    }