123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- #if UNITY_EDITOR
- using System.Collections.Generic;
-
- namespace UnityEngine.InputSystem.Editor
- {
- internal abstract class AdvancedDropdown
- {
- protected Vector2 minimumSize { get; set; }
- protected Vector2 maximumSize { get; set; }
-
- internal AdvancedDropdownWindow m_WindowInstance;
- internal AdvancedDropdownState m_State;
- internal AdvancedDropdownDataSource m_DataSource;
- internal AdvancedDropdownGUI m_Gui;
-
- public AdvancedDropdown(AdvancedDropdownState state)
- {
- m_State = state;
- }
-
- public void Show(Rect rect)
- {
- if (m_WindowInstance != null)
- {
- m_WindowInstance.Close();
- m_WindowInstance = null;
- }
- if (m_DataSource == null)
- {
- m_DataSource = new CallbackDataSource(BuildRoot, BuildCustomSearch);
- }
- if (m_Gui == null)
- {
- m_Gui = new AdvancedDropdownGUI();
- }
-
- m_WindowInstance = ScriptableObject.CreateInstance<AdvancedDropdownWindow>();
- if (minimumSize != Vector2.zero)
- m_WindowInstance.minSize = minimumSize;
- if (maximumSize != Vector2.zero)
- m_WindowInstance.maxSize = maximumSize;
- m_WindowInstance.state = m_State;
- m_WindowInstance.dataSource = m_DataSource;
- m_WindowInstance.gui = m_Gui;
- m_WindowInstance.windowClosed +=
- w => { ItemSelected(w.GetSelectedItem()); };
- m_WindowInstance.windowDestroyed += OnDestroy;
- m_WindowInstance.Init(rect);
- }
-
- public void Reload()
- {
- m_WindowInstance?.ReloadData();
- }
-
- public void Repaint()
- {
- m_WindowInstance?.Repaint();
- }
-
- protected abstract AdvancedDropdownItem BuildRoot();
-
- protected virtual AdvancedDropdownItem BuildCustomSearch(string searchString,
- IEnumerable<AdvancedDropdownItem> elements)
- {
- return null;
- }
-
- protected virtual void ItemSelected(AdvancedDropdownItem item)
- {
- }
-
- protected virtual void OnDestroy()
- {
- }
- }
- }
- #endif
|