Пример #1
0
        static void DoRadioButtonsArea(
            ref CreateWorkspaceViewState state)
        {
            EditorGUILayout.BeginVertical();
            DoLabel("How do you prefer to work?");

            if (DoRadioButton(
                    "I need branching, merging and the ability to push/pull (Plastic workspace)",
                    state.WorkspaceMode == CreateWorkspaceViewState.WorkspaceModes.Developer,
                    !state.ProgressData.IsOperationRunning,
                    RADIO_BUTTON_MARGIN))
            {
                state.WorkspaceMode = CreateWorkspaceViewState.WorkspaceModes.Developer;
            }

            if (DoRadioButton(
                    "I simply need to checkin my work (Gluon workspace)",
                    state.WorkspaceMode == CreateWorkspaceViewState.WorkspaceModes.Gluon,
                    !state.ProgressData.IsOperationRunning,
                    RADIO_BUTTON_MARGIN))
            {
                state.WorkspaceMode = CreateWorkspaceViewState.WorkspaceModes.Gluon;
            }

            EditorGUILayout.EndVertical();
        }
Пример #2
0
        internal static void ForState(
            Action <RepositoryCreationData> createRepositoryAction,
            Action <CreateWorkspaceViewState> createWorkspaceAction,
            EditorWindow parentWindow,
            string defaultServer,
            ref CreateWorkspaceViewState state)
        {
            DoTitle();

            GUILayout.Space(15);

            DoFieldsArea(
                createRepositoryAction,
                parentWindow,
                defaultServer,
                ref state);

            GUILayout.Space(10);

            DoRadioButtonsArea(ref state);

            GUILayout.Space(3);

            DoHelpLabel();

            GUILayout.Space(10);

            DoCreateWorkspaceButton(
                createWorkspaceAction,
                ref state);

            GUILayout.Space(5);

            DoNotificationArea(state.ProgressData);
        }
Пример #3
0
        static void DoCreateWorkspaceButton(
            Action <CreateWorkspaceViewState> createWorkspaceAction,
            ref CreateWorkspaceViewState state)
        {
            EditorGUILayout.BeginHorizontal();

            bool isButtonEnabled =
                IsValidState(state) &&
                !state.ProgressData.IsOperationRunning;

            string buttonText = PlasticLocalization.GetString(
                PlasticLocalization.Name.CreateWorkspace);

            bool isButtonClicked = DoButton(buttonText, isButtonEnabled,
                                            CREATE_WORKSPACE_BUTTON_MARGIN, CREATE_WORKSPACE_BUTTON_WIDTH);

            GUI.enabled = true;

            if (state.ProgressData.IsOperationRunning)
            {
                DoProgress(state.ProgressData,
                           CREATE_WORKSPACE_BUTTON_MARGIN +
                           PROGRESS_MARGIN +
                           CREATE_WORKSPACE_BUTTON_WIDTH);
            }

            EditorGUILayout.EndHorizontal();

            if (isButtonClicked)
            {
                createWorkspaceAction(state);
            }
        }
Пример #4
0
        static void DoRadioButtonsArea(
            ref CreateWorkspaceViewState state)
        {
            EditorGUILayout.BeginVertical();
            DoLabel(
                PlasticLocalization.GetString(PlasticLocalization.Name.WorkPreferenceQuestion));

            if (DoRadioButton(
                    PlasticLocalization.GetString(PlasticLocalization.Name.WorkPreferenceAnswerPlastic),
                    state.WorkspaceMode == CreateWorkspaceViewState.WorkspaceModes.Developer,
                    !state.ProgressData.IsOperationRunning,
                    RADIO_BUTTON_MARGIN))
            {
                state.WorkspaceMode = CreateWorkspaceViewState.WorkspaceModes.Developer;
            }

            if (DoRadioButton(
                    PlasticLocalization.GetString(PlasticLocalization.Name.WorkPreferenceAnswerGluon),
                    state.WorkspaceMode == CreateWorkspaceViewState.WorkspaceModes.Gluon,
                    !state.ProgressData.IsOperationRunning,
                    RADIO_BUTTON_MARGIN))
            {
                state.WorkspaceMode = CreateWorkspaceViewState.WorkspaceModes.Gluon;
            }

            EditorGUILayout.EndVertical();
        }
Пример #5
0
        static void DoWorkspaceField(
            ref CreateWorkspaceViewState state)
        {
            EditorGUILayout.BeginHorizontal();

            DoLabel(
                PlasticLocalization.GetString(PlasticLocalization.Name.WorkspaceName));

            state.WorkspaceName = DoTextField(
                state.WorkspaceName,
                !state.ProgressData.IsOperationRunning,
                LABEL_WIDTH,
                TEXTBOX_WIDTH - BROWSE_BUTTON_WIDTH);

            ValidationResult validationResult = ValidateWorkspaceName(
                state.WorkspaceName);

            if (!validationResult.IsValid)
            {
                DoWarningLabel(validationResult.ErrorMessage,
                               LABEL_WIDTH + TEXTBOX_WIDTH - BROWSE_BUTTON_WIDTH + LABEL_MARGIN);
            }

            EditorGUILayout.EndHorizontal();
        }
Пример #6
0
 static WorkspaceCreationData BuildCreationDataFromState(
     CreateWorkspaceViewState state,
     string workspacePath)
 {
     return(new WorkspaceCreationData(
                state.WorkspaceName,
                workspacePath,
                state.RepositoryName,
                state.WorkspaceMode == CreateWorkspaceViewState.WorkspaceModes.Gluon,
                false));
 }
Пример #7
0
        void ValidateAndCreateWorkspace(
            CreateWorkspaceViewState state)
        {
            mWkCreationData = BuildCreationDataFromState(
                state, mWorkspacePath);

            WorkspaceCreationValidation.AsyncValidation(
                mWkCreationData, this, mProgressControls);
            // validation calls IPlasticDialogCloser.CloseDialog()
            // when the validation is ok
        }
Пример #8
0
        static void DoFieldsArea(
            Action <RepositoryCreationData> createRepositoryAction,
            EditorWindow parentWindow,
            string defaultServer,
            ref CreateWorkspaceViewState state)
        {
            DoRepositoryField(
                createRepositoryAction,
                parentWindow,
                defaultServer,
                ref state);

            DoWorkspaceField(ref state);
        }
Пример #9
0
        static bool IsValidState(
            CreateWorkspaceViewState state)
        {
            if (!ValidateRepositoryName(state.RepositoryName).IsValid)
            {
                return(false);
            }

            if (!ValidateWorkspaceName(state.WorkspaceName).IsValid)
            {
                return(false);
            }

            return(true);
        }
Пример #10
0
        static void DoBrowseRepositoryButton(
            EditorWindow parentWindow,
            string defaultServer,
            ref CreateWorkspaceViewState state)
        {
            string result = RepositoryExplorerDialog.BrowseRepository(
                parentWindow, defaultServer);

            if (string.IsNullOrEmpty(result))
            {
                return;
            }

            state.RepositoryName = result;
        }
Пример #11
0
        internal CreateWorkspaceView(
            EditorWindow parentWindow,
            ICreateWorkspaceListener listener,
            PlasticAPI plasticApi,
            string workspacePath)
        {
            mParentWindow            = parentWindow;
            mCreateWorkspaceListener = listener;
            mWorkspacePath           = workspacePath;

            mProgressControls     = new ProgressControlsForViews();
            mWorkspaceOperations  = new WorkspaceOperations(this, mProgressControls);
            mCreateWorkspaceState = CreateWorkspaceViewState.BuildForProjectDefaults();

            Initialize(plasticApi);
        }
Пример #12
0
        static void OnRepositoryChanged(
            CreateWorkspaceDialogUserAssistant dialogUserAssistant,
            CreateWorkspaceViewState createWorkspaceState,
            string workspacePath)
        {
            if (dialogUserAssistant == null)
            {
                return;
            }

            dialogUserAssistant.RepositoryChanged(
                createWorkspaceState.RepositoryName,
                createWorkspaceState.WorkspaceName,
                workspacePath);

            createWorkspaceState.WorkspaceName =
                dialogUserAssistant.GetProposedWorkspaceName();
        }
Пример #13
0
        static void DoCreateWorkspaceButton(
            Action <CreateWorkspaceViewState> createWorkspaceAction,
            ref CreateWorkspaceViewState state)
        {
            EditorGUILayout.BeginHorizontal();

            bool isButtonEnabled =
                IsValidState(state) &&
                !state.ProgressData.IsOperationRunning;

            if (DoButton("Create workspace", isButtonEnabled,
                         CREATE_WORKSPACE_BUTTON_MARGIN, CREATE_WORKSPACE_BUTTON_WIDTH))
            {
                createWorkspaceAction(state);
                return;
            }

            GUI.enabled = true;

            EditorGUILayout.EndHorizontal();
        }
Пример #14
0
        static void DoRepositoryField(
            Action <RepositoryCreationData> createRepositoryAction,
            EditorWindow parentWindow,
            string defaultServer,
            ref CreateWorkspaceViewState state)
        {
            EditorGUILayout.BeginHorizontal();

            DoLabel("Repository name");

            state.RepositoryName = DoTextField(
                state.RepositoryName,
                !state.ProgressData.IsOperationRunning,
                LABEL_WIDTH,
                TEXTBOX_WIDTH - BROWSE_BUTTON_WIDTH);

            float browseButtonX =
                LABEL_WIDTH + TEXTBOX_WIDTH + BUTTON_MARGIN -
                BROWSE_BUTTON_WIDTH;
            float browseButtonWidth =
                BROWSE_BUTTON_WIDTH - BUTTON_MARGIN;

            if (DoButton(
                    "...",
                    !state.ProgressData.IsOperationRunning,
                    browseButtonX,
                    browseButtonWidth))
            {
                DoBrowseRepositoryButton(
                    parentWindow,
                    defaultServer,
                    ref state);
                EditorGUIUtility.ExitGUI();
            }

            float newButtonX =
                LABEL_WIDTH + TEXTBOX_WIDTH + BUTTON_MARGIN;
            float newButtonWidth =
                NEW_BUTTON_WIDTH - BUTTON_MARGIN;

            if (DoButton(
                    "New",
                    !state.ProgressData.IsOperationRunning,
                    newButtonX, newButtonWidth))
            {
                DoNewRepositoryButton(
                    createRepositoryAction,
                    parentWindow,
                    state.RepositoryName,
                    defaultServer);
                EditorGUIUtility.ExitGUI();
            }

            ValidationResult validationResult = ValidateRepositoryName(
                state.RepositoryName);

            if (!validationResult.IsValid)
            {
                DoWarningLabel(validationResult.ErrorMessage,
                               LABEL_WIDTH + TEXTBOX_WIDTH + NEW_BUTTON_WIDTH + LABEL_MARGIN);
            }

            EditorGUILayout.EndHorizontal();
        }