| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- using System.Collections.Generic;
- using UnityEditor;
- using UnityEngine;
- using Codice.Client.BaseCommands;
- using Codice.CM.Common;
- using PlasticGui;
- using PlasticGui.WorkspaceWindow.PendingChanges;
- using Unity.PlasticSCM.Editor.UI;
- namespace Unity.PlasticSCM.Editor.Views.PendingChanges.Dialogs
- {
- internal class DependenciesDialog : PlasticDialog
- {
- protected override Rect DefaultRect
- {
- get
- {
- var baseRect = base.DefaultRect;
- return new Rect(baseRect.x, baseRect.y, 650, 430);
- }
- }
- internal static bool IncludeDependencies(
- WorkspaceInfo wkInfo,
- IList<ChangeDependencies<ChangeInfo>> changesDependencies,
- string operation,
- EditorWindow parentWindow)
- {
- DependenciesDialog dialog = Create(wkInfo, changesDependencies, operation);
- return dialog.RunModal(parentWindow) == ResponseType.Ok;
- }
- protected override void OnModalGUI()
- {
- using (new EditorGUILayout.HorizontalScope())
- {
- Title(PlasticLocalization.GetString(
- PlasticLocalization.Name.DependenciesDialogTitle));
- }
- Paragraph(PlasticLocalization.GetString(
- PlasticLocalization.Name.DependenciesExplanation, mOperation));
- Title(PlasticLocalization.GetString(PlasticLocalization.Name.ItemColumn));
- Rect scrollWidth = GUILayoutUtility.GetRect(0, position.width, 1, 1);
- GUI.DrawTexture(
- new Rect(scrollWidth.x, scrollWidth.y, scrollWidth.width, 200),
- Texture2D.whiteTexture);
- DoDependenciesArea();
- GUILayout.Space(20);
- DoButtonsArea();
- }
- protected override string GetTitle()
- {
- return PlasticLocalization.GetString(
- PlasticLocalization.Name.DependenciesDialogTitle);
- }
- void DoDependenciesArea()
- {
- // NOTE(rafa): We cannot use a tree view here because it misbehaves with the way we create the modals
- mScrollPosition = EditorGUILayout.BeginScrollView(mScrollPosition, GUILayout.Height(200));
- for (int i = 0; i < mChangesDependencies.Count; i++)
- {
- var dependant = mChangesDependencies[i];
- bool isExpanded = mExpandedDependencies[i];
- isExpanded = EditorGUILayout.Foldout(
- isExpanded,
- ChangeInfoView.GetPathDescription(
- mWkInfo.ClientPath, dependant.Change),
- UnityStyles.Dialog.Foldout);
- mExpandedDependencies[i] = isExpanded;
- if (isExpanded)
- {
- for (int j = 0; j < dependant.Dependencies.Count; j++)
- {
- using (new EditorGUILayout.HorizontalScope())
- {
- GUILayout.Space(20);
- GUILayout.Label(
- ChangeInfoView.GetPathDescription(
- mWkInfo.ClientPath, dependant.Dependencies[j]),
- UnityStyles.Paragraph);
- }
- }
- }
- }
- EditorGUILayout.EndScrollView();
- }
- void DoButtonsArea()
- {
- using (new EditorGUILayout.HorizontalScope())
- {
- GUILayout.FlexibleSpace();
- if (Application.platform == RuntimePlatform.WindowsEditor)
- {
- DoOkButton();
- DoCancelButton();
- return;
- }
- DoCancelButton();
- DoOkButton();
- }
- }
- void DoOkButton()
- {
- if (!AcceptButton(mOperation))
- return;
- OkButtonAction();
- }
- void DoCancelButton()
- {
- if (!NormalButton(PlasticLocalization.GetString(
- PlasticLocalization.Name.CancelButton)))
- return;
- CancelButtonAction();
- }
- static DependenciesDialog Create(
- WorkspaceInfo wkInfo,
- IList<ChangeDependencies<ChangeInfo>> changesDependencies,
- string operation)
- {
- var instance = CreateInstance<DependenciesDialog>();
- instance.mWkInfo = wkInfo;
- instance.mChangesDependencies = changesDependencies;
- instance.mOperation = operation;
- instance.mEnterKeyAction = instance.OkButtonAction;
- instance.mEscapeKeyAction = instance.CancelButtonAction;
- instance.mExpandedDependencies = new bool[changesDependencies.Count];
- for (int i = 0; i < changesDependencies.Count; i++)
- instance.mExpandedDependencies[i] = true;
- return instance;
- }
- bool[] mExpandedDependencies;
- Vector2 mScrollPosition;
- string mOperation;
- IList<ChangeDependencies<ChangeInfo>> mChangesDependencies;
- WorkspaceInfo mWkInfo;
- }
- }
|