A game about forced loneliness, made by TACStudios
1using UnityEditor;
2using UnityEditor.IMGUI.Controls;
3using UnityEngine;
4
5using Unity.PlasticSCM.Editor.Views.PendingChanges;
6
7namespace Unity.PlasticSCM.Editor
8{
9 internal static class DrawGuiModeSwitcher
10 {
11 internal static void ForMode(
12 bool isGluonMode,
13 WorkspaceWindow workspaceWindow,
14 TreeView changesTreeView,
15 EditorWindow editorWindow)
16 {
17 GUI.enabled = !workspaceWindow.IsOperationInProgress();
18
19 EditorGUI.BeginChangeCheck();
20
21 GuiMode currentMode = isGluonMode ?
22 GuiMode.GluonMode : GuiMode.DeveloperMode;
23
24 GuiMode selectedMode = (GuiMode)EditorGUILayout.EnumPopup(
25 currentMode,
26 EditorStyles.toolbarDropDown,
27 GUILayout.Width(100));
28
29 if (EditorGUI.EndChangeCheck())
30 {
31 SwitchGuiModeIfUserWants(
32 workspaceWindow, currentMode, selectedMode,
33 changesTreeView, editorWindow);
34 }
35
36 GUI.enabled = true;
37 }
38
39 static void SwitchGuiModeIfUserWants(
40 WorkspaceWindow workspaceWindow,
41 GuiMode currentMode, GuiMode selectedMode,
42 TreeView changesTreeView,
43 EditorWindow editorWindow)
44 {
45 if (currentMode == selectedMode)
46 return;
47
48 bool userConfirmed = SwitchModeConfirmationDialog.SwitchMode(
49 currentMode == GuiMode.GluonMode, editorWindow);
50
51 if (!userConfirmed)
52 return;
53
54 bool isGluonMode = selectedMode == GuiMode.GluonMode;
55
56 workspaceWindow.UpdateWorkspaceForMode(isGluonMode);
57
58 PendingChangesTreeHeaderState.SetMode(
59 changesTreeView.multiColumnHeader.state,
60 isGluonMode);
61 }
62
63 enum GuiMode
64 {
65 DeveloperMode,
66 GluonMode
67 }
68 }
69}