internal static void ForMode( bool isGluonMode, PlasticGUIClient plasticClient, TreeView changesTreeView, EditorWindow editorWindow) { GUI.enabled = !plasticClient.IsOperationInProgress(); EditorGUI.BeginChangeCheck(); GuiMode currentMode = isGluonMode ? GuiMode.GluonMode : GuiMode.DeveloperMode; GuiMode selectedMode = (GuiMode)EditorGUILayout.EnumPopup( currentMode, EditorStyles.toolbarDropDown, GUILayout.Width(100)); if (EditorGUI.EndChangeCheck()) { SwitchGuiModeIfUserWants( plasticClient, currentMode, selectedMode, changesTreeView, editorWindow); } GUI.enabled = true; }
static void SwitchGuiModeIfUserWants( PlasticGUIClient plasticClient, GuiMode currentMode, GuiMode selectedMode, TreeView changesTreeView, EditorWindow editorWindow) { if (currentMode == selectedMode) { return; } bool userConfirmed = SwitchModeConfirmationDialog.SwitchMode( currentMode == GuiMode.GluonMode, editorWindow); if (!userConfirmed) { return; } bool isGluonMode = selectedMode == GuiMode.GluonMode; LaunchOperation.UpdateWorkspaceForMode( isGluonMode, plasticClient); PendingChangesTreeHeaderState.SetMode( changesTreeView.multiColumnHeader.state, isGluonMode); }
static void DoActionButton( WorkspaceInfo workspaceInfo, PlasticGUIClient plasticClient, IMergeViewLauncher mergeViewLauncher, IGluonViewSwitcher gluonSwitcher, bool isGluonMode, bool isUpdateAction, GUIContent buttonContent, GUIStyle buttonStyle) { if (!GUILayout.Button( buttonContent, buttonStyle, GUILayout.ExpandHeight(true), GUILayout.MinWidth(40))) { return; } if (isUpdateAction) { plasticClient.UpdateWorkspace(); return; } ShowIncomingChangesForMode( workspaceInfo, mergeViewLauncher, gluonSwitcher, isGluonMode); }
static void DoHeader( WorkspaceInfo workspaceInfo, PlasticGUIClient plasticClient, IMergeViewLauncher mergeViewLauncher, IGluonViewSwitcher gluonSwitcher, bool isGluonMode, IIncomingChangesNotificationPanel incomingChangesNotificationPanel) { EditorGUILayout.BeginHorizontal(EditorStyles.toolbar); GUILayout.Label( plasticClient.HeaderTitle, UnityStyles.PlasticWindow.HeaderTitleLabel); GUILayout.FlexibleSpace(); DrawIncomingChangesNotificationPanel.ForMode( workspaceInfo, plasticClient, mergeViewLauncher, gluonSwitcher, isGluonMode, incomingChangesNotificationPanel.IsVisible, incomingChangesNotificationPanel.Data); //TODO: Codice - beta: hide the switcher until the update dialog is implemented //DrawGuiModeSwitcher.ForMode( // isGluonMode, plasticClient, changesTreeView, editorWindow); EditorGUILayout.EndHorizontal(); }
static void DoTabToolbar( WorkspaceInfo workspaceInfo, PlasticGUIClient plasticClient, ViewSwitcher viewSwitcher, bool isGluonMode) { EditorGUILayout.BeginHorizontal(EditorStyles.toolbar); viewSwitcher.TabButtonsGUI(); GUILayout.FlexibleSpace(); DoLaunchButtons(workspaceInfo, isGluonMode); EditorGUILayout.EndHorizontal(); }
internal static void ForMode( WorkspaceInfo workspaceInfo, PlasticGUIClient plasticClient, IMergeViewLauncher mergeViewLauncher, IGluonViewSwitcher gluonSwitcher, bool isGluonMode, bool isVisible, NotificationPanelData notificationPanelData) { if (!isVisible) { return; } GUIContent labelContent = new GUIContent( notificationPanelData.InfoText, notificationPanelData.TooltipText); GUIContent buttonContent = new GUIContent( notificationPanelData.ActionText, notificationPanelData.TooltipText); float panelWidth = GetPanelWidth( labelContent, buttonContent, UnityStyles.Notification.Label, EditorStyles.miniButton); EditorGUILayout.BeginHorizontal( GetStyle(notificationPanelData.NotificationStyle), GUILayout.Width(panelWidth)); GUILayout.Label(labelContent, UnityStyles.Notification.Label); DoActionButton( workspaceInfo, plasticClient, mergeViewLauncher, gluonSwitcher, isGluonMode, notificationPanelData.HasUpdateAction, buttonContent, EditorStyles.miniButton); EditorGUILayout.EndHorizontal(); }
void InitializePlastic() { if (mForceToOpen) { mForceToOpen = false; return; } try { if (UnityConfigurationChecker.NeedsConfiguration()) { return; } mWkInfo = FindWorkspace.InfoForApplicationPath( Application.dataPath, mPlasticAPI); if (mWkInfo == null) { AssetMenuItems.Disable(); return; } // SetupCloudProjectId.ForWorkspace(mWkInfo, mPlasticAPI); DisableVCSIfEnabled(mWkInfo.ClientPath); mIsGluonMode = mPlasticAPI.IsGluonWorkspace(mWkInfo); IAssetStatusCache assetStatusCache = new AssetStatusCache( mWkInfo, mIsGluonMode, RepaintProjectWindow); AssetsProcessors.Enable( mPlasticAPI, assetStatusCache); mPingEventLoop.SetWorkspace(mWkInfo); mEventSenderRestApi.SetToken(BuildToken.FromServerProfile( ClientConfig.Get().GetDefaultProfile())); InitializeNewIncomingChanges(mWkInfo, mIsGluonMode); ViewHost viewHost = new ViewHost(); PlasticGui.WorkspaceWindow.PendingChanges.PendingChanges pendingChanges = new PlasticGui.WorkspaceWindow.PendingChanges.PendingChanges(mWkInfo); mViewSwitcher = new ViewSwitcher( mWkInfo, viewHost, mIsGluonMode, pendingChanges, mDeveloperNewIncomingChangesUpdater, mGluonNewIncomingChangesUpdater, mIncomingChangesNotificationPanel, assetStatusCache, this); mPlasticClient = new PlasticGUIClient( mWkInfo, mViewSwitcher, mViewSwitcher, viewHost, pendingChanges, mDeveloperNewIncomingChangesUpdater, mGluonNewIncomingChangesUpdater, this, new UnityPlasticGuiMessage(this)); mViewSwitcher.SetPlasticGUIClient(mPlasticClient); mViewSwitcher.ShowInitialView(); UnityStyles.Initialize(Repaint); AssetOperations.IAssetSelection inspectorAssetSelection = new InspectorAssetSelection(); AssetOperations.IAssetSelection projectViewAssetSelection = new ProjectViewAssetSelection(); AssetOperations inspectorAssetOperations = new AssetOperations( mWkInfo, mPlasticClient, mViewSwitcher, mViewSwitcher, viewHost, mDeveloperNewIncomingChangesUpdater, assetStatusCache, mViewSwitcher, mViewSwitcher, this, inspectorAssetSelection, mIsGluonMode); AssetOperations projectViewAssetOperations = new AssetOperations( mWkInfo, mPlasticClient, mViewSwitcher, mViewSwitcher, viewHost, mDeveloperNewIncomingChangesUpdater, assetStatusCache, mViewSwitcher, mViewSwitcher, this, projectViewAssetSelection, mIsGluonMode); AssetMenuItems.Enable( projectViewAssetOperations, assetStatusCache, projectViewAssetSelection); DrawInspectorOperations.Enable( inspectorAssetOperations, assetStatusCache, inspectorAssetSelection); DrawAssetOverlay.Initialize( assetStatusCache, RepaintProjectWindow); AutoCommitOperation.SetPlasticGUIClient(mPlasticClient); mLastUpdateTime = EditorApplication.timeSinceStartup; } catch (Exception ex) { mException = ex; ExceptionsHandler.HandleException("InitializePlastic", ex); } }
internal void SetPlasticGUIClient(PlasticGUIClient plasticClient) { mPlasticClient = plasticClient; }
void InitializePlastic() { if (mForceToOpen) { mForceToOpen = false; return; } try { if (UnityConfigurationChecker.NeedsConfiguration()) { return; } mWkInfo = FindWorkspace.InfoForApplicationPath( Application.dataPath, mPlasticAPI); if (mWkInfo == null) { AssetMenuItems.Disable(); return; } MonoFileSystemWatcher.IsEnabled = true; SetupCloudProjectIdIfNeeded(mWkInfo, mPlasticAPI); DisableVCSIfEnabled(mWkInfo.ClientPath); mIsGluonMode = mPlasticAPI.IsGluonWorkspace(mWkInfo); IAssetStatusCache assetStatusCache = new AssetStatusCache( mWkInfo, mIsGluonMode, RepaintProjectWindow); AssetsProcessors.Enable( mPlasticAPI, assetStatusCache); if (mEventSenderScheduler != null) { mPingEventLoop.SetWorkspace(mWkInfo); ((IPlasticWebRestApi)mPlasticWebRestApi).SetToken( CmConnection.Get().BuildWebApiTokenForCloudEditionDefaultUser()); } InitializeNewIncomingChanges(mWkInfo, mIsGluonMode); ViewHost viewHost = new ViewHost(); PlasticGui.WorkspaceWindow.PendingChanges.PendingChanges pendingChanges = new PlasticGui.WorkspaceWindow.PendingChanges.PendingChanges(mWkInfo); mViewSwitcher = new ViewSwitcher( mWkInfo, viewHost, mIsGluonMode, pendingChanges, mDeveloperNewIncomingChangesUpdater, mGluonNewIncomingChangesUpdater, mIncomingChangesNotificationPanel, assetStatusCache, this); mCooldownAutoRefreshPendingChangesAction = new CooldownWindowDelayer( mViewSwitcher.AutoRefreshPendingChangesView, UnityConstants.AUTO_REFRESH_PENDING_CHANGES_DELAYED_INTERVAL); mPlasticClient = new PlasticGUIClient( mWkInfo, mViewSwitcher, mViewSwitcher, viewHost, pendingChanges, mDeveloperNewIncomingChangesUpdater, mGluonNewIncomingChangesUpdater, this, new UnityPlasticGuiMessage(this)); mViewSwitcher.SetPlasticGUIClient(mPlasticClient); mViewSwitcher.ShowInitialView(); UnityStyles.Initialize(Repaint); AssetOperations.IAssetSelection inspectorAssetSelection = new InspectorAssetSelection(); AssetOperations.IAssetSelection projectViewAssetSelection = new ProjectViewAssetSelection(); AssetOperations inspectorAssetOperations = new AssetOperations( mWkInfo, mPlasticClient, mViewSwitcher, mViewSwitcher, viewHost, mDeveloperNewIncomingChangesUpdater, assetStatusCache, mViewSwitcher, mViewSwitcher, this, inspectorAssetSelection, mIsGluonMode); AssetOperations projectViewAssetOperations = new AssetOperations( mWkInfo, mPlasticClient, mViewSwitcher, mViewSwitcher, viewHost, mDeveloperNewIncomingChangesUpdater, assetStatusCache, mViewSwitcher, mViewSwitcher, this, projectViewAssetSelection, mIsGluonMode); AssetMenuItems.Enable( projectViewAssetOperations, assetStatusCache, projectViewAssetSelection); DrawInspectorOperations.Enable( inspectorAssetOperations, assetStatusCache, inspectorAssetSelection); DrawAssetOverlay.Initialize( assetStatusCache, RepaintProjectWindow); mLastUpdateTime = EditorApplication.timeSinceStartup; } catch (Exception ex) { mException = ex; ExceptionsHandler.HandleException("InitializePlastic", ex); } }