Exemplo n.º 1
0
        public VariableCompleter(VariableEditingHandler handler)
            : base(handler.variableField != null ? handler.variableField.textField : null)
        {
            m_Handler = handler;
            getFilterFromTextCallback = (text) => text != null?text.TrimStart('-') : null;

            dataSourceCallback = () =>
            {
                return(StyleVariableUtilities.GetAllAvailableVariables(handler.inspector.currentVisualElement, GetCompatibleStyleValueTypes(handler), handler.inspector.document.fileSettings.editorExtensionMode));
            };
            makeItem = () =>
            {
                var item = new VisualElement();

                item.AddToClassList(s_ItemUssClassName);
                var nameLabel       = new Label();
                var editorOnlyLabel = new Label(BuilderConstants.EditorOnlyTag);
                nameLabel.AddToClassList(s_ItemNameLabelUssClassName);
                nameLabel.name = s_ItemNameLabelName;
#if !UNITY_2019_4
                // Cannot use USS because no way to do version checks in USS.
                // This is not available in 2019.4.
                nameLabel.style.textOverflow = TextOverflow.Ellipsis;
#endif
                editorOnlyLabel.AddToClassList(s_ItemEditorOnlyLabelUssClassName);
                editorOnlyLabel.AddToClassList("unity-builder-tag-pill");
                editorOnlyLabel.name = s_ItemEditorOnlyLabelName;
                item.Add(nameLabel);
                item.Add(editorOnlyLabel);
                return(item);
            };
            bindItem = (e, i) =>
            {
                var res = results[i];

                e.Q <Label>(s_ItemNameLabelName).text = res.name;
                e.Q <Label>(s_ItemEditorOnlyLabelName).EnableInClassList(BuilderConstants.HiddenStyleClassName, !res.isEditorVar);
            };

            m_DetailsView = new VariableInfoView();
            m_DetailsView.AddToClassList(BuilderConstants.HiddenStyleClassName);
            detailsContent     = m_DetailsView;
            onSelectionChange += data =>
            {
                m_DetailsView.SetInfo(data);
                if (data != null)
                {
                    m_DetailsView.RemoveFromClassList(BuilderConstants.HiddenStyleClassName);
                }
                else
                {
                    m_DetailsView.AddToClassList(BuilderConstants.HiddenStyleClassName);
                }
            };

            matcherCallback         = Matcher;
            getTextFromDataCallback = GetVarName;
        }
        static void ShowPopup(VariableEditingHandler handler)
        {
            if (handler.m_Builder == null || handler.m_Inspector == null || handler.editingEnabled)
            {
                return;
            }

            string varName = GetBoundVariableName(handler);

            VariableInfo varInfo = null;

            if (!string.IsNullOrEmpty(varName))
            {
                varInfo = StyleVariableUtilities.FindVariable(handler.m_Inspector.currentVisualElement, varName, handler.inspector.document.fileSettings.editorExtensionMode);

                if (varInfo == null)
                {
                    varInfo = new VariableInfo {
                        name = varName
                    }
                }
                ;
            }

            if (handler.variableInfoTooltip == null)
            {
                handler.variableInfoTooltip = handler.m_Builder.rootVisualElement.GetProperty(BuilderConstants.ElementLinkedVariableTooltipVEPropertyName) as VariableInfoTooltip;

                if (handler.variableInfoTooltip == null)
                {
                    handler.variableInfoTooltip = new VariableInfoTooltip();
                    handler.m_Builder.rootVisualElement.SetProperty(
                        BuilderConstants.ElementLinkedVariableTooltipVEPropertyName, handler.variableInfoTooltip);
                    handler.m_Builder.rootVisualElement.Add(handler.variableInfoTooltip);
                    handler.variableInfoTooltip.onHide += () => OnPopupClosed(handler.variableInfoTooltip);
                }
            }

            handler.targetField.AddToClassList(BuilderConstants.InspectorLocalStyleVariableEditingClassName);
            if (handler.editingEnabled)
            {
                handler.targetField.RemoveFromClassList(BuilderConstants.ReadOnlyStyleClassName);
            }
            else
            {
                handler.targetField.AddToClassList(BuilderConstants.ReadOnlyStyleClassName);
            }
            handler.variableInfoTooltip.Show(handler, varInfo);
            handler.m_ScheduledShowPopup = null;
        }
        static void ShowPopup(VariableEditingHandler handler)
        {
            if (handler.m_Builder == null || handler.m_Inspector == null)
            {
                return;
            }

            string varName = GetBoundVariableName(handler);

            StyleSheet           varStyleSheetOrigin     = null;
            StyleComplexSelector varSourceSelectorOrigin = null;

            if (!string.IsNullOrEmpty(varName))
            {
                StyleVariableUtilities.FindVariableOrigin(handler.m_Inspector.currentVisualElement, varName, out varStyleSheetOrigin, out varSourceSelectorOrigin);
            }

            if (handler.variableInfoTooltip == null)
            {
                handler.variableInfoTooltip = handler.m_Builder.rootVisualElement.GetProperty(BuilderConstants.ElementLinkedVariableTooltipVEPropertyName) as VariableInfoTooltip;

                if (handler.variableInfoTooltip == null)
                {
                    handler.variableInfoTooltip = new VariableInfoTooltip();
                    handler.m_Builder.rootVisualElement.SetProperty(
                        BuilderConstants.ElementLinkedVariableTooltipVEPropertyName, handler.variableInfoTooltip);
                    handler.m_Builder.rootVisualElement.Add(handler.variableInfoTooltip);
                    handler.variableInfoTooltip.onHide += () => OnPopupClosed(handler.variableInfoTooltip);
                }
            }

            handler.targetField.AddToClassList(BuilderConstants.InspectorLocalStyleVariableEditingClassName);
            if (handler.editingEnabled)
            {
                handler.targetField.RemoveFromClassList(BuilderConstants.ReadOnlyStyleClassName);
            }
            else
            {
                handler.targetField.AddToClassList(BuilderConstants.ReadOnlyStyleClassName);
            }
            handler.variableInfoTooltip.Show(handler, varName, varStyleSheetOrigin, varSourceSelectorOrigin);
            handler.m_ScheduledShowPopup = null;
        }