internal static SelectedChangesGroupInfo GetSelectedChangesGroupInfo( PendingChangesTreeView treeView) { SelectedChangesGroupInfo result = treeView.GetSelectedChangesGroupInfo(); result.IsApplicableDiffWorkspaceContent = IsApplicableDiffWorkspaceContent(treeView); return result; }
static void DoChangesArea( WorkspaceInfo wkInfo, PendingChangesTreeView changesTreeView, IMergeViewLauncher mergeViewLauncher, IGluonViewSwitcher gluonViewSwitcher, bool isOperationRunning, bool isGluonMode, bool isCheckedInSuccessful, PlasticNotification.Status notificationStatus, string notificationInfoText, string notificationActionText) { GUI.enabled = !isOperationRunning; Rect rect = GUILayoutUtility.GetRect(0, 100000, 0, 100000); changesTreeView.OnGUI(rect); if (changesTreeView.GetTotalItemCount() == 0) { DrawEmptyState( rect, isCheckedInSuccessful, notificationStatus, notificationInfoText, notificationActionText, () => OpenIncomingChangesTab( wkInfo, mergeViewLauncher, gluonViewSwitcher, isGluonMode)); } GUI.enabled = true; }
static void RegenerateRows( UnityPendingChangesTree pendingChangesTree, TreeViewItemIds <PendingChangeCategory, PendingChangeInfo> treeViewItemIds, PendingChangesTreeView treeView, TreeViewItem rootItem, List <TreeViewItem> rows, bool expandCategories) { ClearRows(rootItem, rows); List <PendingChangeCategory> categories = pendingChangesTree.GetNodes(); if (categories == null) { return; } foreach (PendingChangeCategory 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 (!expandCategories && !treeView.IsExpanded(categoryTreeViewItem.id)) { continue; } foreach (PendingChangeInfo change in category.GetCurrentChanges()) { int changeId; if (!treeViewItemIds.TryGetInfoItemId(change, out changeId)) { changeId = treeViewItemIds.AddInfoItem(change); } TreeViewItem changeTreeViewItem = new ChangeTreeViewItem(changeId, change); categoryTreeViewItem.AddChild(changeTreeViewItem); rows.Add(changeTreeViewItem); } } if (!expandCategories) { return; } treeView.state.expandedIDs = treeViewItemIds.GetCategoryIds(); }
static void UpdateCheckStateForSelection( PendingChangesTreeView 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( PlasticGUIClient plasticClient, bool isGluonMode, EditorWindow plasticWindow) { mHelpPanel = new HelpPanel(plasticWindow); mAdvancedDropdownMenu = new GenericMenu(); mAdvancedDropdownMenu.AddItem(new GUIContent( PlasticLocalization.GetString(PlasticLocalization.Name.UndoUnchangedButton)), false, () => { }); mSearchField = new SearchField(); mSearchField.downOrUpArrowKeyPressed += SearchField_OnDownOrUpArrowKeyPressed; PendingChangesTreeHeaderState headerState = PendingChangesTreeHeaderState.GetDefault(isGluonMode); TreeHeaderSettings.Load(headerState, UnityConstants.PENDING_CHANGES_TABLE_SETTINGS_NAME, (int)PendingChangesTreeColumn.Item, true); mPendingChangesTreeView = new PendingChangesTreeView( mWkInfo, mIsGluonMode, headerState, PendingChangesTreeHeaderState.GetColumnNames(), new PendingChangesViewMenu(this, this, this, this), mAssetStatusCache); mPendingChangesTreeView.Reload(); mMergeLinksListView = new MergeLinksListView(); mMergeLinksListView.Reload(); }
static void CategoryTreeViewItemGUI( PendingChangesTreeView treeView, Rect rowRect, float rowHeight, ChangeCategoryTreeViewItem item, bool isSelected, bool isFocused) { Texture icon = GetCategoryIcon(item.Category); string label = item.Category.CategoryName; string secondaryLabel = item.Category.GetCheckedChangesText(); bool wasChecked = item.Category.IsChecked(); bool hadCheckedChildren = item.Category.GetCheckedChangesCount() > 0; bool isChecked = DrawTreeViewItem.ForCheckableCategoryItem( rowRect, rowHeight, item.depth, icon, label, secondaryLabel, isSelected, isFocused, wasChecked, hadCheckedChildren); if (wasChecked != isChecked) { item.Category.UpdateCheckedState(isChecked); treeView.SelectionChanged(); } }
static void ChangeTreeViewItemGUI( string wkPath, bool isGluonMode, IAssetStatusCache assetStatusCache, PendingChangesTreeView treeView, UnityPendingChangesTree pendingChangesTree, ChangeTreeViewItem item, RowGUIArgs args) { for (int visibleColumnIdx = 0; visibleColumnIdx < args.GetNumVisibleColumns(); visibleColumnIdx++) { Rect cellRect = args.GetCellRect(visibleColumnIdx); PendingChangesTreeColumn column = (PendingChangesTreeColumn)args.GetColumn(visibleColumnIdx); ChangeTreeViewItemCellGUI( isGluonMode, assetStatusCache, cellRect, treeView.rowHeight, treeView, pendingChangesTree, item, column, args.selected, args.focused); } }
internal PendingChangesMultiColumnHeader( PendingChangesTreeView treeView, MultiColumnHeaderState headerState, UnityPendingChangesTree tree) : base(headerState) { mPendingChangesTreeView = treeView; mPendingChangesTree = tree; }
static bool IsApplicableDiffWorkspaceContent( PendingChangesTreeView treeView) { ChangeInfo selectedRow = GetSelectedChange(treeView); if (selectedRow == null) return false; return DiffOperation.IsApplicableDiffWorkspaceContent(selectedRow); }
static void DoChangesArea( PendingChangesTreeView changesTreeView, bool isOperationRunning) { GUI.enabled = !isOperationRunning; Rect rect = GUILayoutUtility.GetRect(0, 100000, 0, 100000); changesTreeView.OnGUI(rect); GUI.enabled = true; }
internal static void SelectChanges( PendingChangesTreeView treeView, List<ChangeInfo> changesToSelect) { if (changesToSelect == null || changesToSelect.Count == 0) { treeView.SelectFirstPendingChangeOnTree(); return; } treeView.SelectPreviouslySelectedPendingChanges(changesToSelect); if (treeView.HasSelection()) return; treeView.SelectFirstPendingChangeOnTree(); }
internal static List<ChangeInfo> GetChangesToFocus( PendingChangesTreeView treeView) { List<ChangeInfo> selectedChanges = treeView.GetSelectedChanges(true); if (selectedChanges.Count == 0) return selectedChanges; List<ChangeInfo> changesToFocus = selectedChanges.Where(change => !IsAddedFile(change)).ToList(); if (changesToFocus.Count() == 0) { ChangeInfo nearestAddedChange = treeView.GetNearestAddedChange(); if (nearestAddedChange != null) changesToFocus.Add(nearestAddedChange); } return changesToFocus; }
internal static List<string> GetSelectedMetaPaths( PendingChangesTreeView treeView) { List<ChangeInfo> selectedChanges = PendingChangesSelection .GetSelectedChanges(treeView); List<string> result = new List<string>(); foreach (ChangeInfo change in selectedChanges) { string path = change.GetFullPath(); if (!MetaPath.IsMetaPath(path)) continue; result.Add(path); } return result; }
internal void UpdateItemColumnHeader(PendingChangesTreeView treeView) { Column itemColumn = columns[(int)PendingChangesTreeColumn.Item]; string columnName = GetColumnName(PendingChangesTreeColumn.Item); int totalItemCount = treeView.GetTotalItemCount(); if (totalItemCount > 0) { string columnStatus = string.Format( PlasticLocalization.GetString(PlasticLocalization.Name.ItemsSelected), treeView.GetSelectedItemCount(), totalItemCount); itemColumn.headerContent.text = string.Format("{0} {1}", columnName, columnStatus); } else { itemColumn.headerContent.text = columnName; } }
static void DoChangesArea( WorkspaceInfo wkInfo, PendingChangesTreeView changesTreeView, bool isOperationRunning, bool isGluonMode, bool isCheckedInSuccessful) { GUI.enabled = !isOperationRunning; Rect rect = GUILayoutUtility.GetRect(0, 100000, 0, 100000); changesTreeView.OnGUI(rect); if (changesTreeView.GetTotalItemCount() == 0) { DrawEmptyState( rect, isCheckedInSuccessful); } GUI.enabled = true; }
internal static List<ChangeInfo> GetSelectedChanges( PendingChangesTreeView treeView) { return treeView.GetSelectedChanges(true); }
internal static List<string> GetSelectedPaths( PendingChangesTreeView treeView) { return treeView.GetSelectedChanges(true) .Select(change => change.GetFullPath()).ToList(); }
internal static List<ChangeInfo> GetAllChanges( PendingChangesTreeView treeView) { return treeView.GetAllChanges(); }
internal static ChangeInfo GetSelectedChange( PendingChangesTreeView treeView) { return treeView.GetSelectedRow(); }
static void ChangeTreeViewItemCellGUI( bool isGluonMode, IAssetStatusCache assetStatusCache, Rect rect, float rowHeight, PendingChangesTreeView treeView, UnityPendingChangesTree pendingChangesTree, ChangeTreeViewItem item, PendingChangesTreeColumn column, bool isSelected, bool isFocused) { PendingChangeInfo changeInfo = item.ChangeInfo; string label = changeInfo.GetColumnText( PendingChangesTreeHeaderState.GetColumnName(column)); DefaultStyles.label.fontSize = UnityConstants.PENDING_CHANGES_FONT_SIZE; if (column == PendingChangesTreeColumn.Item) { if (pendingChangesTree.HasMeta(changeInfo.ChangeInfo)) { label = string.Concat(label, UnityConstants.TREEVIEW_META_LABEL); } Texture icon = GetIcon(changeInfo); bool isConflicted = IsConflicted( isGluonMode, assetStatusCache, changeInfo.ChangeInfo.GetFullPath()); GetChangesOverlayIcon.Data overlayIconData = GetChangesOverlayIcon.ForPendingChange( changeInfo.ChangeInfo, isConflicted); bool wasChecked = changeInfo.IsChecked(); bool isChecked = DrawTreeViewItem.ForCheckableItemCell( rect, rowHeight, item.depth, icon, overlayIconData, label, isSelected, isFocused, false, wasChecked); changeInfo.UpdateCheckedState(isChecked); if (wasChecked != isChecked) { UpdateCheckStateForSelection(treeView, item); treeView.SelectionChanged(); } return; } if (column == PendingChangesTreeColumn.Size) { DrawTreeViewItem.ForSecondaryLabelRightAligned( rect, label, isSelected, isFocused, false); return; } DrawTreeViewItem.ForSecondaryLabel( rect, label, isSelected, isFocused, false); }