StatusView.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. using System;
  2. using UnityEditor;
  3. using UnityEngine;
  4. #if UNITY_2019_1_OR_NEWER
  5. using UnityEngine.UIElements;
  6. #else
  7. using UnityEngine.Experimental.UIElements;
  8. using UnityEngine.Experimental.UIElements.StyleEnums;
  9. #endif
  10. namespace UnityEditor.Collaboration
  11. {
  12. internal class StatusView : VisualElement
  13. {
  14. Image m_Image;
  15. Label m_Message;
  16. Button m_Button;
  17. Action m_Callback;
  18. public Texture icon
  19. {
  20. get { return m_Image.image; }
  21. set
  22. {
  23. m_Image.image = value;
  24. m_Image.visible = value != null;
  25. // Until "display: hidden" is added, this is the only way to hide an element
  26. m_Image.style.height = value != null ? 150 : 0;
  27. }
  28. }
  29. public string message
  30. {
  31. get { return m_Message.text; }
  32. set
  33. {
  34. m_Message.text = value;
  35. m_Message.visible = value != null;
  36. }
  37. }
  38. public string buttonText
  39. {
  40. get { return m_Button.text; }
  41. set
  42. {
  43. m_Button.text = value;
  44. UpdateButton();
  45. }
  46. }
  47. public Action callback
  48. {
  49. get { return m_Callback; }
  50. set
  51. {
  52. m_Callback = value;
  53. UpdateButton();
  54. }
  55. }
  56. public StatusView()
  57. {
  58. name = "StatusView";
  59. this.StretchToParentSize();
  60. m_Image = new Image() { name = "StatusIcon", visible = false, style = { height = 0f }};
  61. m_Message = new Label() { name = "StatusMessage", visible = false};
  62. m_Button = new Button(InternalCallaback) { name = "StatusButton", visible = false};
  63. Add(m_Image);
  64. Add(m_Message);
  65. Add(m_Button);
  66. }
  67. private void UpdateButton()
  68. {
  69. m_Button.visible = m_Button.text != null && m_Callback != null;
  70. }
  71. private void InternalCallaback()
  72. {
  73. m_Callback();
  74. }
  75. }
  76. }