Temporary TE section for triggering clone/create

While we don't have the definitive classes/interfaces
for the GitHub Connect section in Team Explorer, use
a mock one that triggers our clone/create dialogs
(with optional auth)
This commit is contained in:
Andreia Gaita 2015-02-24 21:56:23 +01:00
Родитель daca32e477
Коммит 7d864f16df
3 изменённых файлов: 160 добавлений и 0 удалений

Просмотреть файл

@ -0,0 +1,70 @@
using GitHub.Exports;
using GitHub.Extensions;
using GitHub.Models;
using GitHub.Services;
using GitHub.VisualStudio.UI.Views;
using Microsoft.TeamFoundation.Controls;
using Microsoft.VisualStudio.Shell;
using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GitHub.VisualStudio.TeamExplorerConnect
{
[TeamExplorerSection(PlaceholderGitHubSectionId, TeamExplorerPageIds.Connect, 10)]
public class PlaceholderGitHubSection : TeamExplorerSectionBase
{
public const string PlaceholderGitHubSectionId = "519B47D3-F2A9-4E19-8491-8C9FA25ABE97";
protected GitHubConnectContent View
{
get { return this.SectionContent as GitHubConnectContent; }
set { this.SectionContent = value; }
}
[ImportingConstructor]
public PlaceholderGitHubSection([Import(typeof(SVsServiceProvider))] IServiceProvider serviceProvider)
{
this.Title = "GitHub";
this.IsVisible = true;
this.IsEnabled = true;
this.IsExpanded = true;
View = new GitHubConnectContent();
View.ViewModel = this;
}
public void DoCreate()
{
// this is done here and not via the constructor so nothing gets loaded
// until we get here
var ui = ServiceProvider.GetExportedValue<IUIProvider>();
var factory = ui.GetService<ExportFactoryProvider>();
var d = factory.UIControllerFactory.CreateExport();
var creation = d.Value.SelectFlow(GitHub.UI.UIControllerFlow.Create);
var x = new WindowController(creation);
creation.Subscribe(_ => { }, _ => x.Close());
x.Show();
}
public void DoClone()
{
// this is done here and not via the constructor so nothing gets loaded
// until we get here
var ui = ServiceProvider.GetExportedValue<IUIProvider>();
var factory = ui.GetService<ExportFactoryProvider>();
var d = factory.UIControllerFactory.CreateExport();
var creation = d.Value.SelectFlow(GitHub.UI.UIControllerFlow.Clone);
creation.Subscribe(_ => { }, _ => d.Dispose());
var x = new WindowController(creation);
x.Show();
d.Value.Start();
}
}
}

Просмотреть файл

@ -0,0 +1,33 @@
<UserControl x:Class="GitHub.VisualStudio.UI.Views.GitHubConnectContent"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:GitHub.VisualStudio.UI.Views"
xmlns:ui="clr-namespace:GitHub.UI;assembly=GitHub.UI"
xmlns:helpers="clr-namespace:GitHub.Helpers;assembly=GitHub.UI"
xmlns:vsshell="clr-namespace:Microsoft.VisualStudio.Shell;assembly=Microsoft.VisualStudio.Shell.12.0"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300" d:DesignBackground="White">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/GitHub.UI;component/Assets/Styles.xaml" />
<ResourceDictionary Source="pack://application:,,,/GitHub.UI;component/Assets/Controls.xaml" />
<ResourceDictionary Source="pack://application:,,,/GitHub.UI;component/Assets/TextBlocks.xaml" />
<ResourceDictionary Source="pack://application:,,,/GitHub.UI.Reactive;component/Assets/Controls.xaml" />
</ResourceDictionary.MergedDictionaries>
<Style TargetType="Label">
<Setter Property="Foreground" Value="{DynamicResource {x:Static vsshell:VsBrushes.ToolWindowTextKey}}" />
<Setter Property="Padding" Value="0" />
</Style>
</ResourceDictionary>
</UserControl.Resources>
<Grid>
<WrapPanel Orientation="Horizontal" Grid.Row="0" Margin="0,0,0,6">
<TextBlock><Hyperlink x:Name="cloneLink" Click="cloneLink_Click">Clone</Hyperlink></TextBlock>
<Label Margin="6 0 6 0">|</Label>
<TextBlock><Hyperlink x:Name="createLink" Click="createLink_Click">Create</Hyperlink></TextBlock>
</WrapPanel>
</Grid>
</UserControl>

Просмотреть файл

@ -0,0 +1,57 @@
using GitHub.VisualStudio.TeamExplorerConnect;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace GitHub.VisualStudio.UI.Views
{
/// <summary>
/// This is a temporary placeholder class until the VS Connect section
/// is done
/// </summary>
public partial class GitHubConnectContent : UserControl
{
public GitHubConnectContent()
{
InitializeComponent();
}
private void cloneLink_Click(object sender, RoutedEventArgs e)
{
ViewModel.DoClone();
}
private void createLink_Click(object sender, RoutedEventArgs e)
{
ViewModel.DoCreate();
}
private void m_Click(object sender, RoutedEventArgs e)
{
}
public PlaceholderGitHubSection ViewModel
{
get { return (PlaceholderGitHubSection)GetValue(ViewModelProperty); }
set { SetValue(ViewModelProperty, value); }
}
public static readonly DependencyProperty ViewModelProperty =
DependencyProperty.Register(
"ViewModel",
typeof(PlaceholderGitHubSection),
typeof(GitHubConnectContent));
}
}