TreeViewInspector.cs 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. using UnityEditor;
  2. using UnityEngine;
  3. // [CustomEditor(typeof(TreeViewControl))]
  4. public class TreeViewInspector : Editor
  5. {
  6. static TreeViewControl item = null;
  7. public static TreeViewControl AddTreeView()
  8. {
  9. item = new TreeViewControl();
  10. AssignDefaults(item);
  11. return item;
  12. }
  13. public static void AssignDefaults(TreeViewControl item)
  14. {
  15. // create new skin instance
  16. GUISkin skinHover = ScriptableObject.CreateInstance<GUISkin>();
  17. GUISkin skinSelected = ScriptableObject.CreateInstance<GUISkin>();
  18. GUISkin skinUnselected = ScriptableObject.CreateInstance<GUISkin>();
  19. // name the skins
  20. skinHover.name = "Hover";
  21. skinSelected.name = "Selected";
  22. skinUnselected.name = "Unselected";
  23. item.m_textureBlank = GetTexture("Assets/TreeViewControl/blank.png");
  24. item.m_textureGuide = GetTexture("Assets/TreeViewControl/guide.png");
  25. item.m_textureLastSiblingCollapsed = GetTexture("Assets/TreeViewControl/last_sibling_collapsed.png");
  26. item.m_textureLastSiblingExpanded = GetTexture("Assets/TreeViewControl/last_sibling_expanded.png");
  27. item.m_textureLastSiblingNoChild = GetTexture("Assets/TreeViewControl/last_sibling_nochild.png");
  28. item.m_textureMiddleSiblingCollapsed = GetTexture("Assets/TreeViewControl/middle_sibling_collapsed.png");
  29. item.m_textureMiddleSiblingExpanded = GetTexture("Assets/TreeViewControl/middle_sibling_expanded.png");
  30. item.m_textureMiddleSiblingNoChild = GetTexture("Assets/TreeViewControl/middle_sibling_nochild.png");
  31. item.m_textureNormalChecked = GetTexture("Assets/TreeViewControl/normal_checked.png");
  32. item.m_textureNormalUnchecked = GetTexture("Assets/TreeViewControl/normal_unchecked.png");
  33. item.m_textureSelectedBackground = GetTexture("Assets/TreeViewControl/selected_background_color.png");
  34. item.m_skinHover = skinHover;
  35. item.m_skinSelected = skinSelected;
  36. item.m_skinUnselected = skinUnselected;
  37. SetBackground(item.m_skinHover.button, null);
  38. SetBackground(item.m_skinHover.toggle, null);
  39. SetButtonFontSize(item.m_skinHover.button);
  40. SetButtonFontSize(item.m_skinHover.toggle);
  41. RemoveMargins(item.m_skinHover.button);
  42. RemoveMargins(item.m_skinHover.toggle);
  43. SetTextColor(item.m_skinHover.button, Color.yellow);
  44. SetTextColor(item.m_skinHover.toggle, Color.yellow);
  45. SetBackground(item.m_skinSelected.button, item.m_textureSelectedBackground);
  46. SetBackground(item.m_skinSelected.toggle, item.m_textureSelectedBackground);
  47. SetButtonFontSize(item.m_skinSelected.button);
  48. SetButtonFontSize(item.m_skinSelected.toggle);
  49. RemoveMargins(item.m_skinSelected.button);
  50. RemoveMargins(item.m_skinSelected.toggle);
  51. SetTextColor(item.m_skinSelected.button, Color.yellow);
  52. SetTextColor(item.m_skinSelected.toggle, Color.yellow);
  53. SetBackground(item.m_skinUnselected.button, null);
  54. SetBackground(item.m_skinUnselected.toggle, null);
  55. SetButtonFontSize(item.m_skinUnselected.button);
  56. SetButtonFontSize(item.m_skinUnselected.toggle);
  57. RemoveMargins(item.m_skinUnselected.button);
  58. RemoveMargins(item.m_skinUnselected.toggle);
  59. SetTextColor(item.m_skinUnselected.button, Color.white);
  60. SetTextColor(item.m_skinUnselected.toggle, Color.white);
  61. }
  62. static void SetBackground(GUIStyle style, Texture2D texture)
  63. {
  64. style.active.background = texture;
  65. style.focused.background = texture;
  66. style.hover.background = texture;
  67. style.normal.background = texture;
  68. style.onActive.background = texture;
  69. style.onFocused.background = texture;
  70. style.onHover.background = texture;
  71. style.onNormal.background = texture;
  72. }
  73. static void SetTextColor(GUIStyle style, Color color)
  74. {
  75. style.active.textColor = color;
  76. style.focused.textColor = color;
  77. style.hover.textColor = color;
  78. style.normal.textColor = color;
  79. style.onActive.textColor = color;
  80. style.onFocused.textColor = color;
  81. style.onHover.textColor = color;
  82. style.onNormal.textColor = color;
  83. }
  84. static void RemoveMargins(GUIStyle style)
  85. {
  86. style.margin.bottom = 0;
  87. style.margin.left = 0;
  88. style.margin.right = 0;
  89. style.margin.top = 0;
  90. }
  91. static void SetButtonFontSize(GUIStyle style)
  92. {
  93. style.fontSize = 12;
  94. }
  95. static Texture2D GetTexture(string texturePath)
  96. {
  97. try
  98. {
  99. Texture2D item = (Texture2D)AssetDatabase.LoadAssetAtPath(texturePath, typeof(Texture2D));
  100. return item;
  101. }
  102. catch (System.Exception ex)
  103. {
  104. Debug.LogError(string.Format("Failed to find local texture: {0}", ex));
  105. return null;
  106. }
  107. }
  108. static GUISkin GetGUISkin(string skinPath)
  109. {
  110. try
  111. {
  112. GUISkin item = (GUISkin)AssetDatabase.LoadAssetAtPath(skinPath, typeof(GUISkin));
  113. return item;
  114. }
  115. catch (System.Exception ex)
  116. {
  117. Debug.LogError(string.Format("Failed to find local GUI skin: {0}", ex));
  118. return null;
  119. }
  120. }
  121. }