public Resizer(VisualSplitter splitView, int dir, FlexDirection orientation) { m_Orientation = orientation; m_Splitter = splitView; m_Direction = dir; activators.Add(new ManipulatorActivationFilter { button = MouseButton.LeftMouse }); m_Active = false; }
private void BuildUI() { // Keyboard events need a focusable element to trigger rootVisualElement.focusable = true; rootVisualElement.RegisterCallback <KeyUpEvent>(e => { switch (e.keyCode) { case KeyCode.Escape when !docked: Close(); break; } }); // Load stylesheets rootVisualElement.AddToClassList(Styles.unityThemeVariables); rootVisualElement.AddToClassList(Styles.sceneTemplateThemeVariables); rootVisualElement.AddStyleSheetPath(Styles.k_CommonStyleSheetPath); rootVisualElement.AddStyleSheetPath(Styles.variableStyleSheet); // Create a container to offset everything nicely inside the window { var offsetContainer = new VisualElement(); offsetContainer.AddToClassList(Styles.classOffsetContainer); rootVisualElement.Add(offsetContainer); // Create a container for the scene templates and description { var mainContainer = new VisualElement(); mainContainer.style.flexDirection = FlexDirection.Row; mainContainer.AddToClassList(Styles.classMainContainer); offsetContainer.Add(mainContainer); { // Create a container for the scene templates lists(left side) var sceneTemplatesContainer = new VisualElement(); sceneTemplatesContainer.AddToClassList(Styles.classTemplatesContainer); sceneTemplatesContainer.AddToClassList(Styles.sceneTemplateDialogBorder); // mainContainer.Add(sceneTemplatesContainer); CreateAllSceneTemplateListsUI(sceneTemplatesContainer); // Create a container for the template description (right side) var descriptionContainer = new VisualElement(); descriptionContainer.AddToClassList(Styles.classDescriptionContainer); descriptionContainer.AddToClassList(Styles.classBorder); // mainContainer.Add(descriptionContainer); CreateTemplateDescriptionUI(descriptionContainer); if (EditorPrefs.HasKey(GetKeyName(nameof(m_Splitter)))) { var splitterPosition = EditorPrefs.GetFloat(GetKeyName(nameof(m_Splitter))); sceneTemplatesContainer.style.width = splitterPosition; } else { EditorApplication.delayCall += () => { sceneTemplatesContainer.style.width = position.width * 0.60f; }; } m_Splitter = new VisualSplitter(sceneTemplatesContainer, descriptionContainer, FlexDirection.Row); mainContainer.Add(m_Splitter); } } // Create the button row { var buttonRow = new VisualElement(); buttonRow.AddToClassList(Styles.sceneTemplateDialogFooter); offsetContainer.Add(buttonRow); buttonRow.style.flexDirection = FlexDirection.Row; var loadAdditiveToggle = new Toggle() { name = k_SceneTemplateCreateAdditiveButtonName, text = L10n.Tr("Load additively"), tooltip = k_LoadAdditivelyToolTip }; if (SceneTemplateUtils.HasSceneUntitled()) { loadAdditiveToggle.SetEnabled(false); loadAdditiveToggle.tooltip = k_LoadAdditivelyToolTipDisabledHasUnsavedUntitled; } buttonRow.Add(loadAdditiveToggle); { // The buttons need to be right-aligned var buttonSection = new VisualElement(); buttonSection.style.flexDirection = FlexDirection.RowReverse; buttonSection.AddToClassList(Styles.classButtons); buttonRow.Add(buttonSection); var createSceneButton = new Button(() => { if (m_LastSelectedTemplate == null) { return; } OnCreateNewScene(m_LastSelectedTemplate); }) { text = L10n.Tr("Create"), tooltip = L10n.Tr("Instantiate a new scene from a template") }; createSceneButton.AddToClassList(Styles.classButton); var cancelButton = new Button(Close) { text = L10n.Tr("Cancel"), tooltip = L10n.Tr("Close scene template dialog without instantiating a new scene.") }; cancelButton.AddToClassList(Styles.classButton); buttonSection.Add(cancelButton); buttonSection.Add(createSceneButton); m_Buttons = new List <ButtonInfo> { new ButtonInfo { button = createSceneButton, callback = OnCreateNewScene }, new ButtonInfo { button = cancelButton, callback = info => Close() } }; m_SelectedButtonIndex = m_Buttons.FindIndex(bi => bi.button == createSceneButton); UpdateSelectedButton(); } } SetAllElementSequentiallyFocusable(rootVisualElement, false); } if (m_LastSelectedTemplate != null) { UpdateTemplateDescriptionUI(m_LastSelectedTemplate); } }