Example #1
0
        private void OnGUI()
        {
            if (_style == null)
            {
                _style           = new GUIStyle(GUI.skin.button);
                _style.alignment = TextAnchor.MiddleLeft;
            }

            // The header.
            GUILayout.Label("Select a Type", EditorStyles.boldLabel);

            // Search text field.
            _searchString = GUILayout.TextField(_searchString ?? "");

            var i = 0;

            foreach (var type in _types)
            {
                // Skip non-matches.
                if (!type.Value.ToLower().Contains(_searchString.ToLower()))
                {
                    continue;
                }

                var simplerName = GetSimplerTypeName(type.Value);

                if (GUILayout.Button(simplerName, _style))
                {
                    // Create the new Syringe type wrapper.
                    var selectedType = new Syringe(Type.GetType(type.Key));

                    // Replace the value in the serialized property.
                    if (_arrayIndex > -1)
                    {
                        ((Syringe[])_fieldInfo.GetValue(_serializedProperty.serializedObject.targetObject))[_arrayIndex] = selectedType;
                    }
                    else if (_listIndex > -1)
                    {
                        ((List <Syringe>)_fieldInfo.GetValue(_serializedProperty.serializedObject.targetObject))[_listIndex] = selectedType;
                    }
                    else
                    {
                        _fieldInfo.SetValue(_serializedProperty.serializedObject.targetObject, selectedType);
                    }

                    // Mark the Target as Dirty
                    SyringePropertyDrawer.MarkObjectAsDirty(_serializedProperty.serializedObject.targetObject);

                    // Close the SyringeEditorWindow.
                    Close();
                }

                // Limit results.
                if (i++ > MaxResults)
                {
                    break;
                }
            }
        }