public virtual VisualElement Bind(VisualElement element, SearcherItem item, ItemExpanderState expanderState, string query) { var indent = element.Q <VisualElement>("itemIndent"); indent.style.width = item.Depth * k_IndentDepthFactor; var expander = element.Q <VisualElement>("itemChildExpander"); var icon = expander.Query("expanderIcon").First(); icon.ClearClassList(); switch (expanderState) { case ItemExpanderState.Expanded: icon.AddToClassList("Expanded"); break; case ItemExpanderState.Collapsed: icon.AddToClassList("Collapsed"); break; } var nameLabelsContainer = element.Q <VisualElement>("labelsContainer"); nameLabelsContainer.Clear(); var iconElement = element.Q <VisualElement>("itemIconVisualElement"); iconElement.style.backgroundImage = item.Icon; if (item.Icon == null && item.CollapseEmptyIcon) { iconElement.style.display = DisplayStyle.None; } else { iconElement.style.display = DisplayStyle.Flex; } if (string.IsNullOrWhiteSpace(query)) { nameLabelsContainer.Add(new Label(item.Name)); } else { SearcherHighlighter.HighlightTextBasedOnQuery(nameLabelsContainer, item.Name, query); } element.userData = item; element.name = k_EntryName; return(expander); }
public virtual VisualElement Bind(VisualElement element, SearcherItem item, ItemExpanderState expanderState, string query) { var indent = element.Q <VisualElement>("itemIndent"); indent.style.width = item.Depth * k_IndentDepthFactor; var expander = element.Q <VisualElement>("itemChildExpander"); var icon = expander.Query("expanderIcon").First(); icon.ClearClassList(); switch (expanderState) { case ItemExpanderState.Expanded: icon.AddToClassList("Expanded"); break; case ItemExpanderState.Collapsed: icon.AddToClassList("Collapsed"); break; } var nameLabelsContainer = element.Q <VisualElement>("labelsContainer"); nameLabelsContainer.Clear(); if (string.IsNullOrWhiteSpace(query)) { if (string.IsNullOrEmpty(item.Help)) { nameLabelsContainer.Add(new Label(item.Name)); } else { var name = new Label(item.Name); var help = new Label(" (" + item.Help + ")"); help.style.opacity = .5f; nameLabelsContainer.Add(name); nameLabelsContainer.Add(help); } } else { SearcherHighlighter.HighlightTextBasedOnQuery(nameLabelsContainer, item.Name, query); } element.userData = item; element.name = k_EntryName; return(expander); }
public virtual VisualElement Bind(VisualElement element, SearcherItem item, ItemExpanderState expanderState, string query) { var indent = element.Q <VisualElement>("itemIndent"); indent.style.width = item.Depth * k_IndentDepthFactor; var expander = element.Q <VisualElement>("itemChildExpander"); var icon = expander.Query("expanderIcon").First(); icon.ClearClassList(); switch (expanderState) { case ItemExpanderState.Expanded: icon.AddToClassList("Expanded"); break; case ItemExpanderState.Collapsed: icon.AddToClassList("Collapsed"); break; } var nameLabelsContainer = element.Q <VisualElement>("labelsContainer"); nameLabelsContainer.Clear(); var iconElement = element.Q <VisualElement>("itemIconVisualElement"); iconElement.style.backgroundImage = item.Icon; if (item.Icon == null && item.CollapseEmptyIcon) { iconElement.style.display = DisplayStyle.None; } else { iconElement.style.display = DisplayStyle.Flex; } nameLabelsContainer.Add(new Label(item.Name)); // TODO VladN: support highlight for parts of the string? // Highlight was disabled because it was inconsistent with fuzzy search // and with searching allowing to match item path (e.g. 'Debug/Log message' will be matched by DbgLM) // We need to figure out if there's a good way to highlight results. // SearcherHighlighter.HighlightTextIndices(nameLabelsContainer, item.Name, item.lastMatchedIndices); element.userData = item; element.name = k_EntryName; return(expander); }
public override VisualElement Bind(VisualElement element, SearcherItem item, ItemExpanderState expanderState, string query) { var propItem = (PropertySearcherItem)item; VisualElement expander = base.Bind(element, item, expanderState, query); PropertyElement propElt = (PropertyElement)element; propElt.Item = propItem; propItem.Element = propElt; Toggle toggle = propElt.Toggle; // SetValueWithoutNotify sets the value, but not the pseudostate toggle.SetValueWithoutNotify(propItem.Enabled); // .value= will set the pseudo state, but skip the notify and the markDirtyRepaint, as newValue == oldValue toggle.value = (propItem.Enabled); // still needed toggle.MarkDirtyRepaint(); return(expander); }