79 lines
2.2 KiB
C#
79 lines
2.2 KiB
C#
using UnityEngine;
|
|
using UnityEngine.EventSystems;
|
|
using UnityEngine.UI;
|
|
#if ENABLE_INPUT_SYSTEM && !ENABLE_LEGACY_INPUT_MANAGER
|
|
using UnityEngine.InputSystem;
|
|
#endif
|
|
|
|
namespace SimpleFileBrowser
|
|
{
|
|
public class FileBrowserRenamedItem : MonoBehaviour
|
|
{
|
|
public delegate void OnRenameCompleted( string filename );
|
|
|
|
#pragma warning disable 0649
|
|
[SerializeField]
|
|
private Image background;
|
|
|
|
[SerializeField]
|
|
private Image icon;
|
|
|
|
[SerializeField]
|
|
private InputField nameInputField;
|
|
public InputField InputField { get { return nameInputField; } }
|
|
#pragma warning restore 0649
|
|
|
|
private OnRenameCompleted onRenameCompleted;
|
|
|
|
private RectTransform m_transform;
|
|
public RectTransform TransformComponent
|
|
{
|
|
get
|
|
{
|
|
if( m_transform == null )
|
|
m_transform = (RectTransform) transform;
|
|
|
|
return m_transform;
|
|
}
|
|
}
|
|
|
|
public void Show( string initialFilename, Color backgroundColor, Sprite icon, OnRenameCompleted onRenameCompleted )
|
|
{
|
|
background.color = backgroundColor;
|
|
this.icon.sprite = icon;
|
|
this.onRenameCompleted = onRenameCompleted;
|
|
|
|
transform.SetAsLastSibling();
|
|
gameObject.SetActive( true );
|
|
|
|
nameInputField.text = initialFilename;
|
|
nameInputField.ActivateInputField();
|
|
}
|
|
|
|
#if UNITY_EDITOR || UNITY_STANDALONE || UNITY_WSA || UNITY_WSA_10_0
|
|
private void LateUpdate()
|
|
{
|
|
// Don't allow scrolling with mouse wheel while renaming a file or creating a folder
|
|
#if ENABLE_INPUT_SYSTEM && !ENABLE_LEGACY_INPUT_MANAGER
|
|
if( Mouse.current != null && Mouse.current.scroll.ReadValue().y != 0f )
|
|
#else
|
|
if( Input.mouseScrollDelta.y != 0f )
|
|
#endif
|
|
nameInputField.DeactivateInputField();
|
|
}
|
|
#endif
|
|
|
|
public void OnInputFieldEndEdit( string filename )
|
|
{
|
|
gameObject.SetActive( false );
|
|
|
|
// If we don't deselect the InputField manually, FileBrowser's keyboard shortcuts
|
|
// no longer work until user clicks on a UI element and thus, deselects the InputField
|
|
if( EventSystem.current && !EventSystem.current.alreadySelecting && EventSystem.current.currentSelectedGameObject == nameInputField.gameObject )
|
|
EventSystem.current.SetSelectedGameObject( null );
|
|
|
|
if( onRenameCompleted != null )
|
|
onRenameCompleted( filename );
|
|
}
|
|
}
|
|
} |