private PropertyEditorState DrawPropertyEditor(IEnumerable<UTConfigurableProperty> properties, PropertyEditorState state, DoAdd doAdd, PropertyExists propertyExists, DoDelete doDelete, UObject undoTarget) { EditorGUILayout.BeginVertical (); EditorGUILayout.BeginHorizontal (); state.newPropertyName = EditorGUILayout.TextField ("Name", state.newPropertyName); GUI.enabled = !string.IsNullOrEmpty (state.newPropertyName) && UTContext.IsValidPropertyName (state.newPropertyName) && !propertyExists (state.newPropertyName); if (GUILayout.Button ("Add", UTEditorResources.ExpressionButtonStyle)) { if (undoTarget != null) { CUUndoUtility.RegisterUndo (undoTarget, "Add Property"); } doAdd (state.newPropertyName); state.newPropertyName = ""; } GUI.enabled = true; EditorGUILayout.EndHorizontal (); EditorGUILayout.Space (); scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition); var index = 0; foreach (var property in properties) { EditorGUILayout.BeginVertical(); EditorGUILayout.BeginHorizontal (); if (!property.UseExpression) { if (property.IsPrivate) { property.Value = EditorGUILayout.PasswordField (property.Name, property.Value); } else { property.Value = EditorGUILayout.TextField (property.Name, property.Value); } if (property.SupportsPrivate) { if (GUILayout.Button (property.IsPrivate ? UTEditorResources.PrivateIcon : UTEditorResources.PublicIcon, UTEditorResources.DeleteButtonStyle)) { property.IsPrivate = !property.IsPrivate; GUIUtility.keyboardControl = 0; // make textfield update. } } } else { property.Expression = EditorGUILayout.TextField (property.Name, property.Expression); } if (GUILayout.Button (UTEditorResources.DeleteIcon, UTEditorResources.DeleteButtonStyle)) { if (undoTarget != null) { CUUndoUtility.RegisterUndo (undoTarget, "Remove property"); } doDelete (property); GUIUtility.ExitGUI (); } var oldExpression = property.UseExpression; property.UseExpression = GUILayout.Toggle (oldExpression, UTEditorResources.ExpressionButton, UTEditorResources.ExpressionButtonStyle); if (oldExpression != property.UseExpression) { GUIUtility.keyboardControl = 0; // make textfield update. } EditorGUILayout.EndHorizontal (); if (!property.UseExpression && property.Value.Contains ("$")) { EditorGUILayout.HelpBox (UTEditorResources.VariableWarningText, MessageType.Warning); } EditorGUILayout.EndVertical(); index++; } EditorGUILayout.EndScrollView(); EditorGUILayout.EndVertical (); return state; }
private PropertyEditorState DrawPropertyEditor(IEnumerable <UTConfigurableProperty> properties, PropertyEditorState state, DoAdd doAdd, PropertyExists propertyExists, DoDelete doDelete, UObject undoTarget) { EditorGUILayout.BeginVertical(); EditorGUILayout.BeginHorizontal(); state.newPropertyName = EditorGUILayout.TextField("Name", state.newPropertyName); GUI.enabled = !string.IsNullOrEmpty(state.newPropertyName) && UTContext.IsValidPropertyName(state.newPropertyName) && !propertyExists(state.newPropertyName); if (GUILayout.Button("Add", UTEditorResources.ExpressionButtonStyle)) { if (undoTarget != null) { CUUndoUtility.RegisterUndo(undoTarget, "Add Property"); } doAdd(state.newPropertyName); state.newPropertyName = ""; } GUI.enabled = true; EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition); var index = 0; foreach (var property in properties) { EditorGUILayout.BeginVertical(); EditorGUILayout.BeginHorizontal(); if (!property.UseExpression) { if (property.IsPrivate) { property.Value = EditorGUILayout.PasswordField(property.Name, property.Value); } else { property.Value = EditorGUILayout.TextField(property.Name, property.Value); } if (property.SupportsPrivate) { if (GUILayout.Button(property.IsPrivate ? UTEditorResources.PrivateIcon : UTEditorResources.PublicIcon, UTEditorResources.DeleteButtonStyle)) { property.IsPrivate = !property.IsPrivate; GUIUtility.keyboardControl = 0; // make textfield update. } } } else { property.Expression = EditorGUILayout.TextField(property.Name, property.Expression); } if (GUILayout.Button(UTEditorResources.DeleteIcon, UTEditorResources.DeleteButtonStyle)) { if (undoTarget != null) { CUUndoUtility.RegisterUndo(undoTarget, "Remove property"); } doDelete(property); GUIUtility.ExitGUI(); } var oldExpression = property.UseExpression; property.UseExpression = GUILayout.Toggle(oldExpression, UTEditorResources.ExpressionButton, UTEditorResources.ExpressionButtonStyle); if (oldExpression != property.UseExpression) { GUIUtility.keyboardControl = 0; // make textfield update. } EditorGUILayout.EndHorizontal(); if (!property.UseExpression && property.Value.Contains("$")) { EditorGUILayout.HelpBox(UTEditorResources.VariableWarningText, MessageType.Warning); } EditorGUILayout.EndVertical(); index++; } EditorGUILayout.EndScrollView(); EditorGUILayout.EndVertical(); return(state); }