public DebuggerTreeView(DebuggerSelection debuggerSelection, Action <VisualElement> selectElementCallback) { this.focusable = true; m_DebuggerSelection = debuggerSelection; m_DebuggerSelection.onPanelDebugChanged += pdbg => RebuildTree(pdbg); m_DebuggerSelection.onSelectedElementChanged += element => SelectElement(element, null); m_SelectElementCallback = selectElementCallback; hierarchyHasChanged = true; m_SearchResultsHightlights = new List <VisualElement>(); this.RegisterCallback <FocusEvent>(e => m_TreeView?.Focus()); m_TreeViewHoverOverlay = new HighlightOverlayPainter(); m_Container = new VisualElement(); m_Container.style.flexGrow = 1f; Add(m_Container); m_SearchBar = new DebuggerSearchBar(this); Add(m_SearchBar); }
public new void OnEnable() { base.OnEnable(); DebuggerEventDispatchingStrategy.s_GlobalPanelDebug = this; m_DebuggerSelection = new DebuggerSelection(); m_RepaintOverlay = new RepaintOverlayPainter(); m_PickOverlay = new HighlightOverlayPainter(); m_LayoutOverlay = new LayoutOverlayPainter(); var root = this.rootVisualElement; var sheet = EditorGUIUtility.Load(k_DefaultStyleSheetPath) as StyleSheet; root.styleSheets.Add(sheet); StyleSheet colorSheet; if (EditorGUIUtility.isProSkin) { colorSheet = EditorGUIUtility.Load(k_DefaultDarkStyleSheetPath) as StyleSheet; } else { colorSheet = EditorGUIUtility.Load(k_DefaultLightStyleSheetPath) as StyleSheet; } root.styleSheets.Add(colorSheet); root.Add(m_Toolbar); m_PickToggle = new ToolbarToggle() { name = "pickToggle" }; m_PickToggle.text = "Pick Element"; m_PickToggle.RegisterValueChangedCallback((e) => { m_PickElement = e.newValue; // On OSX, as focus-follow-mouse is not supported, // we explicitly focus the EditorWindow when enabling picking if (Application.platform == RuntimePlatform.OSXEditor) { Panel p = m_DebuggerSelection.panel as Panel; if (p != null) { TryFocusCorrespondingWindow(p); } } }); m_Toolbar.Add(m_PickToggle); m_ShowLayoutToggle = new ToolbarToggle() { name = "layoutToggle" }; m_ShowLayoutToggle.SetValueWithoutNotify(m_ShowLayoutBound); m_ShowLayoutToggle.text = "Show Layout"; m_ShowLayoutToggle.RegisterValueChangedCallback((e) => { m_ShowLayoutBound = e.newValue; panelDebug?.MarkDirtyRepaint(); panelDebug?.MarkDebugContainerDirtyRepaint(); }); m_Toolbar.Add(m_ShowLayoutToggle); if (Unsupported.IsDeveloperBuild()) { m_RepaintOverlayToggle = new ToolbarToggle() { name = "repaintOverlayToggle" }; m_RepaintOverlayToggle.text = "Repaint Overlay"; m_RepaintOverlayToggle.RegisterValueChangedCallback((e) => m_ShowRepaintOverlay = e.newValue); m_Toolbar.Add(m_RepaintOverlayToggle); m_UXMLLiveReloadToggle = new ToolbarToggle() { name = "UXMLReloadToggle" }; m_UXMLLiveReloadToggle.SetValueWithoutNotify(RetainedMode.UxmlLiveReloadIsEnabled); m_UXMLLiveReloadToggle.text = "UXML Live Reload"; m_UXMLLiveReloadToggle.RegisterValueChangedCallback((e) => RetainedMode.UxmlLiveReloadIsEnabled = e.newValue); m_Toolbar.Add(m_UXMLLiveReloadToggle); m_ShowDrawStatsToggle = new ToolbarToggle() { name = "drawStatsToggle" }; m_ShowDrawStatsToggle.text = "Draw Stats"; m_ShowDrawStatsToggle.RegisterValueChangedCallback((e) => { var updater = (panel as BaseVisualElementPanel)?.GetUpdater(VisualTreeUpdatePhase.Repaint) as UIRRepaintUpdater; if (updater != null) { updater.DebugGetRenderChain().drawStats = e.newValue; } panelDebug?.MarkDirtyRepaint(); }); m_Toolbar.Add(m_ShowDrawStatsToggle); } var splitter = new DebuggerSplitter(); root.Add(splitter); m_TreeViewContainer = new DebuggerTreeView(m_DebuggerSelection, SelectElement); m_TreeViewContainer.style.flexGrow = 1f; splitter.leftPane.Add(m_TreeViewContainer); m_StylesDebuggerContainer = new StylesDebugger(m_DebuggerSelection); splitter.rightPane.Add(m_StylesDebuggerContainer); }
public BoxModelView() { AddToClassList("box-model-view"); visible = false; m_OverlayPainter = new HighlightOverlayPainter(); m_Container = new VisualElement(); m_Container.AddToClassList("box-model-view-container"); m_Layer1 = new VisualElement() { name = "BoxModelViewLayer1" }; m_Layer2 = new VisualElement() { name = "BoxModelViewLayer2" }; m_Layer2.style.position = Position.Absolute; m_Layer2.pickingMode = PickingMode.Ignore; m_Layer2.StretchToParentSize(); m_TopTextFieldMarginContainer.pickingMode = PickingMode.Ignore; m_TopTextFieldMarginContainer.AddToClassList("box-model-textfield-top-bottom-spacer"); m_BottomTextFieldMarginContainer.pickingMode = PickingMode.Ignore; m_BottomTextFieldMarginContainer.AddToClassList("box-model-textfield-top-bottom-spacer"); m_TopTextFieldBorderContainer.pickingMode = PickingMode.Ignore; m_TopTextFieldBorderContainer.AddToClassList("box-model-textfield-top-bottom-spacer"); m_BottomTextFieldBorderContainer.pickingMode = PickingMode.Ignore; m_BottomTextFieldBorderContainer.AddToClassList("box-model-textfield-top-bottom-spacer"); m_TopTextFieldPaddingContainer.pickingMode = PickingMode.Ignore; m_TopTextFieldPaddingContainer.AddToClassList("box-model-textfield-top-bottom-spacer"); m_BottomTextFieldPaddingContainer.pickingMode = PickingMode.Ignore; m_BottomTextFieldPaddingContainer.AddToClassList("box-model-textfield-top-bottom-spacer"); m_ContentSpacer.pickingMode = PickingMode.Ignore; m_ContentSpacer.AddToClassList("box-model-textfield-top-bottom-spacer"); m_Layer2.Add(m_TopTextFieldMarginContainer); m_Layer2.Add(m_TopTextFieldBorderContainer); m_Layer2.Add(m_TopTextFieldPaddingContainer); m_Layer2.Add(m_ContentSpacer); m_Layer2.Add(m_BottomTextFieldPaddingContainer); m_Layer2.Add(m_BottomTextFieldBorderContainer); m_Layer2.Add(m_BottomTextFieldMarginContainer); m_ContentBox = new ContentBox(); m_ContentBox.AddToClassList("box-model"); m_ContentBox.AddToClassList("box-model-container-content"); m_ContentBox.RegisterCallback <MouseOverEvent, BoxType>(OnMouseOver, BoxType.Content); m_PaddingBox = new BoxModelElement(BoxType.Padding, m_ContentBox, m_TopTextFieldPaddingContainer, m_BottomTextFieldPaddingContainer); m_PaddingBox.AddToClassList("box-model"); m_PaddingBox.AddToClassList("box-model-container-padding"); m_PaddingBox.RegisterCallback <MouseOverEvent, BoxType>(OnMouseOver, BoxType.Padding); m_BorderBox = new BoxModelElement(BoxType.Border, m_PaddingBox, m_TopTextFieldBorderContainer, m_BottomTextFieldBorderContainer); m_BorderBox.AddToClassList("box-model"); m_BorderBox.AddToClassList("box-model-container-border"); m_BorderBox.RegisterCallback <MouseOverEvent, BoxType>(OnMouseOver, BoxType.Border); m_MarginBox = new BoxModelElement(BoxType.Margin, m_BorderBox, m_TopTextFieldMarginContainer, m_BottomTextFieldMarginContainer); m_MarginBox.AddToClassList("box-model"); m_MarginBox.AddToClassList("box-model-container-margin"); m_MarginBox.RegisterCallback <MouseOverEvent, BoxType>(OnMouseOver, BoxType.Margin); m_Layer1.Add(m_MarginBox); m_Container.Add(m_Layer1); m_Container.Add(m_Layer2); var spacerLeft = new VisualElement() { style = { flexGrow = 1 } }; var spacerRight = new VisualElement() { style = { flexGrow = 1 } }; Add(spacerLeft); Add(m_Container); Add(spacerRight); RegisterCallback <MouseOutEvent>(OnMouseOut); }
public void Initialize(EditorWindow debuggerWindow, VisualElement root, DebuggerContext context) { base.Initialize(debuggerWindow); m_Root = root; m_Context = context; m_Context.onStateChange += OnContextChange; var sheet = EditorGUIUtility.Load(k_DefaultStyleSheetPath) as StyleSheet; m_Root.styleSheets.Add(sheet); StyleSheet colorSheet; if (EditorGUIUtility.isProSkin) { colorSheet = EditorGUIUtility.Load(k_DefaultDarkStyleSheetPath) as StyleSheet; } else { colorSheet = EditorGUIUtility.Load(k_DefaultLightStyleSheetPath) as StyleSheet; } m_Root.styleSheets.Add(colorSheet); m_Root.Add(m_Toolbar); m_PickToggle = new ToolbarToggle() { name = "pickToggle" }; m_PickToggle.text = "Pick Element"; m_PickToggle.RegisterValueChangedCallback((e) => { m_Context.pickElement = e.newValue; // On OSX, as focus-follow-mouse is not supported, // we explicitly focus the EditorWindow when enabling picking if (Application.platform == RuntimePlatform.OSXEditor) { Panel p = m_Context.selection.panel as Panel; if (p != null) { TryFocusCorrespondingWindow(p.ownerObject); } } }); m_Toolbar.Add(m_PickToggle); m_ShowLayoutToggle = new ToolbarToggle() { name = "layoutToggle" }; m_ShowLayoutToggle.text = "Show Layout"; m_ShowLayoutToggle.RegisterValueChangedCallback((e) => { m_Context.showLayoutBound = e.newValue; }); m_Toolbar.Add(m_ShowLayoutToggle); if (Unsupported.IsDeveloperBuild()) { m_RepaintOverlayToggle = new ToolbarToggle() { name = "repaintOverlayToggle" }; m_RepaintOverlayToggle.text = "Repaint Overlay"; m_RepaintOverlayToggle.RegisterValueChangedCallback((e) => m_Context.showRepaintOverlay = e.newValue); m_Toolbar.Add(m_RepaintOverlayToggle); m_ShowDrawStatsToggle = new ToolbarToggle() { name = "drawStatsToggle" }; m_ShowDrawStatsToggle.text = "Draw Stats"; m_ShowDrawStatsToggle.RegisterValueChangedCallback((e) => { m_Context.showDrawStats = e.newValue; }); m_Toolbar.Add(m_ShowDrawStatsToggle); } var splitter = new DebuggerSplitter(); m_Root.Add(splitter); m_TreeViewContainer = new DebuggerTreeView(m_Context.selection, SelectElement); m_TreeViewContainer.style.flexGrow = 1f; splitter.leftPane.Add(m_TreeViewContainer); m_StylesDebuggerContainer = new StylesDebugger(m_Context.selection); splitter.rightPane.Add(m_StylesDebuggerContainer); DebuggerEventDispatchingStrategy.s_GlobalPanelDebug = this; m_RepaintOverlay = new RepaintOverlayPainter(); m_PickOverlay = new HighlightOverlayPainter(); m_LayoutOverlay = new LayoutOverlayPainter(); OnContextChange(); }