static void IncomingChangeTreeViewItemCellGUI( string wkPath, Rect rect, float rowHeight, UnityIncomingChangesTree incomingChangesTree, IncomingChangesTreeView treeView, ChangeTreeViewItem item, Action onCheckedNodeChanged, IncomingChangesTreeColumn column, bool isSelected, bool isFocused, bool isCurrentConflict, bool isSolvedConflict) { IncomingChangeInfo incomingChange = item.ChangeInfo; string label = incomingChange.GetColumnText( IncomingChangesTreeHeaderState.GetColumnName(column)); if (column == IncomingChangesTreeColumn.Path) { if (incomingChangesTree.HasMeta(item.ChangeInfo)) { label = string.Concat(label, UnityConstants.TREEVIEW_META_LABEL); } Texture icon = GetIcon(wkPath, incomingChange); GetChangesOverlayIcon.Data overlayIconData = GetChangesOverlayIcon.ForGluonIncomingChange( incomingChange, isSolvedConflict); bool wasChecked = incomingChange.IsChecked(); bool isChecked = DrawTreeViewItem.ForCheckableItemCell( rect, rowHeight, item.depth, icon, overlayIconData, label, isSelected, isFocused, isCurrentConflict, wasChecked); incomingChange.UpdateCheckedState(isChecked); if (wasChecked != isChecked) { UpdateCheckStateForSelection(treeView, item); onCheckedNodeChanged(); } return; } if (column == IncomingChangesTreeColumn.Size) { DrawTreeViewItem.ForSecondaryLabelRightAligned( rect, label, isSelected, isFocused, isCurrentConflict); return; } DrawTreeViewItem.ForSecondaryLabel( rect, label, isSelected, isFocused, isCurrentConflict); }
static void IncomingChangeTreeViewItemGUI( string wkPath, UnityIncomingChangesTree incomingChangesTree, IncomingChangesTreeView treeView, ChangeTreeViewItem item, Action onCheckedNodeChanged, RowGUIArgs args, bool isCurrentConflict, bool isSolvedConflict) { for (int visibleColumnIdx = 0; visibleColumnIdx < args.GetNumVisibleColumns(); visibleColumnIdx++) { Rect cellRect = args.GetCellRect(visibleColumnIdx); IncomingChangesTreeColumn column = (IncomingChangesTreeColumn)args.GetColumn(visibleColumnIdx); IncomingChangeTreeViewItemCellGUI( wkPath, cellRect, treeView.rowHeight, incomingChangesTree, treeView, item, onCheckedNodeChanged, column, args.selected, args.focused, isCurrentConflict, isSolvedConflict); } }
static bool ShouldExpandCategory( IncomingChangesTreeView treeView, ChangeCategoryTreeViewItem categoryTreeViewItem, int categoriesCount, bool expandCategories) { if (expandCategories) { if (categoriesCount == 1) { return(true); } if (categoryTreeViewItem.Category.CategoryType == IncomingChangeCategory.Type.Conflicted) { return(true); } if (categoryTreeViewItem.Category.GetChildrenCount() > NODES_TO_EXPAND_CATEGORY) { return(false); } return(true); } return(treeView.IsExpanded(categoryTreeViewItem.id)); }
static void DoIncomingChangesArea( PlasticGUIClient plasticClient, IncomingChangesTreeView incomingChangesTreeView, PendingConflictsLabelData pendingConflictsLabelData, string changesToApplySummaryLabelText, string messageLabelText, bool isMessageLabelVisible, bool isOperationRunning) { EditorGUILayout.BeginVertical(); DoPendingConflictsAndChangesToApplyLabel( pendingConflictsLabelData, changesToApplySummaryLabelText); DoIncomingChangesTreeViewArea( incomingChangesTreeView, isOperationRunning); if (isMessageLabelVisible) { DoInfoMessageArea(messageLabelText); } EditorGUILayout.EndVertical(); }
static void DoProcessMergesButton( bool isEnabled, string processMergesButtonText, IncomingChangesViewLogic incomingChangesViewLogic, IncomingChangesTreeView incomingChangesTreeView, Action afterProcessMergesAction) { GUI.enabled = isEnabled; if (DrawActionButton.For(processMergesButtonText)) { List <IncomingChangeInfo> incomingChanges = incomingChangesViewLogic.GetCheckedChanges(); incomingChangesTreeView.FillWithMeta(incomingChanges); if (incomingChanges.Count == 0) { return; } incomingChangesViewLogic.ProcessMergesForItems( incomingChanges, afterProcessMergesAction); } GUI.enabled = true; }
static void UpdateCheckStateForSelection( IncomingChangesTreeView treeView, ChangeTreeViewItem senderTreeViewItem) { IList <int> selectedIds = treeView.GetSelection(); if (selectedIds.Count <= 1) { return; } if (!selectedIds.Contains(senderTreeViewItem.id)) { return; } bool isChecked = senderTreeViewItem.ChangeInfo.IsChecked(); foreach (TreeViewItem treeViewItem in treeView.FindRows(selectedIds)) { if (treeViewItem is ChangeCategoryTreeViewItem) { ((ChangeCategoryTreeViewItem)treeViewItem).Category .UpdateCheckedState(isChecked); continue; } ((ChangeTreeViewItem)treeViewItem).ChangeInfo .UpdateCheckedState(isChecked); } }
void BuildComponents() { IncomingChangesTreeHeaderState incomingChangesHeaderState = IncomingChangesTreeHeaderState.GetDefault(); TreeHeaderSettings.Load(incomingChangesHeaderState, UnityConstants.GLUON_INCOMING_CHANGES_TABLE_SETTINGS_NAME, (int)IncomingChangesTreeColumn.Path, true); mIncomingChangesTreeView = new IncomingChangesTreeView( mWkInfo, incomingChangesHeaderState, IncomingChangesTreeHeaderState.GetColumnNames(), new IncomingChangesViewMenu(mWkInfo, this, this), UpdateProcessMergesButtonText); mIncomingChangesTreeView.Reload(); ErrorsListHeaderState errorsListHeaderState = ErrorsListHeaderState.GetDefault(); TreeHeaderSettings.Load(errorsListHeaderState, UnityConstants.GLUON_INCOMING_ERRORS_TABLE_SETTINGS_NAME, UnityConstants.UNSORT_COLUMN_ID); mErrorsListView = new ErrorsListView(errorsListHeaderState); mErrorsListView.Reload(); }
internal static List <IncomingChangeInfo> GetSelectedFileConflictsIncludingMeta( IncomingChangesTreeView treeView) { List <IncomingChangeInfo> result = treeView.GetSelectedFileConflicts(); treeView.FillWithMeta(result); return(result); }
internal static SelectedIncomingChangesGroupInfo GetSelectedGroupInfo( IncomingChangesTreeView treeView) { List <IncomingChangeInfo> selectedIncomingChanges = treeView.GetSelectedIncomingChanges(); return(GetSelectedIncomingChangesGroupInfo.For( selectedIncomingChanges)); }
static void UpdateIncomingChangesTree( IncomingChangesTreeView incomingChangesTreeView, IncomingChangesTree tree) { incomingChangesTreeView.BuildModel( UnityIncomingChangesTree.BuildIncomingChangeCategories(tree)); incomingChangesTreeView.Sort(); incomingChangesTreeView.Reload(); }
static void DoIncomingChangesTreeViewArea( IncomingChangesTreeView incomingChangesTreeView, bool isOperationRunning) { GUI.enabled = !isOperationRunning; Rect rect = GUILayoutUtility.GetRect(0, 100000, 0, 100000); incomingChangesTreeView.OnGUI(rect); GUI.enabled = true; }
static void DoIncomingChangesArea( IncomingChangesTreeView incomingChangesTreeView, bool isOperationRunning, bool hasNothingToDownload, bool isUpdateSuccessful) { EditorGUILayout.BeginVertical(); DoIncomingChangesTreeViewArea( incomingChangesTreeView, isOperationRunning, hasNothingToDownload, isUpdateSuccessful); EditorGUILayout.EndVertical(); }
void DoActionsToolbar( bool isProcessMergesButtonVisible, bool isCancelMergesButtonVisible, bool isProcessMergesButtonEnabled, bool isCancelMergesButtonEnabled, string processMergesButtonText, IncomingChangesViewLogic incomingChangesViewLogic, IncomingChangesTreeView incomingChangesTreeView, ProgressControlsForViews progressControls) { GUIStyle guiStyle = new GUIStyle(); guiStyle.margin = new RectOffset(5, 5, 5, 5); EditorGUILayout.BeginHorizontal(guiStyle); if (isProcessMergesButtonVisible) { DoProcessMergesButton( isProcessMergesButtonEnabled, processMergesButtonText, incomingChangesViewLogic, incomingChangesTreeView); } if (isCancelMergesButtonVisible) { DoCancelMergesButton( isCancelMergesButtonEnabled, incomingChangesViewLogic); } if (progressControls.IsOperationRunning()) { DrawProgressForViews.ForIndeterminateProgress( progressControls.ProgressData); } GUILayout.FlexibleSpace(); DoRefreshButton( !progressControls.IsOperationRunning(), incomingChangesViewLogic); EditorGUILayout.EndHorizontal(); }
static void DoIncomingChangesTreeViewArea( IncomingChangesTreeView incomingChangesTreeView, bool isOperationRunning, bool hasNothingToDownload, bool isUpdateSuccessful) { GUI.enabled = !isOperationRunning; Rect rect = GUILayoutUtility.GetRect(0, 100000, 0, 100000); incomingChangesTreeView.OnGUI(rect); if (hasNothingToDownload) { DrawEmptyState(rect, isUpdateSuccessful); } GUI.enabled = true; }
static void DoIncomingChangesTreeViewArea( IncomingChangesTreeView incomingChangesTreeView, bool isOperationRunning, bool hasNothingToDownload) { GUI.enabled = !isOperationRunning; Rect rect = GUILayoutUtility.GetRect(0, 100000, 0, 100000); incomingChangesTreeView.OnGUI(rect); if (hasNothingToDownload) { DrawTreeViewEmptyState.For( rect, PlasticLocalization.GetString(PlasticLocalization.Name.NoIncomingChanges), PlasticLocalization.GetString(PlasticLocalization.Name.WorkspaceIsUpToDate), Images.Name.StepOk); } GUI.enabled = true; }
static void DoIncomingChangesArea( IncomingChangesTreeView incomingChangesTreeView, PendingConflictsLabelData pendingConflictsLabelData, string changesToApplySummaryLabelText, string messageLabelText, bool isMessageLabelVisible, bool isOperationRunning, bool hasNothingToDownload) { EditorGUILayout.BeginVertical(); DoPendingConflictsAndChangesToApplyLabel( pendingConflictsLabelData, changesToApplySummaryLabelText); DoIncomingChangesTreeViewArea( incomingChangesTreeView, isOperationRunning, hasNothingToDownload); if (isMessageLabelVisible) { string message = messageLabelText; if (hasNothingToDownload) { message = string.Format( "{0}. {1}.", PlasticLocalization.GetString(PlasticLocalization.Name.NoIncomingChanges), PlasticLocalization.GetString(PlasticLocalization.Name.WorkspaceIsUpToDate)); } DoInfoMessageArea(message); } EditorGUILayout.EndVertical(); }
static void IncomingChangeTreeViewItemCellGUI( string wkPath, Rect rect, float rowHeight, UnityIncomingChangesTree incomingChangesTree, IncomingChangesTreeView treeView, ChangeTreeViewItem item, Action onCheckedNodeChanged, IncomingChangesTreeColumn column, bool isSelected, bool isFocused, bool isCurrentConflict, bool isSolvedConflict) { IncomingChangeInfo incomingChange = item.ChangeInfo; string label = incomingChange.GetColumnText( IncomingChangesTreeHeaderState.GetColumnName(column)); if (column == IncomingChangesTreeColumn.Path) { if (incomingChangesTree.HasMeta(item.ChangeInfo)) { label = string.Concat(label, UnityConstants.TREEVIEW_META_LABEL); } Texture icon = GetIcon(wkPath, incomingChange); Texture overlayIcon = GetChangesOverlayIcon.ForGluonIncomingChange( incomingChange, isSolvedConflict); bool wasChecked = incomingChange.IsChecked(); bool isChecked = DrawTreeViewItem.ForCheckableItemCell( rect, rowHeight, item.depth, icon, overlayIcon, label, isSelected, isFocused, isCurrentConflict, wasChecked); incomingChange.UpdateCheckedState(isChecked); if (wasChecked != isChecked) { UpdateCheckStateForSelection(treeView, item); onCheckedNodeChanged(); } return; } if (column == IncomingChangesTreeColumn.Size) { // If there is a meta file, add the meta file to the file size so that it is consistent // with the Incoming Changes overview if (incomingChangesTree.HasMeta(item.ChangeInfo)) { IncomingChangeInfo metaFileInfo = incomingChangesTree.GetMetaChange(incomingChange); long metaFileSize = metaFileInfo.GetSize(); long fileSize = incomingChange.GetSize(); label = SizeConverter.ConvertToSizeString(fileSize + metaFileSize); } DrawTreeViewItem.ForSecondaryLabelRightAligned( rect, label, isSelected, isFocused, isCurrentConflict); return; } DrawTreeViewItem.ForSecondaryLabel( rect, label, isSelected, isFocused, isCurrentConflict); }
internal static IncomingChangeInfo GetSingleSelectedIncomingChange( IncomingChangesTreeView treeView) { return(treeView.GetSelectedIncomingChange()); }
static void RegenerateRows( UnityIncomingChangesTree incomingChangesTree, TreeViewItemIds <IncomingChangeCategory, IncomingChangeInfo> treeViewItemIds, IncomingChangesTreeView treeView, TreeViewItem rootItem, List <TreeViewItem> rows, bool expandCategories) { if (incomingChangesTree == null) { return; } ClearRows(rootItem, rows); List <IncomingChangeCategory> categories = incomingChangesTree.GetNodes(); if (categories == null) { return; } List <int> categoriesToExpand = new List <int>(); foreach (IncomingChangeCategory category in categories) { int categoryId; if (!treeViewItemIds.TryGetCategoryItemId(category, out categoryId)) { categoryId = treeViewItemIds.AddCategoryItem(category); } ChangeCategoryTreeViewItem categoryTreeViewItem = new ChangeCategoryTreeViewItem(categoryId, category); rootItem.AddChild(categoryTreeViewItem); rows.Add(categoryTreeViewItem); if (!ShouldExpandCategory( treeView, categoryTreeViewItem, categories.Count, expandCategories)) { continue; } categoriesToExpand.Add(categoryTreeViewItem.id); foreach (IncomingChangeInfo incomingChange in category.GetChanges()) { int changeId; if (!treeViewItemIds.TryGetInfoItemId(incomingChange, out changeId)) { changeId = treeViewItemIds.AddInfoItem(incomingChange); } TreeViewItem changeTreeViewItem = new ChangeTreeViewItem(changeId, incomingChange); categoryTreeViewItem.AddChild(changeTreeViewItem); rows.Add(changeTreeViewItem); } } treeView.state.expandedIDs = categoriesToExpand; }