540 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			540 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
|  | using System.Collections.Generic; | ||
|  | 
 | ||
|  | using UnityEditor; | ||
|  | using UnityEditor.IMGUI.Controls; | ||
|  | using UnityEngine; | ||
|  | 
 | ||
|  | using Codice.CM.Common; | ||
|  | using GluonGui; | ||
|  | using PlasticGui; | ||
|  | using PlasticGui.WorkspaceWindow; | ||
|  | using PlasticGui.WorkspaceWindow.QueryViews; | ||
|  | using PlasticGui.WorkspaceWindow.QueryViews.Labels; | ||
|  | using PlasticGui.WorkspaceWindow.Views.QueryViews.Labels; | ||
|  | using PlasticGui.WorkspaceWindow.Update; | ||
|  | using Unity.PlasticSCM.Editor.AssetsOverlays.Cache; | ||
|  | using Unity.PlasticSCM.Editor.AssetUtils; | ||
|  | using Unity.PlasticSCM.Editor.Tool; | ||
|  | using Unity.PlasticSCM.Editor.UI; | ||
|  | using Unity.PlasticSCM.Editor.UI.Progress; | ||
|  | using Unity.PlasticSCM.Editor.UI.Tree; | ||
|  | using Unity.PlasticSCM.Editor.Views.BrowseRepository; | ||
|  | using Unity.PlasticSCM.Editor.Views.Labels.Dialogs; | ||
|  | 
 | ||
|  | using GluonIncomingChangesUpdater = PlasticGui.Gluon.WorkspaceWindow.IncomingChangesUpdater; | ||
|  | using IGluonUpdateReport = PlasticGui.Gluon.IUpdateReport; | ||
|  | 
 | ||
|  | namespace Unity.PlasticSCM.Editor.Views.Labels | ||
|  | { | ||
|  |     internal partial class LabelsTab : | ||
|  |         IRefreshableView, | ||
|  |         IQueryRefreshableView, | ||
|  |         ILabelMenuOperations, | ||
|  |         IGetQueryText, | ||
|  |         IGetFilterText, | ||
|  |         FillLabelsView.IShowContentView | ||
|  |     { | ||
|  |         internal LabelsListView Table { get { return mLabelsListView; } } | ||
|  |         internal ILabelMenuOperations Operations { get { return this; } } | ||
|  |         internal string EmptyStateMessage { get { return mEmptyStatePanel.Text; } } | ||
|  |         internal DateFilter DateFilterForTesting { set { mDateFilter = value; } } | ||
|  | 
 | ||
|  |         internal LabelsTab( | ||
|  |             WorkspaceInfo wkInfo, | ||
|  |             WorkspaceWindow workspaceWindow, | ||
|  |             IViewSwitcher viewSwitcher, | ||
|  |             IMergeViewLauncher mergeViewLauncher, | ||
|  |             ViewHost viewHost, | ||
|  |             IUpdateReport updateReport, | ||
|  |             IGluonUpdateReport gluonUpdateReport, | ||
|  |             IPendingChangesUpdater pendingChangesUpdater, | ||
|  |             IncomingChangesUpdater developerIncomingChangesUpdater, | ||
|  |             GluonIncomingChangesUpdater gluonIncomingChangesUpdater, | ||
|  |             IShelvedChangesUpdater shelvedChangesUpdater, | ||
|  |             IAssetStatusCache assetStatusCache, | ||
|  |             LaunchTool.IShowDownloadPlasticExeWindow showDownloadPlasticExeWindow, | ||
|  |             LaunchTool.IProcessExecutor processExecutor, | ||
|  |             EditorWindow parentWindow, | ||
|  |             bool isGluonMode) | ||
|  |         { | ||
|  |             mWkInfo = wkInfo; | ||
|  |             mViewHost = viewHost; | ||
|  |             mWorkspaceWindow = workspaceWindow; | ||
|  |             mShowDownloadPlasticExeWindow = showDownloadPlasticExeWindow; | ||
|  |             mProcessExecutor = processExecutor; | ||
|  |             mParentWindow = parentWindow; | ||
|  |             mIsGluonMode = isGluonMode; | ||
|  |             mGluonUpdateReport = gluonUpdateReport; | ||
|  |             mPendingChangesUpdater = pendingChangesUpdater; | ||
|  |             mGluonIncomingChangesUpdater = gluonIncomingChangesUpdater; | ||
|  |             mShelvePendingChangesQuestionerBuilder = new ShelvePendingChangesQuestionerBuilder(parentWindow); | ||
|  |             mShelvedChangesUpdater = shelvedChangesUpdater; | ||
|  |             mAssetStatusCache = assetStatusCache; | ||
|  |             mShelvePendingChangesQuestionerBuilder = | ||
|  |                 new ShelvePendingChangesQuestionerBuilder(parentWindow); | ||
|  |             mEnableSwitchAndShelveFeatureDialog = new EnableSwitchAndShelveFeature( | ||
|  |                 PlasticGui.Plastic.API.GetRepositorySpec(mWkInfo), | ||
|  |                 mParentWindow); | ||
|  |             mEmptyStatePanel = new EmptyStatePanel(parentWindow.Repaint); | ||
|  | 
 | ||
|  |             mProgressControls = new ProgressControlsForViews(); | ||
|  | 
 | ||
|  |             mFillLabelsView = new FillLabelsView( | ||
|  |                 wkInfo, | ||
|  |                 null, | ||
|  |                 null, | ||
|  |                 this, | ||
|  |                 this, | ||
|  |                 this); | ||
|  | 
 | ||
|  |             BuildComponents( | ||
|  |                 wkInfo, | ||
|  |                 workspaceWindow, | ||
|  |                 viewSwitcher, | ||
|  |                 mergeViewLauncher, | ||
|  |                 updateReport, | ||
|  |                 developerIncomingChangesUpdater, | ||
|  |                 shelvedChangesUpdater, | ||
|  |                 mShelvePendingChangesQuestionerBuilder, | ||
|  |                 mEnableSwitchAndShelveFeatureDialog, | ||
|  |                 parentWindow, | ||
|  |                 mFillLabelsView); | ||
|  | 
 | ||
|  |             mSplitterState = PlasticSplitterGUILayout.InitSplitterState( | ||
|  |                 new float[] { 0.50f, 0.50f }, | ||
|  |                 new int[] { 100, (int)UnityConstants.BROWSE_REPOSITORY_PANEL_MIN_WIDTH }, | ||
|  |                 new int[] { 100000, 100000 } | ||
|  |             ); | ||
|  | 
 | ||
|  |             mLabelOperations = new LabelOperations( | ||
|  |                 wkInfo, | ||
|  |                 workspaceWindow, | ||
|  |                 mergeViewLauncher, | ||
|  |                 this, | ||
|  |                 ViewType.LabelsView, | ||
|  |                 mProgressControls, | ||
|  |                 updateReport, | ||
|  |                 null, | ||
|  |                 new ContinueWithPendingChangesQuestionerBuilder(viewSwitcher, parentWindow), | ||
|  |                 mShelvePendingChangesQuestionerBuilder, | ||
|  |                 new ApplyShelveWithConflictsQuestionerBuilder(), | ||
|  |                 pendingChangesUpdater, | ||
|  |                 developerIncomingChangesUpdater, | ||
|  |                 shelvedChangesUpdater, | ||
|  |                 mEnableSwitchAndShelveFeatureDialog); | ||
|  | 
 | ||
|  |             RefreshAndSelect(null); | ||
|  |         } | ||
|  | 
 | ||
|  |         internal void OnEnable() | ||
|  |         { | ||
|  |             mBrowseRepositoryPanel.OnEnable(); | ||
|  | 
 | ||
|  |             mSearchField.downOrUpArrowKeyPressed += | ||
|  |                 SearchField_OnDownOrUpArrowKeyPressed; | ||
|  |         } | ||
|  | 
 | ||
|  |         internal void OnDisable() | ||
|  |         { | ||
|  |             mBrowseRepositoryPanel.OnDisable(); | ||
|  | 
 | ||
|  |             mSearchField.downOrUpArrowKeyPressed -= | ||
|  |                 SearchField_OnDownOrUpArrowKeyPressed; | ||
|  | 
 | ||
|  |             TreeHeaderSettings.Save( | ||
|  |                 mLabelsListView.multiColumnHeader.state, | ||
|  |                 UnityConstants.LABELS_TABLE_SETTINGS_NAME); | ||
|  |         } | ||
|  | 
 | ||
|  |         internal void Update() | ||
|  |         { | ||
|  |             mBrowseRepositoryPanel.Update(); | ||
|  | 
 | ||
|  |             mProgressControls.UpdateProgress(mParentWindow); | ||
|  |         } | ||
|  | 
 | ||
|  |         internal void OnGUI() | ||
|  |         { | ||
|  |             PlasticSplitterGUILayout.BeginHorizontalSplit(mSplitterState); | ||
|  | 
 | ||
|  |             DoLabelsArea( | ||
|  |                 mLabelsListView, | ||
|  |                 mEmptyStatePanel, | ||
|  |                 mProgressControls); | ||
|  | 
 | ||
|  |             DoContentBrowserArea( | ||
|  |                 mBrowseRepositoryPanel, | ||
|  |                 mProgressControls.IsOperationRunning()); | ||
|  | 
 | ||
|  |             PlasticSplitterGUILayout.EndHorizontalSplit(); | ||
|  |         } | ||
|  | 
 | ||
|  |         internal void DrawSearchFieldForTab() | ||
|  |         { | ||
|  |             DrawSearchField.For( | ||
|  |                 mSearchField, | ||
|  |                 mLabelsListView, | ||
|  |                 UnityConstants.SEARCH_FIELD_WIDTH); | ||
|  |         } | ||
|  | 
 | ||
|  |         internal void DrawDateFilter() | ||
|  |         { | ||
|  |             GUI.enabled = !mProgressControls.IsOperationRunning(); | ||
|  | 
 | ||
|  |             EditorGUI.BeginChangeCheck(); | ||
|  | 
 | ||
|  |             mDateFilter.FilterType = (DateFilter.Type) | ||
|  |                 EditorGUILayout.EnumPopup( | ||
|  |                     mDateFilter.FilterType, | ||
|  |                     EditorStyles.toolbarDropDown, | ||
|  |                     GUILayout.Width(100)); | ||
|  | 
 | ||
|  |             if (EditorGUI.EndChangeCheck()) | ||
|  |             { | ||
|  |                 EnumPopupSetting<DateFilter.Type>.Save( | ||
|  |                     mDateFilter.FilterType, | ||
|  |                     UnityConstants.LABELS_DATE_FILTER_SETTING_NAME); | ||
|  | 
 | ||
|  |                 ((IRefreshableView)this).Refresh(); | ||
|  |             } | ||
|  | 
 | ||
|  |             GUI.enabled = true; | ||
|  |         } | ||
|  | 
 | ||
|  |         internal void RefreshAndSelect(RepObjectInfo repObj) | ||
|  |         { | ||
|  |             List<object> labelsToSelect = repObj == null ? | ||
|  |                 null : new List<object> { repObj }; | ||
|  | 
 | ||
|  |             mBrowseRepositoryPanel.ClearInfo(); | ||
|  | 
 | ||
|  |             mFillLabelsView.FillView( | ||
|  |                 mLabelsListView, | ||
|  |                 mProgressControls, | ||
|  |                 null, | ||
|  |                 null, | ||
|  |                 null, | ||
|  |                 labelsToSelect); | ||
|  |         } | ||
|  | 
 | ||
|  |         void IRefreshableView.Refresh() | ||
|  |         { | ||
|  |             RefreshAndSelect(null); | ||
|  |         } | ||
|  | 
 | ||
|  |         void IQueryRefreshableView.RefreshAndSelect(RepObjectInfo repObj) | ||
|  |         { | ||
|  |             RefreshAndSelect(repObj); | ||
|  |         } | ||
|  | 
 | ||
|  |         int ILabelMenuOperations.GetSelectedLabelsCount() | ||
|  |         { | ||
|  |             return LabelsSelection.GetSelectedLabelsCount(mLabelsListView); | ||
|  |         } | ||
|  | 
 | ||
|  |         void ILabelMenuOperations.CreateLabel() | ||
|  |         { | ||
|  |             RepositorySpec repSpec = | ||
|  |                 LabelsSelection.GetSelectedRepository(mLabelsListView); | ||
|  |             MarkerExtendedInfo label = | ||
|  |                 LabelsSelection.GetSelectedLabel(mLabelsListView); | ||
|  | 
 | ||
|  |             LabelCreationData labelCreationData = CreateLabelDialog.CreateLabel( | ||
|  |                 mParentWindow, | ||
|  |                 mWkInfo, | ||
|  |                 repSpec, | ||
|  |                 label); | ||
|  | 
 | ||
|  |             mLabelOperations.CreateLabel( | ||
|  |                 labelCreationData, | ||
|  |                 RefreshAsset.BeforeLongAssetOperation, | ||
|  |                 items => RefreshAsset.AfterLongAssetOperation( | ||
|  |                     mAssetStatusCache, | ||
|  |                     ProjectPackages.ShouldBeResolvedFromUpdateReport(mWkInfo, items))); | ||
|  |         } | ||
|  | 
 | ||
|  |         void ILabelMenuOperations.ApplyLabelToWorkspace() | ||
|  |         { | ||
|  |             RepositorySpec repSpec = | ||
|  |                 LabelsSelection.GetSelectedRepository(mLabelsListView); | ||
|  |             MarkerExtendedInfo label = | ||
|  |                 LabelsSelection.GetSelectedLabel(mLabelsListView); | ||
|  | 
 | ||
|  |             mLabelOperations.ApplyLabelToWorkspace(repSpec, label); | ||
|  |         } | ||
|  | 
 | ||
|  |         void ILabelMenuOperations.SwitchToLabel() | ||
|  |         { | ||
|  |             RepositorySpec repSpec = | ||
|  |                 LabelsSelection.GetSelectedRepository(mLabelsListView); | ||
|  |             MarkerExtendedInfo label = | ||
|  |                 LabelsSelection.GetSelectedLabel(mLabelsListView); | ||
|  | 
 | ||
|  |             mLabelOperations.SwitchToLabel( | ||
|  |                 repSpec, | ||
|  |                 label, | ||
|  |                 RefreshAsset.BeforeLongAssetOperation, | ||
|  |                 items => RefreshAsset.AfterLongAssetOperation( | ||
|  |                     mAssetStatusCache, | ||
|  |                     ProjectPackages.ShouldBeResolvedFromUpdateReport(mWkInfo, items))); | ||
|  |         } | ||
|  | 
 | ||
|  |         void ILabelMenuOperations.BrowseRepositoryOnLabel() { } | ||
|  | 
 | ||
|  |         void ILabelMenuOperations.DiffWithAnotherLabel() { } | ||
|  | 
 | ||
|  |         void ILabelMenuOperations.DiffSelectedLabels() | ||
|  |         { | ||
|  |             RepositorySpec repSpec = | ||
|  |                 LabelsSelection.GetSelectedRepository(mLabelsListView); | ||
|  |             List<RepObjectInfo> selectedLabels = | ||
|  |                 LabelsSelection.GetSelectedRepObjectInfos(mLabelsListView); | ||
|  | 
 | ||
|  |             if (selectedLabels.Count < 2) | ||
|  |                 return; | ||
|  | 
 | ||
|  |             LaunchDiffOperations.DiffSelectedLabels( | ||
|  |                 mShowDownloadPlasticExeWindow, | ||
|  |                 mProcessExecutor, | ||
|  |                 repSpec, | ||
|  |                 (MarkerExtendedInfo)selectedLabels[0], | ||
|  |                 (MarkerExtendedInfo)selectedLabels[1], | ||
|  |                 mIsGluonMode); | ||
|  |         } | ||
|  | 
 | ||
|  |         void ILabelMenuOperations.MergeLabel() | ||
|  |         { | ||
|  |             RepositorySpec repSpec = | ||
|  |                 LabelsSelection.GetSelectedRepository(mLabelsListView); | ||
|  |             MarkerExtendedInfo label = | ||
|  |                 LabelsSelection.GetSelectedLabel(mLabelsListView); | ||
|  | 
 | ||
|  |             mLabelOperations.MergeLabel(repSpec, label); | ||
|  |         } | ||
|  | 
 | ||
|  |         void ILabelMenuOperations.MergeToLabel() { } | ||
|  | 
 | ||
|  |         void ILabelMenuOperations.CreateBranchFromLabel() | ||
|  |         { | ||
|  |             CreateBranchForMode(); | ||
|  |         } | ||
|  | 
 | ||
|  |         void ILabelMenuOperations.RenameLabel() | ||
|  |         { | ||
|  |             RepositorySpec repSpec = | ||
|  |                 LabelsSelection.GetSelectedRepository(mLabelsListView); | ||
|  |             MarkerExtendedInfo label = | ||
|  |                 LabelsSelection.GetSelectedLabel(mLabelsListView); | ||
|  | 
 | ||
|  |             LabelRenameData labelRenameData = RenameLabelDialog.GetLabelRenameData( | ||
|  |                 repSpec, | ||
|  |                 label, | ||
|  |                 mParentWindow); | ||
|  | 
 | ||
|  |             mLabelOperations.RenameLabel(labelRenameData); | ||
|  |         } | ||
|  | 
 | ||
|  |         void ILabelMenuOperations.DeleteLabel() | ||
|  |         { | ||
|  |             RepositorySpec repSpec = | ||
|  |                 LabelsSelection.GetSelectedRepository(mLabelsListView); | ||
|  |             MarkerExtendedInfo label = | ||
|  |                 LabelsSelection.GetSelectedLabel(mLabelsListView); | ||
|  | 
 | ||
|  |             mLabelOperations.DeleteLabel( | ||
|  |                 new List<RepositorySpec>() { repSpec }, | ||
|  |                 new List<MarkerExtendedInfo>() { label }); | ||
|  |         } | ||
|  | 
 | ||
|  |         void ILabelMenuOperations.ViewPermissions() { } | ||
|  | 
 | ||
|  |         string IGetQueryText.Get() | ||
|  |         { | ||
|  |             return GetLabelsQuery(mDateFilter); | ||
|  |         } | ||
|  | 
 | ||
|  |         string IGetFilterText.Get() | ||
|  |         { | ||
|  |             return mLabelsListView.searchString; | ||
|  |         } | ||
|  | 
 | ||
|  |         void IGetFilterText.Clear() | ||
|  |         { | ||
|  |             // Not used by the Plugin, needed for the Reset filters button | ||
|  |         } | ||
|  | 
 | ||
|  |         void FillLabelsView.IShowContentView.ShowContentPanel() | ||
|  |         { | ||
|  |             mEmptyStatePanel.UpdateContent(string.Empty); | ||
|  |         } | ||
|  | 
 | ||
|  |         void FillLabelsView.IShowContentView.ShowEmptyStatePanel( | ||
|  |             string explanationText, bool showResetFilterButton) | ||
|  |         { | ||
|  |             mEmptyStatePanel.UpdateContent(explanationText); | ||
|  |         } | ||
|  | 
 | ||
|  |         void SearchField_OnDownOrUpArrowKeyPressed() | ||
|  |         { | ||
|  |             mLabelsListView.SetFocusAndEnsureSelectedItem(); | ||
|  |         } | ||
|  | 
 | ||
|  |         static string GetLabelsQuery(DateFilter dateFilter) | ||
|  |         { | ||
|  |             if (dateFilter.FilterType == DateFilter.Type.AllTime) | ||
|  |                 return QueryConstants.LabelsBeginningQuery; | ||
|  | 
 | ||
|  |             string whereClause = QueryConstants.GetDateWhereClause( | ||
|  |                 dateFilter.GetTimeAgo()); | ||
|  | 
 | ||
|  |             return string.Format("{0} {1}", | ||
|  |                 QueryConstants.LabelsBeginningQuery, | ||
|  |                 whereClause); | ||
|  |         } | ||
|  | 
 | ||
|  |         void OnSelectionChanged() | ||
|  |         { | ||
|  |             List<RepObjectInfo> selectedLabels = LabelsSelection. | ||
|  |                 GetSelectedRepObjectInfos(mLabelsListView); | ||
|  | 
 | ||
|  |             if (selectedLabels.Count != 1) | ||
|  |                 return; | ||
|  | 
 | ||
|  |             mBrowseRepositoryPanel.UpdateInfo( | ||
|  |                 (MarkerExtendedInfo)selectedLabels[0]); | ||
|  |         } | ||
|  | 
 | ||
|  |         static void DoActionsToolbar(ProgressControlsForViews progressControls) | ||
|  |         { | ||
|  |             EditorGUILayout.BeginHorizontal(EditorStyles.toolbar); | ||
|  | 
 | ||
|  |             if (progressControls.IsOperationRunning()) | ||
|  |             { | ||
|  |                 DrawProgressForViews.ForIndeterminateProgressBar( | ||
|  |                     progressControls.ProgressData); | ||
|  |             } | ||
|  | 
 | ||
|  |             GUILayout.FlexibleSpace(); | ||
|  | 
 | ||
|  |             EditorGUILayout.EndHorizontal(); | ||
|  |         } | ||
|  | 
 | ||
|  |         static void DoLabelsArea( | ||
|  |             LabelsListView labelsListView, | ||
|  |             EmptyStatePanel emptyStatePanel, | ||
|  |             ProgressControlsForViews progressControls) | ||
|  |         { | ||
|  |             EditorGUILayout.BeginVertical(); | ||
|  | 
 | ||
|  |             DoActionsToolbar(progressControls); | ||
|  | 
 | ||
|  |             GUI.enabled = !progressControls.IsOperationRunning(); | ||
|  | 
 | ||
|  |             Rect rect = GUILayoutUtility.GetRect(0, 100000, 0, 100000); | ||
|  | 
 | ||
|  |             labelsListView.OnGUI(rect); | ||
|  | 
 | ||
|  |             if (!emptyStatePanel.IsEmpty()) | ||
|  |                 emptyStatePanel.OnGUI(rect); | ||
|  | 
 | ||
|  |             GUI.enabled = true; | ||
|  | 
 | ||
|  |             EditorGUILayout.EndVertical(); | ||
|  |         } | ||
|  | 
 | ||
|  |         static void DoContentBrowserArea( | ||
|  |             BrowseRepositoryPanel browseRepositoryPanel, | ||
|  |             bool isOperationRunning) | ||
|  |         { | ||
|  |             EditorGUILayout.BeginHorizontal(); | ||
|  | 
 | ||
|  |             GUI.enabled = !isOperationRunning; | ||
|  | 
 | ||
|  |             Rect border = GUILayoutUtility.GetRect(1, 0, 1, 100000); | ||
|  |             EditorGUI.DrawRect(border, UnityStyles.Colors.BarBorder); | ||
|  | 
 | ||
|  |             browseRepositoryPanel.OnGUI(); | ||
|  | 
 | ||
|  |             GUI.enabled = true; | ||
|  | 
 | ||
|  |             EditorGUILayout.EndHorizontal(); | ||
|  |         } | ||
|  | 
 | ||
|  |         void BuildComponents( | ||
|  |             WorkspaceInfo wkInfo, | ||
|  |             IWorkspaceWindow workspaceWindow, | ||
|  |             IViewSwitcher viewSwitcher, | ||
|  |             IMergeViewLauncher mergeViewLauncher, | ||
|  |             IUpdateReport updateReport, | ||
|  |             IncomingChangesUpdater developerIncomingChangesUpdater, | ||
|  |             IShelvedChangesUpdater shelvedChangesUpdater, | ||
|  |             IShelvePendingChangesQuestionerBuilder shelvePendingChangesQuestionerBuilder, | ||
|  |             SwitchAndShelve.IEnableSwitchAndShelveFeatureDialog enableSwitchAndShelveFeatureDialog, | ||
|  |             EditorWindow parentWindow, | ||
|  |             FillLabelsView fillLabelsView) | ||
|  |         { | ||
|  |             mSearchField = new SearchField(); | ||
|  |             mSearchField.downOrUpArrowKeyPressed += SearchField_OnDownOrUpArrowKeyPressed; | ||
|  | 
 | ||
|  |             DateFilter.Type dateFilterType = | ||
|  |                 EnumPopupSetting<DateFilter.Type>.Load( | ||
|  |                     UnityConstants.LABELS_DATE_FILTER_SETTING_NAME, | ||
|  |                     DateFilter.Type.LastMonth); | ||
|  |             mDateFilter = new DateFilter(dateFilterType); | ||
|  | 
 | ||
|  |             LabelsListHeaderState headerState = | ||
|  |                 LabelsListHeaderState.GetDefault(); | ||
|  | 
 | ||
|  |             TreeHeaderSettings.Load( | ||
|  |                 headerState, | ||
|  |                 UnityConstants.LABELS_TABLE_SETTINGS_NAME, | ||
|  |                 (int)LabelsListColumn.Name, | ||
|  |                 false); | ||
|  | 
 | ||
|  |             mLabelsListView = new LabelsListView( | ||
|  |                 headerState, | ||
|  |                 LabelsListHeaderState.GetColumnNames(), | ||
|  |                 new LabelsViewMenu(this), | ||
|  |                 fillLabelsView, | ||
|  |                 selectionChangedAction: OnSelectionChanged, | ||
|  |                 doubleClickAction: ((ILabelMenuOperations)this).BrowseRepositoryOnLabel, | ||
|  |                 afterItemsChangedAction: fillLabelsView.ShowContentOrEmptyState); | ||
|  | 
 | ||
|  |             mLabelsListView.Reload(); | ||
|  | 
 | ||
|  |             mBrowseRepositoryPanel = new BrowseRepositoryPanel( | ||
|  |                 wkInfo, | ||
|  |                 fillLabelsView, | ||
|  |                 parentWindow); | ||
|  |         } | ||
|  | 
 | ||
|  |         SearchField mSearchField; | ||
|  |         DateFilter mDateFilter; | ||
|  |         LabelsListView mLabelsListView; | ||
|  | 
 | ||
|  |         readonly LabelOperations mLabelOperations; | ||
|  |         readonly LaunchTool.IShowDownloadPlasticExeWindow mShowDownloadPlasticExeWindow; | ||
|  |         BrowseRepositoryPanel mBrowseRepositoryPanel; | ||
|  | 
 | ||
|  |         readonly object mSplitterState; | ||
|  |         readonly LaunchTool.IProcessExecutor mProcessExecutor; | ||
|  | 
 | ||
|  |         readonly EmptyStatePanel mEmptyStatePanel; | ||
|  |         readonly FillLabelsView mFillLabelsView; | ||
|  | 
 | ||
|  |         readonly bool mIsGluonMode; | ||
|  |         readonly ViewHost mViewHost; | ||
|  |         readonly IGluonUpdateReport mGluonUpdateReport; | ||
|  |         readonly WorkspaceWindow mWorkspaceWindow; | ||
|  |         readonly ProgressControlsForViews mProgressControls; | ||
|  |         readonly EditorWindow mParentWindow; | ||
|  |         readonly WorkspaceInfo mWkInfo; | ||
|  |         readonly IPendingChangesUpdater mPendingChangesUpdater; | ||
|  |         readonly GluonIncomingChangesUpdater mGluonIncomingChangesUpdater; | ||
|  |         readonly IShelvePendingChangesQuestionerBuilder mShelvePendingChangesQuestionerBuilder; | ||
|  |         readonly IShelvedChangesUpdater mShelvedChangesUpdater; | ||
|  |         readonly IAssetStatusCache mAssetStatusCache; | ||
|  |         readonly SwitchAndShelve.IEnableSwitchAndShelveFeatureDialog mEnableSwitchAndShelveFeatureDialog; | ||
|  |     } | ||
|  | } |