private void OnTreeSelectionChanged(object sender, EventArgs e) { ElementTreeItem item = Tree.SelectedItem as ElementTreeItem; if (item != null) { ViewModel.SelectedItem = item; } }
public ElementTreeDocument(ElementTreeItem elementTreeItem) { ElementTreeItem = elementTreeItem; Properties = new ObservableCollection <ElementTreeItemProperty>(); Title = ElementTreeItem.ElementType; RefreshPropertiesCommand = ReactiveCommand.CreateFromTask(RefreshProperties); }
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); }
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; } } }