Ejemplo n.º 1
0
        /// <summary>
        /// Browse for field/property
        /// </summary>
        /// <param name="binderEditor"></param>
        /// <param name="field"></param>
        static public void Browse(BinderBaseEditor binderEditor, BindingField field)
        {
            curBinderEditor = binderEditor;
            curField        = field;

            members = binderEditor.binder.GetMembers(MemberTypes.Field, MemberTypes.Property);

            FilterPopup.Browse(members, OnMemberSelected);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Browse for field/property
        /// </summary>
        /// <param name="binderEditor"></param>
        /// <param name="field"></param>
        public static void Browse(BinderBaseEditor binderEditor, BindingField field, int selectedIndex, bool boldName = false, bool withReturnType = false, bool withDeclaringType = false, bool asPath = false)
        {
            curBinderEditor = binderEditor;
            curField        = field;

            dataMembers = binderEditor.binder.GetMembers(false, false, false, false, MemberTypes.Field, MemberTypes.Property);
            viewMembers = binderEditor.binder.GetMembers(boldName, withReturnType, withDeclaringType, asPath, MemberTypes.Field, MemberTypes.Property);

            FilterPopup.Browse(selectedIndex, dataMembers, viewMembers, OnMemberSelected);
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Unsubscribe the on changed event
 /// </summary>
 /// <param name="_field"></param>
 /// <param name="onChanged"></param>
 protected void UnSubscribeOnChangedEvent(BindingField _field, Action <object> onChanged)
 {
     _field.UpdateAction -= onChanged;
     UnRegisterViewModel(_field.member, onChanged);
 }
Ejemplo n.º 4
0
        public void DrawBindingField(BindingField field)
        {
            GUILayout.BeginVertical();
            GUILayout.BeginHorizontal();

            EditorGUILayout.PrefixLabel(new GUIContent(field.label));
            var curMemberName = field.member;

            if (string.IsNullOrEmpty(curMemberName))
            {
                curMemberName = BindingDefine.SELECT_MEMBER;
            }

            var viewMembers = this.binder.GetMembers(false, true, false, false, MemberTypes.Field, MemberTypes.Property);
            var dataMembers = this.binder.GetMembers(false, false, false, false, MemberTypes.Field, MemberTypes.Property);

            if (dataMembers == null)
            {
                EditorGUILayout.LabelField("<color=red>No target context found!</color>", EditorGUIHelper.RichText());
                GUILayout.EndHorizontal();
            }
            else
            {
                ArrayUtility.Insert(ref dataMembers, 0, "<None>");
                ArrayUtility.Insert(ref viewMembers, 0, "<None>");

                var selectedIndex = 0;

                for (var i = 0; i < dataMembers.Length; i++)
                {
                    if (curMemberName == dataMembers[i])
                    {
                        selectedIndex = i;
                        break;
                    }
                }

                GUILayout.Space(-7);
                EditorGUILayout.BeginVertical();
                GUILayout.Space(5);
                var newSelectedIndex = EditorGUILayout.Popup(selectedIndex, viewMembers);
                if (newSelectedIndex != selectedIndex)
                {
                    Undo.RecordObject(this.target, "Select Binder Member");
                    selectedIndex = newSelectedIndex;
                    field.member  = dataMembers[selectedIndex];
                    Apply();
                }

                EditorGUILayout.EndVertical();

                if (EditorGUIHelper.QuickPickerButton())
                {
                    ContextBrowser.Browse(this, field, selectedIndex, true, true, false);
                }

                GUILayout.EndHorizontal();

                MemberInfo curMember = this.binder.GetMemberInfo(dataMembers[selectedIndex], MemberTypes.Property, MemberTypes.Field);
                if (curMember != null)
                {
                    var attributes = curMember.GetCustomAttributes(typeof(UIManPropertyAttribute), false);
                    if (attributes == null || attributes.Length == 0)
                    {
                        GUILayout.BeginHorizontal();
                        EditorGUILayout.PrefixLabel(" ");
                        GUILayout.Label("<color=red>None observable field!</color>", EditorGUIHelper.RichText());
                        GUILayout.EndHorizontal();
                    }
                }
            }

            GUILayout.EndVertical();
        }
Ejemplo n.º 5
0
        /// <summary>
        /// All binder must implement this method to unsubsribe onchanged event when object is disable
        /// </summary>
        //public  abstract void OnDisable ();

        /// <summary>
        /// Subscribe the on changed event
        /// </summary>
        /// <param name="field">_binding info.</param>
        /// <param name="onChanged">On changed.</param>
        protected void SubscribeOnChangedEvent(BindingField field, Action <object> onChanged)
        {
            field.UpdateAction += onChanged;
            RegisterViewModel(field.member, onChanged);
        }
Ejemplo n.º 6
0
        public void DrawBindingField(BindingField field)
        {
            GUILayout.BeginVertical();
            GUILayout.BeginHorizontal();

            EditorGUILayout.PrefixLabel(new GUIContent(field.label));
            string curMemberName = field.member;

            if (string.IsNullOrEmpty(curMemberName))
            {
                curMemberName = BindingDefine.SELECT_MEMBER;
            }

            string[] members = binder.GetMembers(MemberTypes.Field, MemberTypes.Property);
            if (members == null)
            {
                EditorGUILayout.LabelField("<color=red>No target context found!</color>", EditorGUIHelper.RichText());
                GUILayout.EndHorizontal();
            }
            else
            {
                ArrayUtility.Insert(ref members, 0, "Null");

                int selectedIndex = 0;
                for (int i = 0; i < members.Length; i++)
                {
                    if (curMemberName == members [i])
                    {
                        selectedIndex = i;
                        break;
                    }
                }

                GUILayout.Space(-7);
                EditorGUILayout.BeginVertical();
                GUILayout.Space(5);
                int newSelectedIndex = EditorGUILayout.Popup(selectedIndex, members);
                if (newSelectedIndex != selectedIndex)
                {
                    selectedIndex = newSelectedIndex;
                    field.member  = members [selectedIndex];
                    Apply();
                }

                EditorGUILayout.EndVertical();

                if (EditorGUIHelper.QuickPickerButton())
                {
                    ContextBrowser.Browse(this, field);
                }

                GUILayout.EndHorizontal();

                MemberInfo curMember = binder.GetMemberInfo(members [selectedIndex], MemberTypes.Property, MemberTypes.Field);
                if (curMember != null)
                {
                    object[] attributes = curMember.GetCustomAttributes(typeof(UIManProperty), false);
                    if (attributes == null || attributes.Length == 0)
                    {
                        GUILayout.BeginHorizontal();
                        EditorGUILayout.PrefixLabel(" ");
                        GUILayout.Label("<color=red>None observable field!</color>", EditorGUIHelper.RichText());
                        GUILayout.EndHorizontal();
                    }
                }
            }

            GUILayout.EndVertical();
        }