<?xml version="1.0" encoding="utf-8" ?> <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> <Window x:Class="WixToolset.WixBA.RootView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:wixba="clr-namespace:WixToolset.WixBA" MinWidth="550" MinHeight="400" Width="750" Height="400" AllowsTransparency="False" Background="{x:Null}" Closing="Window_Closing" ResizeMode="CanResizeWithGrip" WindowStartupLocation="CenterScreen" WindowStyle="ThreeDBorderWindow"> <Window.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="pack://application:,,,/WixToolset.WixBA;component/Styles.xaml" /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Window.Resources> <Border Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}" BorderBrush="{DynamicResource {x:Static SystemColors.ActiveBorderBrushKey}}" BorderThickness="0"> <DockPanel x:Name="AppArtBoardArea" Margin="20, 10"> <DockPanel x:Name="ActionArea" DockPanel.Dock="Bottom"> <Grid x:Name="ActionGrid"> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" MinWidth="150" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <StackPanel x:Name="LeftMarqueeDcIsland" Grid.Column="0" VerticalAlignment="Center" DataContext="{Binding UpdateViewModel}"> <ProgressBar x:Name="CheckingUpdatesProgress" MinHeight="10" IsIndeterminate="{Binding CheckingEnabled}" Style="{DynamicResource UpdateMarqueeStyle}" Visibility="{Binding CheckingEnabled, Converter={StaticResource BooleanToVisibilityConverter}}" /> </StackPanel> <StackPanel x:Name="InitiateActionArea" Grid.Column="1" Margin="30, 0, 0, 0" HorizontalAlignment="Right" Orientation="Horizontal"> <!-- Displayed from left to right, when ordered from top to bottom. Most preferred is at the top. --> <StackPanel x:Name="UpdateBtnDcIsland" DataContext="{Binding UpdateViewModel}" Style="{DynamicResource ActionBtnStkPnlStyle}"> <Button AutomationProperties.HelpText="An update is available. Click to get the update" AutomationProperties.Name="Update" Command="{Binding UpdateCommand}" Content="Update" Style="{DynamicResource ActionButtonStyle}" Visibility="{Binding CanUpdate, Converter={StaticResource BooleanToVisibilityConverter}}" /> </StackPanel> <StackPanel x:Name="InstallBtnDcIsland" DataContext="{Binding InstallationViewModel}" Style="{DynamicResource ActionBtnStkPnlStyle}"> <Button AutomationProperties.HelpText="Click to accept license and install" AutomationProperties.Name="Install" Command="{Binding InstallCommand}" Content="_Install" IsDefault="True" Style="{DynamicResource ActionButtonStyle}" Visibility="{Binding InstallEnabled, Converter={StaticResource BooleanToVisibilityConverter}}" /> </StackPanel> <StackPanel x:Name="RepairBtnDcIsland" DataContext="{Binding InstallationViewModel}" Style="{DynamicResource ActionBtnStkPnlStyle}"> <Button x:Name="RepairButton" AutomationProperties.HelpText="Click to Repair" AutomationProperties.Name="Repair" Command="{Binding RepairCommand}" Content="Repair" Style="{DynamicResource ActionButtonStyle}" Visibility="{Binding RepairEnabled, Converter={StaticResource BooleanToVisibilityConverter}}" /> </StackPanel> <StackPanel x:Name="UninstallBtnDcIsland" DataContext="{Binding InstallationViewModel}" Style="{DynamicResource ActionBtnStkPnlStyle}"> <Button AutomationProperties.HelpText="Click to Uninstall" AutomationProperties.Name="Uninstall" Command="{Binding UninstallCommand}" Content="Uninstall" Style="{DynamicResource ActionButtonStyle}" Visibility="{Binding UninstallEnabled, Converter={StaticResource BooleanToVisibilityConverter}}" /> </StackPanel> <StackPanel x:Name="TryAgainBtnDcIsland" DataContext="{Binding InstallationViewModel}" Style="{DynamicResource ActionBtnStkPnlStyle}"> <Button HorizontalAlignment="Center" VerticalAlignment="Center" AutomationProperties.HelpText="Click to try again" AutomationProperties.Name="Try Again?" Command="{Binding TryAgainCommand}" Content="Try Again?" Style="{DynamicResource ActionButtonStyle}" Visibility="{Binding IsFailedCompletion, Converter={StaticResource BooleanToVisibilityConverter}}" /> </StackPanel> <!-- Final Actions - only one of these is expected to be displayed, if any --> <StackPanel x:Name="CloseBtnDcIsland" HorizontalAlignment="Right" DataContext="{Binding InstallationViewModel}" Style="{DynamicResource ActionBtnStkPnlStyle}"> <Button x:Name="CloseButton" AutomationProperties.HelpText="Click to Close" AutomationProperties.Name="Close" Command="{Binding CloseCommand}" Content="Close" Style="{DynamicResource FinalActionButtonStyle}" Visibility="{Binding IsSuccessfulCompletion, Converter={StaticResource BooleanToVisibilityConverter}}" /> </StackPanel> <StackPanel x:Name="CancelBtnDcIsland" HorizontalAlignment="Right" DataContext="{Binding}" Style="{DynamicResource ActionBtnStkPnlStyle}"> <Button AutomationProperties.HelpText="Press to Cancel" AutomationProperties.Name="Cancel" Command="{Binding CancelCommand}" Content="Cancel" Style="{DynamicResource FinalActionButtonStyle}" Visibility="{Binding CancelAvailable, Converter={StaticResource BooleanToVisibilityConverter}}" /> </StackPanel> </StackPanel> </Grid> </DockPanel> <StackPanel x:Name="FinalStatusArea" DataContext="{Binding InstallationViewModel}" HorizontalAlignment="Right" Margin="0,10,0,20" Orientation="Horizontal" Visibility="{Binding IsComplete, Converter={StaticResource BooleanToVisibilityConverter}}" DockPanel.Dock="Bottom"> <TextBlock x:Name="StatusTextBlk" Style="{DynamicResource LabelTextBlkStyle}" Text="{Binding StatusText, StringFormat={}{0}:}" TextBlock.FontWeight="Bold" /> <Button x:Name="ViewLogLink" Margin="10,2,10,0" Command="{Binding OpenLogCommand}" Style="{StaticResource HyperlinkedButtonStyle}"> <TextBlock> <Hyperlink Command="{Binding OpenLogCommand}"><Run FontSize="{DynamicResource FontSizeButton}" Text="View Log" /></Hyperlink> </TextBlock> </Button> <Button x:Name="ViewLogFolderLink" Command="{Binding OpenLogFolderCommand}" Style="{StaticResource HyperlinkedButtonStyle}"> <TextBlock> <Hyperlink Command="{Binding OpenLogFolderCommand}"><Run FontSize="{DynamicResource FontSizeButton}" Text="View Log Folder" /></Hyperlink> </TextBlock> </Button> </StackPanel> <StackPanel x:Name="StatusStkPnlDcIsland" Margin="0,10" DataContext="{Binding ProgressViewModel}" DockPanel.Dock="Bottom"> <StackPanel x:Name="ActionPackageNameTextStkPnl" VerticalAlignment="Top"> <TextBlock Style="{StaticResource StatusTextStyle}" Text="{Binding Message}" TextWrapping="WrapWithOverflow" Visibility="{Binding ProgressEnabled, Converter={StaticResource BooleanToVisibilityConverter}}" /> </StackPanel> <StackPanel x:Name="ActionProgressStkPnl" Margin="0,5,0,0"> <ProgressBar x:Name="ActionProgress" Height="20" VerticalAlignment="Center" Style="{DynamicResource ActionProgressStyle}" Visibility="{Binding ProgressEnabled, Converter={StaticResource BooleanToVisibilityConverter}}" Value="{Binding Progress}" /> </StackPanel> </StackPanel> <StackPanel x:Name="TitleAndLogoStkPnl" DockPanel.Dock="Top"> <Grid x:Name="TitleGrid"> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <TextBlock x:Name="TitleTextBlk" Grid.Column="0" Style="{DynamicResource TitleTextBlkStyle}" Text="{Binding Title, Mode=OneTime}" /> <Image x:Name="Logo" Grid.Column="2" Style="{DynamicResource LogoStyle}"> </Image> </Grid> </StackPanel> <Grid x:Name="MainStkPnl"> <Grid.RowDefinitions> <RowDefinition Height="*" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="1*" /> <ColumnDefinition Width="4*" MinWidth="200" /> </Grid.ColumnDefinitions> <Grid x:Name="SkuInfo" Grid.Column="0" Grid.Row="0" DataContext="{Binding InstallationViewModel}"> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <TextBlock x:Name="SkuPublisherLabel" Grid.Row="0" Grid.Column="0" Style="{DynamicResource LabelTextBlkStyle}" Text="Publisher:" /> <TextBlock x:Name="SkuPublisherData" Grid.Row="0" Grid.Column="1" Style="{DynamicResource DataTextBlkStyle}" Text="{Binding Publisher, Mode=OneTime}" /> <TextBlock x:Name="SkuVersionLabel" Grid.Row="1" Grid.Column="0" Style="{DynamicResource LabelTextBlkStyle}" Text="Version:" /> <TextBlock Grid.Row="1" Grid.Column="1" Style="{DynamicResource DataTextBlkStyle}" Text="{Binding Version}" /> <TextBlock x:Name="SkuLicenseLabel" Grid.Row="2" Grid.Column="0" Style="{DynamicResource LabelTextBlkStyle}" Text="License:" /> <Button x:Name="SkuLicenseBtn" Grid.Row="2" Grid.Column="1" HorizontalAlignment="Left" AutomationProperties.HelpText="View the license" AutomationProperties.Name="License" Command="{Binding LicenseCommand}" KeyboardNavigation.IsTabStop="False" Style="{StaticResource HyperlinkedButtonStyle}"> <TextBlock HorizontalAlignment="Left"> <Hyperlink Command="{Binding LicenseCommand}" IsEnabled="True" KeyboardNavigation.IsTabStop="False"><Run FontSize="{DynamicResource FontSizeButton}" Text="View License" /></Hyperlink> </TextBlock> </Button> <TextBlock x:Name="SkuNewsLabel" Grid.Row="3" Grid.Column="0" Style="{DynamicResource LabelTextBlkStyle}" Text="News:" /> <Button x:Name="SkuNewsBtn" Grid.Row="3" Grid.Column="1" HorizontalAlignment="Left" AutomationProperties.HelpText="Latest News" AutomationProperties.Name="News" Command="{Binding LaunchNewsCommand}" KeyboardNavigation.IsTabStop="False" Style="{StaticResource HyperlinkedButtonStyle}"> <TextBlock HorizontalAlignment="Left"> <Hyperlink Command="{Binding LaunchNewsCommand}" IsEnabled="True" KeyboardNavigation.IsTabStop="False"><Run FontSize="{DynamicResource FontSizeButton}" Text="Latest News" /></Hyperlink> </TextBlock> </Button> <TextBlock x:Name="SkuSupportLabel" Grid.Row="4" Grid.Column="0" Style="{DynamicResource LabelTextBlkStyle}" Text="Support:" /> <Button x:Name="SkuSupportBtn" Grid.Row="4" Grid.Column="1" HorizontalAlignment="Left" AutomationProperties.HelpText="View Home Page for Support" AutomationProperties.Name="Home Page" Command="{Binding LaunchHomePageCommand}" KeyboardNavigation.IsTabStop="False" Style="{StaticResource HyperlinkedButtonStyle}"> <TextBlock HorizontalAlignment="Left"> <Hyperlink Command="{Binding LaunchHomePageCommand}" IsEnabled="True" KeyboardNavigation.IsTabStop="False"><Run FontSize="{DynamicResource FontSizeButton}" Text="{Binding SupportUrl, Mode=OneTime}" /></Hyperlink> </TextBlock> </Button> <TextBlock x:Name="SkuVSExtensionLabel1" Grid.Row="5" Grid.Column="0" Style="{DynamicResource LabelTextBlkStyle}" Text="Visual Studio" /> <TextBlock x:Name="SkuVSExtensionLabel2" Grid.Row="6" Grid.Column="0" Style="{DynamicResource LabelTextBlkStyle}" Text="Extension:" /> <Button x:Name="SkuVSExtensionBtn" Grid.Row="6" Grid.Column="1" HorizontalAlignment="Left" AutomationProperties.HelpText="View Releases Page for VS Extension" AutomationProperties.Name="Releases Page" Command="{Binding LaunchVSExtensionPageCommand}" KeyboardNavigation.IsTabStop="False" Style="{StaticResource HyperlinkedButtonStyle}"> <TextBlock HorizontalAlignment="Left"> <Hyperlink Command="{Binding LaunchVSExtensionPageCommand}" IsEnabled="True" KeyboardNavigation.IsTabStop="False"><Run FontSize="{DynamicResource FontSizeButton}" Text="{Binding VSExtensionUrl, Mode=OneTime}" /></Hyperlink> </TextBlock> </Button> </Grid> <DockPanel x:Name="UpdateChangesStkPnlDcIsland" Grid.Row="0" Grid.Column="2" DataContext="{Binding UpdateViewModel}" Visibility="{Binding IsUpdateAvailable, Converter={StaticResource BooleanToVisibilityConverter}}"> <Grid x:Name="UpdateInfoGrid" DockPanel.Dock="Top"> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <TextBlock x:Name="UpdateTitleLabel" Grid.Row="0" Grid.Column="0" Style="{DynamicResource LabelTextBlkStyle}" Text="Available Update:" /> <TextBlock x:Name="UpdateVersionLabel" Grid.Row="0" Grid.Column="1" Style="{DynamicResource DataTextBlkStyle}" Text="{Binding UpdateVersion}" /> </Grid> <WebBrowser DockPanel.Dock="Bottom" wixba:BrowserProperties.HtmlDoc="{Binding UpdateChanges}" /> </DockPanel> <TextBlock x:Name="DowngradeMessageTextBlk" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" DataContext="{Binding InstallationViewModel}" Style="{DynamicResource LabelTextBlkStyle}" Text="{Binding DowngradeMessage}" Visibility="{Binding Downgrade, Converter={StaticResource BooleanToVisibilityConverter}}" /> </Grid> </DockPanel> </Border> </Window>