예제 #1
0
 void OnGUI()
 {
     if (null == m_treeViewControl)
     {
         return;
     }
     wantsMouseMove = true;
     if (null != Event.current &&
         Event.current.type == EventType.MouseMove)
     {
         Repaint();
     }
     m_treeViewControl.DisplayTreeView(TreeViewControl.DisplayTypes.USE_SCROLL_VIEW);
 }
예제 #2
0
        public void OnSceneGUI()
        {
            bool needsRepainted = false;

            if (null != Event.current &&
                m_mousePos != Event.current.mousePosition)
            {
                needsRepainted = true;
            }

            if (null == target &&
                !(target is TreeViewControl))
            {
                Debug.LogError("Not a TreeViewControl");
                return;
            }

            TreeViewControl item = (TreeViewControl)target;

            if (null == item)
            {
                Debug.LogError("TreeViewControl is null");
                return;
            }

            if (!item.DisplayOnScene)
            {
                return;
            }

            item.DisplayTreeView(TreeViewControl.DisplayTypes.USE_SCROLL_AREA);

            if (item.SelectedItem != m_lastSelectedItem)
            {
                m_lastSelectedItem = item.SelectedItem;
                needsRepainted     = true;
            }

            if (needsRepainted)
            {
                Repaint();
                SceneView.RepaintAll();
            }
        }
예제 #3
0
        public override void OnInspectorGUI()
        {
            if (Application.isPlaying)
            {
                GUILayout.Label("Please avoid editing these fields while playing");
            }

            if (null == target &&
                !(target is TreeViewControl))
            {
                Debug.LogError("Not a TreeViewControl");
                return;
            }

            TreeViewControl item = (TreeViewControl)target;

            if (null == item)
            {
                Debug.LogError("TreeViewControl is null");
                return;
            }

            bool needsRepainted = false;

            if (null != Event.current &&
                m_mousePos != Event.current.mousePosition)
            {
                needsRepainted = true;
            }

            if (item.SelectedItem != m_lastSelectedItem)
            {
                m_lastSelectedItem = item.SelectedItem;
                needsRepainted     = true;
            }

            if (null != item.SelectedItem &&
                string.IsNullOrEmpty(item.SelectedItem.Header))
            {
                item.SelectedItem.Header = "Root item";
                needsRepainted           = true;
            }

            if (GUILayout.Button("Select Root TreeViewItem"))
            {
                item.SelectedItem          = item.RootItem;
                Selection.activeGameObject = item.gameObject;
                needsRepainted             = true;
            }

            if (null != item.SelectedItem &&
                GUILayout.Button("Add Child TreeView Item"))
            {
                item.SelectedItem.AddItem("Default text");
                needsRepainted = true;
            }

            if (null != item.SelectedItem &&
                item.SelectedItem != item.RootItem &&
                null != item.SelectedItem.Parent &&
                GUILayout.Button("Remove TreeView Item"))
            {
                TreeViewItem oldItem = item.SelectedItem;
                item.SelectedItem.Parent.Items.Remove(oldItem);
                item.SelectedItem = null;
                needsRepainted    = true;
            }

            if (null != item.SelectedItem &&
                null != item.SelectedItem.Parent &&
                item.SelectedItem != item.RootItem &&
                item.SelectedItem.Parent.Items.IndexOf(item.SelectedItem) > 0 &&
                GUILayout.Button("Move Up"))
            {
                TreeViewItem oldItem = item.SelectedItem;
                item.SelectedItem = null;
                int index = oldItem.Parent.Items.IndexOf(oldItem);
                oldItem.Parent.Items.Remove(oldItem);
                oldItem.Parent.Items.Insert(index - 1, oldItem);
                item.SelectedItem = oldItem;
                needsRepainted    = true;
            }

            if (null != item.SelectedItem &&
                null != item.SelectedItem.Parent &&
                item.SelectedItem != item.RootItem &&
                (item.SelectedItem.Parent.Items.IndexOf(item.SelectedItem) + 1) < item.SelectedItem.Parent.Items.Count &&
                GUILayout.Button("Move Down"))
            {
                TreeViewItem oldItem = item.SelectedItem;
                item.SelectedItem = null;
                int index = oldItem.Parent.Items.IndexOf(oldItem);
                oldItem.Parent.Items.Remove(oldItem);
                oldItem.Parent.Items.Insert(index + 1, oldItem);
                item.SelectedItem = oldItem;
                needsRepainted    = true;
            }

            if (null != item.SelectedItem &&
                null != item.SelectedItem.Parent &&
                null != item.SelectedItem.Parent.Parent &&
                item.SelectedItem != item.RootItem &&
                item.SelectedItem.Parent != item.RootItem &&
                GUILayout.Button("Promote TreeView Item"))
            {
                TreeViewItem oldItem = item.SelectedItem;
                item.SelectedItem = null;
                oldItem.Parent.Items.Remove(oldItem);
                oldItem.Parent.Parent.Items.Insert(0, oldItem);
                oldItem.Parent    = oldItem.Parent.Parent;
                item.SelectedItem = oldItem;
                needsRepainted    = true;
            }

            EditorGUILayout.Separator();

            if (null != item.SelectedItem)
            {
                EditorGUILayout.LabelField("Parent:", (item.SelectedItem.Parent == null) ? "(null)" : "(valid)");
                EditorGUILayout.LabelField("Parent Control:", (item.SelectedItem.ParentControl == null) ? "(null)" : "(valid)");
            }

            EditorGUILayout.Separator();
            EditorGUILayout.LabelField("***** Selected Item:", "(editable fields) *******");
            if (null != item.SelectedItem)
            {
                if (!string.IsNullOrEmpty(item.SelectedItem.Header))
                {
                    string header = EditorGUILayout.TextField("Header:", item.SelectedItem.Header);
                    if (!item.SelectedItem.Header.Equals(header))
                    {
                        item.SelectedItem.Header = header;
                        needsRepainted           = true;
                    }
                }
                bool isExpanded = EditorGUILayout.Toggle("IsExpanded:", item.SelectedItem.IsExpanded);
                if (isExpanded != item.SelectedItem.IsExpanded)
                {
                    item.SelectedItem.IsExpanded = isExpanded;
                    needsRepainted = true;
                }
                bool isCheckBox = EditorGUILayout.Toggle("IsCheckBox:", item.SelectedItem.IsCheckBox);
                if (isCheckBox != item.SelectedItem.IsCheckBox)
                {
                    item.SelectedItem.IsCheckBox = isCheckBox;
                    needsRepainted = true;
                }
                bool isChecked = EditorGUILayout.Toggle("IsChecked:", item.SelectedItem.IsChecked);
                if (isChecked != item.SelectedItem.IsChecked)
                {
                    item.SelectedItem.IsChecked = isChecked;
                    needsRepainted = true;
                }
            }

            if (needsRepainted)
            {
                Repaint();
                SceneView.RepaintAll();
            }

            base.OnInspectorGUI();

            if (item.DisplayInInspector)
            {
                EditorGUILayout.Separator();
                item.DisplayTreeView(TreeViewControl.DisplayTypes.NONE);
                EditorGUILayout.Separator();
            }
        }