internal PlasticGUIClient( WorkspaceInfo wkInfo, ViewSwitcher switcher, IMergeViewLauncher mergeViewLauncher, ViewHost viewHost, PlasticGui.WorkspaceWindow.PendingChanges.PendingChanges pendingChanges, NewIncomingChangesUpdater developerNewIncomingChangesUpdater, GluonNewIncomingChangesUpdater gluonNewIncomingChangesUpdater, EditorWindow parentWindow, GuiMessage.IGuiMessage guiMessage) { mWkInfo = wkInfo; mSwitcher = switcher; mMergeViewLauncher = mergeViewLauncher; mViewHost = viewHost; mPendingChanges = pendingChanges; mDeveloperNewIncomingChangesUpdater = developerNewIncomingChangesUpdater; mGluonNewIncomingChangesUpdater = gluonNewIncomingChangesUpdater; mPlasticWindow = parentWindow; mGuiMessage = guiMessage; ((IWorkspaceWindow)this).UpdateTitle(); mCheckedStateManager = new CheckedStateManager(); mDeveloperProgressOperationHandler = new Developer.ProgressOperationHandler(mWkInfo, this); mGluonProgressOperationHandler = new Gluon.ProgressOperationHandler(this); }
static void ShowBranchesContextMenu( WorkspaceInfo wkInfo, ViewSwitcher viewSwitcher, bool isGluonMode) { GenericMenu menu = new GenericMenu(); string branchesListView = PlasticLocalization.GetString( PlasticLocalization.Name.Branches); menu.AddItem( new GUIContent(branchesListView), false, () => OpenBranchListViewAndSendEvent(wkInfo, viewSwitcher)); string branchExplorer = PlasticLocalization.GetString( PlasticLocalization.Name.BranchExplorerMenu); menu.AddItem( new GUIContent(branchExplorer), false, () => LaunchTool.OpenBranchExplorer(wkInfo, isGluonMode)); menu.ShowAsContext(); }
static void OpenBranchListViewAndSendEvent( WorkspaceInfo wkInfo, ViewSwitcher viewSwitcher) { viewSwitcher.ShowBranchesView(); TrackFeatureUseEvent.For( PlasticGui.Plastic.API.GetRepositorySpec(wkInfo), TrackFeatureUseEvent.Features.OpenBranchesView); }
static void DoSearchField(ViewSwitcher viewSwitcher) { if (viewSwitcher.IsViewSelected(ViewSwitcher.SelectedTab.PendingChanges)) { viewSwitcher.PendingChangesTab.DrawSearchFieldForPendingChangesTab(); } else if (viewSwitcher.IsViewSelected(ViewSwitcher.SelectedTab.Changesets)) { viewSwitcher.ChangesetsTab.DrawSearchFieldForChangesetsTab(); } else if (viewSwitcher.IsViewSelected(ViewSwitcher.SelectedTab.History)) { viewSwitcher.HistoryTab.DrawSearchFieldForHistoryTab(); } }
static void DoTabToolbar( bool isPlasticExeAvailable, WorkspaceInfo workspaceInfo, ViewSwitcher viewSwitcher, bool isGluonMode) { EditorGUILayout.BeginHorizontal(EditorStyles.toolbar); viewSwitcher.TabButtonsGUI(); GUILayout.FlexibleSpace(); DoLaunchButtons(isPlasticExeAvailable, workspaceInfo, isGluonMode); 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 WorkspaceWindow( WorkspaceInfo wkInfo, ViewHost viewHost, ViewSwitcher switcher, IMergeViewLauncher mergeViewLauncher, NewIncomingChangesUpdater developerNewIncomingChangesUpdater, EditorWindow parentWindow) { mWkInfo = wkInfo; mViewHost = viewHost; mSwitcher = switcher; mMergeViewLauncher = mergeViewLauncher; mDeveloperNewIncomingChangesUpdater = developerNewIncomingChangesUpdater; mPlasticWindow = parentWindow; mGuiMessage = new UnityPlasticGuiMessage(parentWindow); mDeveloperProgressOperationHandler = new Developer.ProgressOperationHandler(mWkInfo, this); mGluonProgressOperationHandler = new Gluon.ProgressOperationHandler(this); mOperationProgressData = new OperationProgressData(); ((IWorkspaceWindow)this).UpdateTitle(); }
static void DoLaunchButtons( bool isPlasticExeAvailable, WorkspaceInfo wkInfo, ViewSwitcher viewSwitcher, bool isGluonMode) { //TODO: Codice - beta: hide the diff button until the behavior is implemented /*GUILayout.Button(PlasticLocalization.GetString( * PlasticLocalization.Name.DiffWindowMenuItemDiff), * EditorStyles.toolbarButton, * GUILayout.Width(UnityConstants.REGULAR_BUTTON_WIDTH));*/ if (viewSwitcher.IsViewSelected(ViewSwitcher.SelectedTab.Changesets)) { viewSwitcher.ChangesetsTab.DrawDateFilter(); } if (viewSwitcher.IsViewSelected(ViewSwitcher.SelectedTab.Branches)) { viewSwitcher.BranchesTab.DrawDateFilter(); } Texture refreshIcon = Images.GetRefreshIcon(); string refreshIconTooltip = PlasticLocalization.GetString( PlasticLocalization.Name.RefreshButton); if (DrawLaunchButton(refreshIcon, refreshIconTooltip)) { viewSwitcher.RefreshSelectedView(); } if (viewSwitcher.IsViewSelected(ViewSwitcher.SelectedTab.PendingChanges)) { Texture2D icon = Images.GetImage(Images.Name.IconUndo); string tooltip = PlasticLocalization.GetString( PlasticLocalization.Name.UndoSelectedChanges); if (DrawLaunchButton(icon, tooltip)) { TrackFeatureUseEvent.For( PlasticGui.Plastic.API.GetRepositorySpec(wkInfo), TrackFeatureUseEvent.Features.UndoIconButton); viewSwitcher.PendingChangesTab.UndoForMode(wkInfo, isGluonMode); } } if (isGluonMode) { string label = PlasticLocalization.GetString(PlasticLocalization.Name.ConfigureGluon); if (DrawActionButton.For(label)) { LaunchTool.OpenWorkspaceConfiguration(wkInfo, isGluonMode); } } else { Texture2D icon = Images.GetImage(Images.Name.IconBranch); string tooltip = PlasticLocalization.GetString(PlasticLocalization.Name.Branches); if (DrawLaunchButton(icon, tooltip)) { ShowBranchesContextMenu( wkInfo, viewSwitcher, isGluonMode); } } //TODO: Add settings button tooltip localization if (DrawLaunchButton(Images.GetSettingsIcon(), string.Empty)) { ShowSettingsContextMenu( wkInfo, isGluonMode); } }
internal void InitializePlastic() { if (mForceToOpen) { mForceToOpen = false; return; } try { if (UnityConfigurationChecker.NeedsConfiguration()) { return; } mWkInfo = FindWorkspace.InfoForApplicationPath( Application.dataPath, mPlasticAPI); if (mWkInfo == null) { 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, mIncomingChangesNotifier, assetStatusCache, mStatusBar, this); mCooldownAutoRefreshPendingChangesAction = new CooldownWindowDelayer( mViewSwitcher.AutoRefreshPendingChangesView, UnityConstants.AUTO_REFRESH_PENDING_CHANGES_DELAYED_INTERVAL); mWorkspaceWindow = new WorkspaceWindow( mWkInfo, viewHost, mViewSwitcher, mViewSwitcher, mDeveloperNewIncomingChangesUpdater, this); mViewSwitcher.SetWorkspaceWindow(mWorkspaceWindow); mViewSwitcher.ShowInitialView(); UnityStyles.Initialize(Repaint); AssetOperations.IAssetSelection inspectorAssetSelection = new InspectorAssetSelection(); AssetOperations.IAssetSelection projectViewAssetSelection = new ProjectViewAssetSelection(); AssetOperations inspectorAssetOperations = new AssetOperations( mWkInfo, mWorkspaceWindow, mViewSwitcher, mViewSwitcher, viewHost, mDeveloperNewIncomingChangesUpdater, assetStatusCache, mViewSwitcher, mViewSwitcher, this, inspectorAssetSelection, mIsGluonMode); mAssetOperations = new AssetOperations( mWkInfo, mWorkspaceWindow, mViewSwitcher, mViewSwitcher, viewHost, mDeveloperNewIncomingChangesUpdater, assetStatusCache, mViewSwitcher, mViewSwitcher, this, projectViewAssetSelection, mIsGluonMode); DrawInspectorOperations.Enable( inspectorAssetOperations, assetStatusCache, inspectorAssetSelection); DrawAssetOverlay.Initialize( assetStatusCache, RepaintProjectWindow); mLastUpdateTime = EditorApplication.timeSinceStartup; mViewSwitcher.ShowBranchesViewIfNeeded(); } catch (Exception ex) { mException = ex; ExceptionsHandler.HandleException("InitializePlastic", ex); } }
static void DoLaunchButtons( bool isPlasticExeAvailable, WorkspaceInfo wkInfo, ViewSwitcher viewSwitcher, bool isGluonMode) { //TODO: Codice - beta: hide the diff button until the behavior is implemented /*GUILayout.Button(PlasticLocalization.GetString( * PlasticLocalization.Name.DiffWindowMenuItemDiff), * EditorStyles.toolbarButton, * GUILayout.Width(UnityConstants.REGULAR_BUTTON_WIDTH));*/ if (viewSwitcher.IsViewSelected(ViewSwitcher.SelectedTab.Changesets)) { viewSwitcher.ChangesetsTab.DrawDateFilter(); } var refreshIcon = Images.GetRefreshIcon(); var refreshIconTooltip = PlasticLocalization.GetString( PlasticLocalization.Name.RefreshButton); if (DrawLaunchButton(refreshIcon, refreshIconTooltip)) { viewSwitcher.RefreshSelectedView(); } if (viewSwitcher.IsViewSelected(ViewSwitcher.SelectedTab.PendingChanges)) { var icon = Images.GetImage(Images.Name.IconUndo); var tooltip = PlasticLocalization.GetString( PlasticLocalization.Name.UndoSelectedChanges); if (DrawLaunchButton(icon, tooltip)) { TrackFeatureUseEvent.For( PlasticGui.Plastic.API.GetRepositorySpec(wkInfo), TrackFeatureUseEvent.Features.UndoIconButton); viewSwitcher.PendingChangesTab.UndoForMode(wkInfo, isGluonMode); } } if (isGluonMode) { var label = PlasticLocalization.GetString(PlasticLocalization.Name.ConfigureGluon); if (DrawActionButton.For(label)) { LaunchTool.OpenWorkspaceConfiguration(wkInfo, isGluonMode); } } else { var icon = Images.GetImage(Images.Name.IconBranch); var tooltip = PlasticLocalization.GetString(PlasticLocalization.Name.BranchExplorerMenu); if (DrawLaunchButton(icon, tooltip)) { LaunchTool.OpenBranchExplorer(wkInfo, isGluonMode); } } //TODO: Add settings button tooltip localization if (DrawLaunchButton(Images.GetSettingsIcon(), string.Empty)) { GenericMenu menu = new GenericMenu(); string openToolText = isGluonMode ? PlasticLocalization.GetString(PlasticLocalization.Name.LaunchGluonButton) : PlasticLocalization.GetString(PlasticLocalization.Name.LaunchPlasticButton); menu.AddItem( new GUIContent(openToolText), false, () => LaunchTool.OpenGUIForMode(wkInfo, isGluonMode)); var plasticWindow = EditorWindow.GetWindow <PlasticWindow>(); menu.AddItem( new GUIContent( PlasticLocalization.GetString( PlasticLocalization.Name.InviteMembers)), false, InviteMemberButton_clicked, null); menu.AddSeparator(""); menu.AddItem( new GUIContent( PlasticLocalization.GetString( PlasticLocalization.Name.Options)), false, () => PendingChangesOptionsDialog.ChangeOptions(wkInfo, PlasticAssetsProcessor.mPendingChangesTab, plasticWindow)); // If the user has the simplified UI key of type .txt in the Assets folder // TODO: Remove when Simplified UI is complete if (AssetDatabase.FindAssets("simplifieduikey t:textasset", new[] { "Assets" }).Any()) { menu.AddItem(new GUIContent("Try Simplified UI"), false, TrySimplifiedUIButton_Clicked, null); } //TODO: Localization menu.AddItem( new GUIContent(processor.AssetModificationProcessor.ForceCheckout ? PlasticLocalization.GetString(PlasticLocalization.Name.DisableForcedCheckout) : PlasticLocalization.GetString(PlasticLocalization.Name.EnableForcedCheckout)), false, ForceCheckout_Clicked, null); menu.AddSeparator(""); menu.AddItem( new GUIContent( PlasticLocalization.GetString( PlasticLocalization.Name.TurnOffPlasticSCM)), false, TurnOffPlasticButton_Clicked, null); menu.ShowAsContext(); } }
internal void InitializePlastic() { if (mForceToOpen) { mForceToOpen = false; return; } try { if (UnityConfigurationChecker.NeedsConfiguration()) { return; } mWkInfo = FindWorkspace.InfoForApplicationPath( Application.dataPath, PlasticApp.PlasticAPI); if (mWkInfo == null) { return; } PlasticPlugin.EnableForWorkspace(); SetupCloudProjectIdIfNeeded(mWkInfo, PlasticApp.PlasticAPI); DisableVCSIfEnabled(mWkInfo.ClientPath); mIsGluonMode = PlasticApp.PlasticAPI.IsGluonWorkspace(mWkInfo); 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, mIncomingChangesNotifier, PlasticPlugin.AssetStatusCache, mStatusBar, this); mCooldownAutoRefreshPendingChangesAction = new CooldownWindowDelayer( mViewSwitcher.AutoRefreshPendingChangesView, UnityConstants.AUTO_REFRESH_PENDING_CHANGES_DELAYED_INTERVAL); mWorkspaceWindow = new WorkspaceWindow( mWkInfo, viewHost, mViewSwitcher, mViewSwitcher, mDeveloperNewIncomingChangesUpdater, this); mViewSwitcher.SetWorkspaceWindow(mWorkspaceWindow); mViewSwitcher.ShowInitialView(); UnityStyles.Initialize(Repaint); AssetOperations.IAssetSelection projectViewAssetSelection = new ProjectViewAssetSelection(); mAssetOperations = new AssetOperations( mWkInfo, mWorkspaceWindow, mViewSwitcher, mViewSwitcher, viewHost, mDeveloperNewIncomingChangesUpdater, PlasticPlugin.AssetStatusCache, mViewSwitcher, mViewSwitcher, this, projectViewAssetSelection, mIsGluonMode); DrawInspectorOperations.BuildOperations( mWkInfo, mWorkspaceWindow, mViewSwitcher, mViewSwitcher, viewHost, mDeveloperNewIncomingChangesUpdater, mViewSwitcher, mViewSwitcher, this, mIsGluonMode); DrawSceneOperations.Initialize( mWorkspaceWindow, viewHost, mDeveloperNewIncomingChangesUpdater, mIsGluonMode); mLastUpdateTime = EditorApplication.timeSinceStartup; mViewSwitcher.ShowBranchesViewIfNeeded(); } catch (Exception ex) { mException = ex; ExceptionsHandler.HandleException("InitializePlastic", ex); } }
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); } }