No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ImportColumnHeaderToggle.cs 2.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using System;
  2. using UnityEngine;
  3. using UnityEngine.U2D.Common;
  4. using UnityEngine.UIElements;
  5. namespace UnityEditor.U2D.PSD
  6. {
  7. internal class ImportColumnHeaderToggle : VisualElement
  8. {
  9. internal static readonly string ussClassName = "unity-dropdown-toggle";
  10. internal static readonly string dropdownClassName = ussClassName + "__dropdown";
  11. readonly Toggle m_Checkmark;
  12. readonly Button m_DropdownButton;
  13. Action<bool> m_ImportToggleChangeCallback;
  14. public ImportColumnHeaderToggle(Action dropdownClickEvent, Action<bool> importToggleChange)
  15. {
  16. AddToClassList(ussClassName);
  17. focusable = false;
  18. var checkbackBackground = new VisualElement()
  19. {
  20. name = "ImportColumnHeaderToggleCheckmarkBackground"
  21. };
  22. m_Checkmark = new Toggle()
  23. {
  24. name = "ImportColumnHeaderToggleCheckmark",
  25. tooltip = Tooltips.importToggleToolTip
  26. };
  27. m_ImportToggleChangeCallback = importToggleChange;
  28. m_Checkmark.RegisterValueChangedCallback(OnHeaderImportToggleChange);
  29. checkbackBackground.Add(m_Checkmark);
  30. m_DropdownButton = new Button(dropdownClickEvent)
  31. {
  32. name = "ImportColumnHeaderDropdown"
  33. };
  34. m_DropdownButton.AddToClassList(dropdownClassName);
  35. var arrow = new VisualElement();
  36. arrow.AddToClassList("unity-icon-arrow");
  37. arrow.pickingMode = PickingMode.Ignore;
  38. m_DropdownButton.Add(arrow);
  39. Add(checkbackBackground);
  40. Add(m_DropdownButton);
  41. }
  42. void OnHeaderImportToggleChange(ChangeEvent<bool> b)
  43. {
  44. m_ImportToggleChangeCallback?.Invoke(b.newValue);
  45. }
  46. public void SetHeaderImportToggleValue(bool b)
  47. {
  48. if(m_Checkmark.value != b)
  49. m_Checkmark.SetValueWithoutNotify(b);
  50. }
  51. }
  52. }