| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 | 
							- using UnityEditor;
 
- using UnityEngine;
 
- namespace XNodeEditor {
 
-     /// <summary> Utility for renaming assets </summary>
 
-     public class RenamePopup : EditorWindow {
 
-         private const string inputControlName = "nameInput";
 
-         public static RenamePopup current { get; private set; }
 
-         public Object target;
 
-         public string input;
 
-         private bool firstFrame = true;
 
-         /// <summary> Show a rename popup for an asset at mouse position. Will trigger reimport of the asset on apply.
 
-         public static RenamePopup Show(Object target, float width = 200) {
 
-             RenamePopup window = EditorWindow.GetWindow<RenamePopup>(true, "Rename " + target.name, true);
 
-             if (current != null) current.Close();
 
-             current = window;
 
-             window.target = target;
 
-             window.input = target.name;
 
-             window.minSize = new Vector2(100, 44);
 
-             window.position = new Rect(0, 0, width, 44);
 
-             window.UpdatePositionToMouse();
 
-             return window;
 
-         }
 
-         private void UpdatePositionToMouse() {
 
-             if (Event.current == null) return;
 
-             Vector3 mousePoint = GUIUtility.GUIToScreenPoint(Event.current.mousePosition);
 
-             Rect pos = position;
 
-             pos.x = mousePoint.x - position.width * 0.5f;
 
-             pos.y = mousePoint.y - 10;
 
-             position = pos;
 
-         }
 
-         private void OnLostFocus() {
 
-             // Make the popup close on lose focus
 
-             Close();
 
-         }
 
-         private void OnGUI() {
 
-             if (firstFrame) {
 
-                 UpdatePositionToMouse();
 
-                 firstFrame = false;
 
-             }
 
-             GUI.SetNextControlName(inputControlName);
 
-             input = EditorGUILayout.TextField(input);
 
-             EditorGUI.FocusTextInControl(inputControlName);
 
-             Event e = Event.current;
 
-             // If input is empty, revert name to default instead
 
-             if (input == null || input.Trim() == "") {
 
-                 if (GUILayout.Button("Revert to default") || (e.isKey && e.keyCode == KeyCode.Return)) {
 
-                     target.name = NodeEditorUtilities.NodeDefaultName(target.GetType());
 
-                     NodeEditor.GetEditor((XNode.Node)target, NodeEditorWindow.current).OnRename();
 
-                     AssetDatabase.SetMainObject((target as XNode.Node).graph, AssetDatabase.GetAssetPath(target));
 
-                     AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(target));
 
-                     Close();
 
-                     target.TriggerOnValidate();
 
-                 }
 
-             }
 
-             // Rename asset to input text
 
-             else {
 
-                 if (GUILayout.Button("Apply") || (e.isKey && e.keyCode == KeyCode.Return)) {
 
-                     target.name = input;
 
-                     NodeEditor.GetEditor((XNode.Node)target, NodeEditorWindow.current).OnRename();
 
-                     AssetDatabase.SetMainObject((target as XNode.Node).graph, AssetDatabase.GetAssetPath(target));
 
-                     AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(target));
 
-                     Close();
 
-                     target.TriggerOnValidate();
 
-                 }
 
-             }
 
-             if (e.isKey && e.keyCode == KeyCode.Escape) {
 
-                 Close();
 
-             }
 
-         }
 
-         private void OnDestroy() {
 
-             EditorGUIUtility.editingTextField = false;
 
-         }
 
-     }
 
- }
 
 
  |