Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }