public (Repository, Commit) GetSelectedCommit() { ThreadHelper.ThrowIfNotOnUIThread(); EnvDTE80.DTE2 dte = ServiceProvider.GetService(typeof(DTE)) as EnvDTE80.DTE2; // GUID found via dte.ActiveWindow.ObjectKind Guid gitHistoryWindowGuid = new Guid("116D2292-E37D-41CD-A077-EBACAC4C8CC4"); IVsUIShell vsUIShell = (IVsUIShell)Package.GetGlobalService(typeof(SVsUIShell)); int toolWindowReturn = vsUIShell.FindToolWindow((uint)__VSFINDTOOLWIN.FTW_fFrameOnly, ref gitHistoryWindowGuid, out IVsWindowFrame vsWindowFrame); WindowFrame windowFrame = (WindowFrame)vsWindowFrame; ToolWindowView toolWindowView = (ToolWindowView)windowFrame.FrameView; // panel is of innaccessible type Microsoft.VisualStudio.Platform.WindowManagement.WindowFrame.ContentHostingPanel // so use base System.Windows.Controls.Grid Grid contentHostingPanel = (Grid)toolWindowView.Content; // Type Microsoft.VisualStudio.Platform.WindowManagement.Controls.GenericPaneContentPresenter is internal // so use base ContentPresenter ContentPresenter genericPaneContentPresenter = contentHostingPanel.Children[1] as ContentPresenter; // Microsoft.VisualStudio.TeamFoundation.ToolWindowBase.ToolWindowBaseProxy is innaccessible // so use base ContentPresenter ContentPresenter toolWindowBaseProxy = (ContentPresenter)genericPaneContentPresenter.Content; // Is of type Microsoft.TeamFoundation.Git.Controls.History.HistoryView, // but this class is defined as internal so using base UserControl. UserControl historyView = (UserControl)toolWindowBaseProxy.Content; // Is of type Microsoft.TeamFoundation.Git.Controls.History.HistoryViewModel, // but this class is defined as internal so using base Microsoft.TeamFoundation.MVVM.ViewModelBase. ViewModelBase historyViewModel = (ViewModelBase)historyView.DataContext; // Use reflection to get at properties of internal type HistoryViewModel and ObservableCollection<GitHistoryItem> object gitHistoryItem = ((IList)historyViewModel.GetType().GetProperty("SelectedItems").GetValue(historyViewModel, null))[0]; IGitCommit selectedCommit = (IGitCommit)gitHistoryItem.GetType().GetProperty("Commit").GetValue(gitHistoryItem, null); IGitExt gitExt = ServiceProvider.GetService(typeof(IGitExt)) as IGitExt; Repository repository = new Repository(gitExt.ActiveRepositories.First().RepositoryPath); Commit commit = repository.Lookup <Commit>(selectedCommit.Id.Sha); return(repository, commit); }
public FrameworkElement GetToolWindowView(object _) { var control = new EditorControl { DataContext = this }; ToolWindowView.SetTabTitle(control, new ToolWindowTitle("Run C# script")); return(control); }
public static string GetShortTitle(this ToolWindowView view) { if (view == null) { throw new ArgumentNullException(nameof(view)); } var wft = view.Title as WindowFrameTitle; return(wft?.ShortTitle); }
public static void SetShortTitle(this ToolWindowView view, string title) { if (view == null) { throw new ArgumentNullException(nameof(view)); } if (title.IsNullOrEmpty()) { throw new ArgumentNullException(nameof(title)); } if (view.Title is WindowFrameTitle wft) { BindingOperations.ClearBinding(wft, WindowFrameTitle.ShortTitleProperty); wft.ShortTitle = title; } }