Пример #1
0
            private void UpdateResultCache(Framework.IBaseObject instance, ValidationResult result)
            {
                var previous = instance.PreviousResult(Info.Name);

                if (previous != null && !previous.Equals(result))
                {
                    ValidatorWindow.GetInstance().RemoveValidation(previous);
                }

                instance.UpdateValidation(Info.Name, result);
            }
        private void DrawField(ReflectionInfo info, SerializedProperty property)
        {
            if (!info.IsVisible)
            {
                return;
            }

            var result = info.CheckValidate(target, property);

            if (!result)
            {
                ValidatorWindow.GetInstance().RegisterValidation(result, target);
                GUILayout.BeginVertical(EditorStyles.helpBox);
            }

            if (!property.isArray || property.type == "string")
            {
                // Somehow check if this type can be drawn other way
                // Is it defined with attribute?
                EditorGUILayout.PropertyField(property, true);
            }
            else
            {
                Pair <bool, ReorderableList> list = ReorderableDrawer.GetList(property);

                if (property.arrayElementType.Equals(typeof(GenericParameter).Name) &&
                    list.First)
                {
                    list.Second.drawElementCallback      += GenericParameterDrawer;
                    list.Second.onAddDropdownCallback    += GenericParameterAdd;
                    list.Second.getElementHeightCallback += (e, i) => 16;
                }

                list.Second.DoLayoutList();
            }

            if (!result)
            {
                GUILayout.BeginVertical();
                using (new EditorGUILayout.HorizontalScope(EditorStyles.helpBox))
                {
                    GUILayout.Box(SpaceEditorStyles.GetValidationIcon(result.Status), GUIStyle.none, GUILayout.Width(24));
                    GUILayout.Label(result.Message, EditorStyles.wordWrappedMiniLabel);
                }
                GUILayout.EndVertical();
                GUILayout.EndVertical();
            }
        }
Пример #3
0
        private void DrawField(ReflectionInfo info, SerializedProperty property)
        {
            if (!info.IsVisible)
            {
                return;
            }

            var result = info.CheckValidate(target, property);

            if (!result)
            {
                ValidatorWindow.GetInstance().RegisterValidation(result, target);
                GUILayout.BeginVertical(EditorStyles.helpBox);
            }

            if (!property.isArray || property.type == "string")
            {
                // Somehow check if this type can be drawn other way
                // Is it defined with attribute?
                EditorGUILayout.PropertyField(property, true);
            }
            else
            {
                ReorderableList list = ReorderableDrawer.GetList(property);
                list.DoLayoutList();
            }

            if (!result)
            {
                GUILayout.BeginVertical();
                using (new EditorGUILayout.HorizontalScope(EditorStyles.helpBox))
                {
                    GUILayout.Box(SpaceEditorStyles.GetValidationIcon(result.Status), GUIStyle.none, GUILayout.Width(24));
                    GUILayout.Label(result.Message, EditorStyles.wordWrappedMiniLabel);
                }
                GUILayout.EndVertical();
                GUILayout.EndVertical();
            }
        }
Пример #4
0
 public ValidatorPresenter(ValidatorWindow view)
 {
     View = view;
 }
        private void DrawField(ReflectionInfo info, SerializedProperty property)
        {
            if (!info.IsVisible)
            {
                return;
            }

            var result = info.CheckValidate(target, property);

            if (!result)
            {
                ValidatorWindow.GetInstance().RegisterValidation(result, target);

                var rect             = GUILayoutUtility.GetLastRect();
                var spacedPadding    = (info.Spaced ? 24 : 0);
                var notSpacedPadding = (info.Spaced ? 0 : 0);
                rect.y      += rect.height + spacedPadding + notSpacedPadding;
                rect.height  = EditorGUI.GetPropertyHeight(property) - spacedPadding;
                rect.y      += 1;
                rect.width  += rect.x + 4;
                rect.x       = 0;
                rect.height += 2;
                GUI.color    = new Color(0.6f, 0f, 0f, 0.6f);
                GUI.Box(rect, GUIContent.none, SpaceEditorStyles.LightBox);
                GUI.color = Color.white;
                GUILayout.BeginVertical();
            }

            if (!property.isArray || property.type == "string")
            {
                // Somehow check if this type can be drawn other way
                // Is it defined with attribute?
                EditorGUILayout.PropertyField(property, true);
            }
            else
            {
                var(initialize, list) = ReorderableDrawer.GetList(property);
                if (initialize)
                {
                    if (property.arrayElementType.Equals(typeof(Variant).Name))
                    {
                        list.drawElementCallback      += GenericParameterDrawer;
                        list.onAddDropdownCallback    += GenericParameterAdd;
                        list.getElementHeightCallback += (e, i) => 16;
                    }
                    else if (property.arrayElementType.Equals(typeof(Framework.Parameter).Name))
                    {
                        list.drawElementCallback      += ParameterDraw;
                        list.onAddDropdownCallback    += ParameterAdd;
                        list.getElementHeightCallback += (e, i) => 16;
                    }
                }

                list.DoLayoutList();
            }

            if (!result)
            {
                GUILayout.BeginVertical();
                using (new EditorGUILayout.HorizontalScope(EditorStyles.helpBox))
                {
                    GUILayout.Box(SpaceEditorStyles.GetValidationIcon(result.Status), GUIStyle.none, GUILayout.Width(24));
                    GUILayout.Label(result.Message, EditorStyles.wordWrappedMiniLabel);
                }
                GUILayout.EndVertical();
                GUILayout.EndVertical();
            }
        }