public override void ClearUI() { if (m_Library == null) { return; } m_Library.RemoveFromHierarchy(); m_Library = null; }
public override void CreateUI() { var root = rootVisualElement; var viewportWindow = document.primaryViewportWindow; if (viewportWindow == null) { return; } var selection = viewportWindow.selection; var viewport = viewportWindow.viewport; m_Library = new BuilderLibrary(this, viewport, selection, null, null); root.Add(m_Library); }
public override void CreateUI() { var root = rootVisualElement; titleContent = GetLocalizedTitleContent(); saveChangesMessage = BuilderConstants.SaveDialogSaveChangesPromptMessage; // Load assets. var builderTemplate = BuilderPackageUtilities.LoadAssetAtPath <VisualTreeAsset>(BuilderConstants.UIBuilderPackagePath + "/Builder.uxml"); // Load templates. builderTemplate.CloneTree(root); // Create overlay painter. m_HighlightOverlayPainter = new HighlightOverlayPainter(); // Fetch the tooltip previews. var styleSheetsPaneTooltipPreview = root.Q <BuilderTooltipPreview>("stylesheets-pane-tooltip-preview"); var libraryTooltipPreview = root.Q <BuilderTooltipPreview>("library-tooltip-preview"); // Create selection. m_Selection = new BuilderSelection(root, this); // Create Element Context Menu Manipulator var contextMenuManipulator = new BuilderElementContextMenu(this, selection); // Create viewport first. m_Viewport = new BuilderViewport(this, selection, contextMenuManipulator); selection.documentRootElement = m_Viewport.documentRootElement; var overlayHelper = viewport.Q <OverlayPainterHelperElement>(); overlayHelper.painter = m_HighlightOverlayPainter; // Create the rest of the panes. var classDragger = new BuilderClassDragger(this, root, selection, m_Viewport, m_Viewport.parentTracker); var styleSheetsDragger = new BuilderStyleSheetsDragger(this, root, selection); var styleSheetsPane = new BuilderStyleSheets(this, m_Viewport, selection, classDragger, styleSheetsDragger, m_HighlightOverlayPainter, styleSheetsPaneTooltipPreview); var hierarchyDragger = new BuilderHierarchyDragger(this, root, selection, m_Viewport, m_Viewport.parentTracker) { builderStylesheetRoot = styleSheetsPane.container }; m_Hierarchy = new BuilderHierarchy(this, m_Viewport, selection, classDragger, hierarchyDragger, contextMenuManipulator, m_HighlightOverlayPainter); var libraryDragger = new BuilderLibraryDragger(this, root, selection, m_Viewport, m_Viewport.parentTracker, hierarchy.container, libraryTooltipPreview) { builderStylesheetRoot = styleSheetsPane.container }; m_Viewport.viewportDragger.builderHierarchyRoot = hierarchy.container; m_Library = new BuilderLibrary(this, m_Viewport, selection, libraryDragger, libraryTooltipPreview); m_Inspector = new BuilderInspector(this, selection, m_HighlightOverlayPainter); m_Toolbar = new BuilderToolbar(this, selection, m_Viewport, hierarchy, m_Library, m_Inspector, libraryTooltipPreview); m_UxmlPreview = new BuilderUxmlPreview(this); m_UssPreview = new BuilderUssPreview(this, selection); root.Q("viewport").Add(m_Viewport); m_Viewport.toolbar.Add(m_Toolbar); root.Q("library").Add(m_Library); root.Q("style-sheets").Add(styleSheetsPane); root.Q("hierarchy").Add(hierarchy); root.Q("uxml-preview").Add(m_UxmlPreview); root.Q("uss-preview").Add(m_UssPreview); root.Q("inspector").Add(m_Inspector); // Init selection. selection.AssignNotifiers(new IBuilderSelectionNotifier[] { document, m_Viewport, styleSheetsPane, hierarchy, m_Inspector, m_Library, m_UxmlPreview, m_UssPreview, m_Toolbar, m_Viewport.parentTracker, m_Viewport.resizer, m_Viewport.mover, m_Viewport.anchorer, m_Viewport.selectionIndicator }); // Command Handler commandHandler.RegisterPane(styleSheetsPane); commandHandler.RegisterPane(hierarchy); commandHandler.RegisterPane(m_Viewport); commandHandler.RegisterToolbar(m_Toolbar); m_MiddleSplitView = rootVisualElement.Q <TwoPaneSplitView>("middle-column"); m_MiddleSplitView.RegisterCallback <GeometryChangedEvent>(OnFirstDisplay); OnEnableAfterAllSerialization(); }
public override void CreateUI() { var root = rootVisualElement; // Load assets. var builderTemplate = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(BuilderConstants.UIBuilderPackagePath + "/Builder.uxml"); var saveDialogTemplate = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(BuilderConstants.UIBuilderPackagePath + "/BuilderSaveDialog.uxml"); // Load templates. builderTemplate.CloneTree(root); saveDialogTemplate.CloneTree(root); // Create overlay painter. m_HighlightOverlayPainter = new HighlightOverlayPainter(); // Fetch the save dialog. var dialog = root.Q <ModalPopup>("save-dialog"); // Fetch the tooltip previews. var styleSheetsPaneTooltipPreview = root.Q <BuilderTooltipPreview>("stylesheets-pane-tooltip-preview"); var libraryTooltipPreview = root.Q <BuilderTooltipPreview>("library-tooltip-preview"); // Create selection. m_Selection = new BuilderSelection(root, this); // Create Element Context Menu Manipulator var contextMenuManipulator = new BuilderElementContextMenu(this, selection); // Create viewport first. m_Viewport = new BuilderViewport(this, selection, contextMenuManipulator); selection.documentElement = m_Viewport.documentElement; var overlayHelper = viewport.Q <OverlayPainterHelperElement>(); overlayHelper.painter = m_HighlightOverlayPainter; // Create the rest of the panes. var classDragger = new BuilderClassDragger(this, root, selection, m_Viewport, m_Viewport.parentTracker); var hierarchyDragger = new BuilderHierarchyDragger(this, root, selection, m_Viewport, m_Viewport.parentTracker); var styleSheetsPane = new BuilderStyleSheets(m_Viewport, selection, classDragger, hierarchyDragger, contextMenuManipulator, m_HighlightOverlayPainter, styleSheetsPaneTooltipPreview); var hierarchy = new BuilderHierarchy(m_Viewport, selection, classDragger, hierarchyDragger, contextMenuManipulator, m_HighlightOverlayPainter); var libraryDragger = new BuilderLibraryDragger(this, root, selection, m_Viewport, m_Viewport.parentTracker, hierarchy.container, libraryTooltipPreview); m_Library = new BuilderLibrary(this, m_Viewport, selection, libraryDragger, libraryTooltipPreview); m_Inspector = new BuilderInspector(this, selection); m_Toolbar = new BuilderToolbar(this, selection, dialog, m_Viewport, hierarchy, m_Library, m_Inspector, libraryTooltipPreview); m_UxmlPreview = new BuilderUxmlPreview(this); m_UssPreview = new BuilderUssPreview(this); root.Q("viewport").Add(m_Viewport); m_Viewport.toolbar.Add(m_Toolbar); root.Q("library").Add(m_Library); root.Q("style-sheets").Add(styleSheetsPane); root.Q("hierarchy").Add(hierarchy); root.Q("uxml-preview").Add(m_UxmlPreview); root.Q("uss-preview").Add(m_UssPreview); root.Q("inspector").Add(m_Inspector); // Init selection. selection.AssignNotifiers(new IBuilderSelectionNotifier[] { document, m_Viewport, styleSheetsPane, hierarchy, m_Inspector, m_UxmlPreview, m_UssPreview, m_Viewport.parentTracker, m_Viewport.resizer, m_Viewport.mover, m_Viewport.anchorer }); // Command Handler commandHandler.RegisterPane(styleSheetsPane); commandHandler.RegisterPane(hierarchy); commandHandler.RegisterPane(m_Viewport); commandHandler.RegisterToolbar(m_Toolbar); OnEnableAfterAllSerialization(); }
public BuilderToolbar( BuilderPaneWindow paneWindow, BuilderSelection selection, ModalPopup saveDialog, BuilderViewport viewport, BuilderExplorer explorer, BuilderLibrary library, BuilderInspector inspector, BuilderTooltipPreview tooltipPreview) { m_PaneWindow = paneWindow; m_Selection = selection; m_SaveDialog = saveDialog; m_Viewport = viewport; m_Explorer = explorer; m_Library = library; m_Inspector = inspector; m_TooltipPreview = tooltipPreview; // Query the UI m_SaveDialogUxmlPathField = m_SaveDialog.Q <TextField>("save-dialog-uxml-path"); m_SaveDialogUxmlLocationButton = m_SaveDialog.Q <Button>("save-dialog-uxml-location-button"); m_SaveDialogUssPathField = m_SaveDialog.Q <TextField>("save-dialog-uss-path"); m_SaveDialogUssLocationButton = m_SaveDialog.Q <Button>("save-dialog-uss-location-button"); m_SaveDialogSaveButton = m_SaveDialog.Q <Button>("save-dialog-save-button"); m_SaveDialogCancelButton = m_SaveDialog.Q <Button>("save-dialog-cancel-button"); m_SaveDialogTitleLabel = m_SaveDialog.Q <Label>("title"); m_SaveDialogUxmlPathField.RegisterValueChangedCallback(OnUxmlPathFieldChange); m_SaveDialogUssPathField.RegisterValueChangedCallback(OnUssPathFieldChange); m_SaveDialogSaveButton.clickable.clicked += SaveDocument; m_SaveDialogCancelButton.clickable.clicked += m_SaveDialog.Hide; m_SaveDialogUxmlLocationButton.clickable.clicked += OnUxmlLocationButtonClick; m_SaveDialogUssLocationButton.clickable.clicked += OnUssLocationButtonClick; var saveDialogValidationBoxContainer = m_SaveDialog.Q("save-dialog-validation-box"); m_SaveDialogValidationBox = new IMGUIContainer(DrawSaveDialogValidationMessage); m_SaveDialogValidationBox.style.overflow = Overflow.Hidden; saveDialogValidationBoxContainer.Add(m_SaveDialogValidationBox); var template = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>( BuilderConstants.UIBuilderPackagePath + "/BuilderToolbar.uxml"); template.CloneTree(this); // File Menu m_FileMenu = this.Q <ToolbarMenu>("file-menu"); SetUpFileMenu(); // Preview Button var previewButton = this.Q <ToolbarToggle>("preview-button"); previewButton.RegisterValueChangedCallback(TogglePreviewMode); m_CanvasThemeMenu = this.Q <ToolbarMenu>("canvas-theme-menu"); SetUpCanvasThemeMenu(); ChangeCanvasTheme(document.currentCanvasTheme); UpdateCanvasThemeMenuStatus(); // Track unsaved changes state change. document.unsavedChangesStateChanged = SetViewportSubTitle; SetViewportSubTitle(); // Get Builder package version. var packageInfo = PackageInfo.FindForAssetPath("Packages/" + BuilderConstants.BuilderPackageName); if (packageInfo == null) { m_BuilderPackageVersion = null; } else { m_BuilderPackageVersion = packageInfo.version; } RegisterCallback <AttachToPanelEvent>(RegisterCallbacks); }
public BuilderToolbar( BuilderPaneWindow paneWindow, BuilderSelection selection, BuilderViewport viewport, BuilderExplorer explorer, BuilderLibrary library, BuilderInspector inspector, BuilderTooltipPreview tooltipPreview) { m_PaneWindow = paneWindow; m_Selection = selection; m_Viewport = viewport; m_Explorer = explorer; m_Library = library; m_Inspector = inspector; m_TooltipPreview = tooltipPreview; var template = BuilderPackageUtilities.LoadAssetAtPath <VisualTreeAsset>( BuilderConstants.UIBuilderPackagePath + "/BuilderToolbar.uxml"); template.CloneTree(this); #if !UNITY_2019_4 && !UNITY_2020_1 m_ThemeManager = new ThemeStyleSheetManager(this); m_ThemeManager.selection = m_Selection; m_ThemeManager.themeFilesChanged += UpdateCanvasThemeMenuStatus; #else m_ThemeManager = null; #endif // File Menu m_FileMenu = this.Q <ToolbarMenu>("file-menu"); SetUpFileMenu(); // Zoom Menu m_ZoomMenu = this.Q <ToolbarMenu>("zoom-menu"); SetUpZoomMenu(); // Fit canvas m_FitCanvasButton = this.Q <ToolbarButton>(FitCanvasButtonName); m_FitCanvasButton.clickable.clicked += () => m_Viewport.FitCanvas(); // Preview Button var previewButton = this.Q <ToolbarToggle>(PreviewToggleName); previewButton.RegisterValueChangedCallback(TogglePreviewMode); m_CanvasThemeMenu = this.Q <ToolbarMenu>("canvas-theme-menu"); SetUpCanvasThemeMenu(); ChangeCanvasTheme(document.currentCanvasTheme, document.currentCanvasThemeStyleSheet); UpdateCanvasThemeMenuStatus(); SetViewportSubTitle(); // Track unsaved changes state change. SetCanvasTitle(); m_SettingsMenu = this.Q <ToolbarMenu>("settings-menu"); SetupSettingsMenu(); // Breadcrumbs & BreadCrumbs Toolbar m_BreadcrumbsToolbar = this.Q <Toolbar>(BreadcrumbsToolbarName); m_Breadcrumbs = this.Q <ToolbarBreadcrumbs>(BreadcrumbsName); SetToolbarBreadCrumbs(); // Get Builder package version. var packageInfo = PackageInfo.FindForAssetPath("Packages/" + BuilderConstants.BuilderPackageName); if (packageInfo == null) { m_BuilderPackageVersion = null; } else { m_BuilderPackageVersion = packageInfo.version; } RegisterCallback <AttachToPanelEvent>(RegisterCallbacks); }
public BuilderToolbar( BuilderPaneWindow paneWindow, BuilderSelection selection, BuilderViewport viewport, BuilderExplorer explorer, BuilderLibrary library, BuilderInspector inspector, BuilderTooltipPreview tooltipPreview) { m_PaneWindow = paneWindow; m_Selection = selection; m_Viewport = viewport; m_Explorer = explorer; m_Library = library; m_Inspector = inspector; m_TooltipPreview = tooltipPreview; var template = BuilderPackageUtilities.LoadAssetAtPath <VisualTreeAsset>( BuilderConstants.UIBuilderPackagePath + "/BuilderToolbar.uxml"); template.CloneTree(this); m_ThemeManager = new ThemeStyleSheetManager(this); m_ThemeManager.selection = m_Selection; m_ThemeManager.themeFilesChanged += UpdateCanvasThemeMenuStatus; // File Menu m_FileMenu = this.Q <ToolbarMenu>("file-menu"); SetUpFileMenu(); // Zoom Menu m_ZoomMenu = this.Q <ToolbarMenu>("zoom-menu"); SetUpZoomMenu(); // Fit canvas m_FitCanvasButton = this.Q <ToolbarButton>(FitCanvasButtonName); m_FitCanvasButton.clickable.clicked += () => m_Viewport.FitCanvas(); // Preview Button var previewButton = this.Q <ToolbarToggle>(PreviewToggleName); previewButton.RegisterValueChangedCallback(TogglePreviewMode); m_Viewport.SetPreviewMode(false); m_CanvasThemeMenu = this.Q <ToolbarMenu>("canvas-theme-menu"); SetUpCanvasThemeMenu(); var currentTheme = document.currentCanvasTheme; var currentThemeSheet = document.currentCanvasThemeStyleSheet; // If the canvas theme is the obsolete Runtime enum then search for the unity default runtime theme in the current project. // Otherwise, fallback to the current editor theme if (currentTheme == BuilderDocument.CanvasTheme.Runtime) { var defaultTssAsset = EditorGUIUtility.Load(ThemeRegistry.kUnityRuntimeThemePath) as ThemeStyleSheet; if (defaultTssAsset != null) { currentTheme = BuilderDocument.CanvasTheme.Custom; currentThemeSheet = defaultTssAsset; } else { currentTheme = BuilderDocument.CanvasTheme.Default; } } ChangeCanvasTheme(currentTheme, currentThemeSheet); UpdateCanvasThemeMenuStatus(); SetViewportSubTitle(); // Track unsaved changes state change. UpdateHasUnsavedChanges(); m_SettingsMenu = this.Q <ToolbarMenu>("settings-menu"); SetupSettingsMenu(); // Breadcrumbs & BreadCrumbs Toolbar m_BreadcrumbsToolbar = this.Q <Toolbar>(BreadcrumbsToolbarName); m_Breadcrumbs = this.Q <ToolbarBreadcrumbs>(BreadcrumbsName); SetToolbarBreadCrumbs(); // Get Builder package version. var packageInfo = PackageInfo.FindForAssetPath("Packages/" + BuilderConstants.BuilderPackageName); if (packageInfo == null) { m_BuilderPackageVersion = null; } else { m_BuilderPackageVersion = packageInfo.version; } RegisterCallback <AttachToPanelEvent>(RegisterCallbacks); }
public BuilderToolbar( BuilderPaneWindow paneWindow, BuilderSelection selection, BuilderViewport viewport, BuilderExplorer explorer, BuilderLibrary library, BuilderInspector inspector, BuilderTooltipPreview tooltipPreview) { m_PaneWindow = paneWindow; m_Selection = selection; m_Viewport = viewport; m_Explorer = explorer; m_Library = library; m_Inspector = inspector; m_TooltipPreview = tooltipPreview; var template = BuilderPackageUtilities.LoadAssetAtPath <VisualTreeAsset>( BuilderConstants.UIBuilderPackagePath + "/BuilderToolbar.uxml"); template.CloneTree(this); m_ThemeManager = new ThemeStyleSheetManager(this); m_ThemeManager.selection = m_Selection; m_ThemeManager.themeFilesChanged += UpdateCanvasThemeMenuStatus; // File Menu m_FileMenu = this.Q <ToolbarMenu>("file-menu"); SetUpFileMenu(); // Zoom Menu m_ZoomMenu = this.Q <ToolbarMenu>("zoom-menu"); SetUpZoomMenu(); // Fit canvas m_FitCanvasButton = this.Q <ToolbarButton>(FitCanvasButtonName); m_FitCanvasButton.clickable.clicked += () => m_Viewport.FitCanvas(); // Preview Button var previewButton = this.Q <ToolbarToggle>(PreviewToggleName); previewButton.RegisterValueChangedCallback(TogglePreviewMode); m_Viewport.SetPreviewMode(false); m_CanvasThemeMenu = this.Q <ToolbarMenu>("canvas-theme-menu"); InitCanvasTheme(); SetViewportSubTitle(); // Track unsaved changes state change. UpdateHasUnsavedChanges(); m_SettingsMenu = this.Q <ToolbarMenu>("settings-menu"); SetupSettingsMenu(); // Breadcrumbs & BreadCrumbs Toolbar m_BreadcrumbsToolbar = this.Q <Toolbar>(BreadcrumbsToolbarName); m_Breadcrumbs = this.Q <ToolbarBreadcrumbs>(BreadcrumbsName); SetToolbarBreadCrumbs(); RegisterCallback <AttachToPanelEvent>(RegisterCallbacks); }