Files
BeWoAdmin/BeWoAdmin/Window1.xaml
2016-06-27 02:24:18 +02:00

335 lines
24 KiB
XML

<Window x:Class="BeWoAdmin.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:BeWoAdmin"
Name="MainWindow" Title="{Binding ElementName=MainWindow, Path=WindowTitle}" Height="700" Width="900" Closing="MainWindow_Closing"
WindowStartupLocation="CenterScreen" StateChanged="MainWindow_StateChanged" Background="Transparent" AllowsTransparency="True" WindowStyle="None" ResizeMode="CanResizeWithGrip">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="WPF/Resources.xaml" />
<ResourceDictionary Source="icons/IconResources.xaml" />
</ResourceDictionary.MergedDictionaries>
<!-- TreeViewItem Style -->
<Style BasedOn="{StaticResource TreeViewItemStyle}" TargetType="{x:Type TreeViewItem}">
<EventSetter Event="TreeViewItem.MouseDown" Handler="TreeViewItem_MouseButtonDown"/>
</Style>
<!-- TreeViewItem Templates -->
<!-- Server -->
<HierarchicalDataTemplate DataType="{x:Type local:Server}" ItemsSource="{Binding Path=Tenants}">
<StackPanel Orientation="Horizontal" Margin="2 0 2 0" SnapsToDevicePixels="True" Background="{Binding Path=WasSuccessful, Converter={StaticResource SuccessBackgroundConverter}}">
<StackPanel.ContextMenu>
<ContextMenu>
<MenuItem Header="Datenbank hinzufügen" Command="local:CustomCommands.AddDatabase">
<MenuItem.Icon>
<Image Source="Icons/database_add.png" />
</MenuItem.Icon>
</MenuItem>
<Separator />
<MenuItem Header="DBs nach Namen sortieren" Click="SortByNameMenuItem_Click" />
</ContextMenu>
</StackPanel.ContextMenu>
<CheckBox VerticalAlignment="Center" Margin="1 1 5 1" IsChecked="{Binding Path=IsChecked}" Focusable="False" Checked="CheckBox_Click" Unchecked="CheckBox_Click" />
<Image Source="icons/server.png" />
<TextBlock Margin="1 1 1 1" Text="{Binding Path=UriHost}" FontWeight="Bold">
<TextBlock.Effect>
<DropShadowEffect Color="LightBlue" BlurRadius="5" Opacity="1" ShadowDepth="0" />
</TextBlock.Effect>
</TextBlock>
<TextBlock VerticalAlignment="Center" Margin="1 1 5 1"> | User:</TextBlock>
<TextBlock VerticalAlignment="Center" Margin="1 1 1 1" Text="{Binding Path=User.Username}" />
</StackPanel>
</HierarchicalDataTemplate>
<!-- Tenant -->
<HierarchicalDataTemplate DataType="{x:Type local:Tenant}">
<Border MouseMove="Border_MouseMove" DragEnter="DBDragDrop" DragOver="DBDragDrop" DragLeave="DBDragDrop" Drop="DBDragDrop" Tag="{Binding}" AllowDrop="True" BorderBrush="{StaticResource SelectedBorderBrush}" >
<StackPanel Orientation="Horizontal" Margin="2 0 2 0" SnapsToDevicePixels="True" Background="{Binding Path=WasSuccessful, Converter={StaticResource SuccessBackgroundConverter}}">
<StackPanel.ContextMenu>
<ContextMenu>
<MenuItem Header="Datenbank hinzufügen" Command="local:CustomCommands.AddDatabase">
<MenuItem.Icon>
<Image Source="Icons/database_add.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Datenbank entfernen" Command="local:CustomCommands.RemoveDatabase">
<MenuItem.Icon>
<Image Source="Icons/database_delete.png" />
</MenuItem.Icon>
</MenuItem>
<Separator />
<MenuItem Header="Verbindung Testen" Command="local:CustomCommands.TestConnection">
<MenuItem.Icon>
<Image Source="Icons/database_connect.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Tabellen der Datenbank anzeigen" Command="local:CustomCommands.ShowTables">
<MenuItem.Icon>
<Image Source="Icons/database_table.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="SQL-Befehl auf dieser Datenbank ausführen" Command="local:CustomCommands.ExecuteSqlOnSingleDB">
<MenuItem.Icon>
<Image Source="Icons/database_lightning.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Lizenzen erweitern" Command="local:CustomCommands.ExtendDBLicenses">
<MenuItem.Icon>
<Image Source="Icons\license.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Im Browser aufrufen" Command="local:CustomCommands.OpenBrowser">
</MenuItem>
<MenuItem Header="Fehlermeldung in die Zwischenablage kopieren" Click="CopyErrorMessageToClipboard" Tag="{Binding Path=ErrorDescription}" Visibility="{Binding Path=WasSuccessful, Converter={StaticResource VisibleIfFalseConverter}}">
<MenuItem.Icon>
<Image Source="Icons/page_copy.png" />
</MenuItem.Icon>
</MenuItem>
</ContextMenu>
</StackPanel.ContextMenu>
<CheckBox VerticalAlignment="Center" Margin="1 1 5 1" IsChecked="{Binding Path=IsChecked}" Focusable="False" Checked="CheckBox_Click" Unchecked="CheckBox_Click" />
<Image Source="icons/database.png" />
<TextBlock VerticalAlignment="Center" Margin="1 1 1 1" Text="{Binding Path=Name}" FontWeight="Bold">
<TextBlock.Effect>
<DropShadowEffect Color="LightBlue" BlurRadius="5" Opacity="1" ShadowDepth="0" />
</TextBlock.Effect>
</TextBlock>
<TextBlock VerticalAlignment="Center" Margin="1 1 5 1">, Datenbank:</TextBlock>
<TextBlock VerticalAlignment="Center" Margin="1 1 1 1" Text="{Binding Path=Database}" />
<TextBlock VerticalAlignment="Center" Margin="1 1 5 1">, User:</TextBlock>
<TextBlock VerticalAlignment="Center" Margin="1 1 1 1" Foreground="{Binding Path=HasOwnUser, Converter={StaticResource ForegroundConverter}}" Text="{Binding Path=User.Username}" FontWeight="Bold" />
<TextBlock VerticalAlignment="Center" Margin="5 1 1 1" Text="{Binding Path=ErrorDescription}" Foreground="DarkRed" />
</StackPanel>
</Border>
</HierarchicalDataTemplate>
</ResourceDictionary>
</Window.Resources>
<Window.CommandBindings>
<CommandBinding Command="ApplicationCommands.New" Executed="New_Executed" />
<CommandBinding Command="ApplicationCommands.Open" Executed="Open_Executed" />
<CommandBinding Command="ApplicationCommands.Save" Executed="Save_Executed" CanExecute="Save_CanExecute" />
<CommandBinding Command="ApplicationCommands.SaveAs" Executed="SaveAs_Executed" />
<CommandBinding Command="ApplicationCommands.Close" Executed="Close_Executed" />
<CommandBinding Command="local:CustomCommands.AddServer" Executed="AddServer_Executed" />
<CommandBinding Command="local:CustomCommands.AddDatabase" Executed="AddDatabase_Executed" CanExecute="AddDatabase_CanExecute" />
<CommandBinding Command="local:CustomCommands.RemoveDatabase" Executed="RemoveDatabase_Executed" CanExecute="RemoveDatabase_CanExecute" />
<CommandBinding Command="local:CustomCommands.CreateDatabase" Executed="CreateDatabase_Executed" CanExecute="CreateDatabase_CanExecute" />
<CommandBinding Command="local:CustomCommands.ExecuteSqlOnCheckedDBs" Executed="ExecuteSqlOnCheckedDBs_Executed" CanExecute="ExecuteSql_CanExecute" />
<CommandBinding Command="local:CustomCommands.ExecuteSqlOnSingleDB" Executed="ExecuteSqlOnSingleDB_Executed" CanExecute="ExecuteSql_CanExecute" />
<CommandBinding Command="local:CustomCommands.CancelExecution" Executed="CancelExecution_Executed" CanExecute="CancelExecution_CanExecute" />
<CommandBinding Command="local:CustomCommands.TestConnection" Executed="TestConnection_Executed" />
<CommandBinding Command="local:CustomCommands.TestAllConnections" Executed="TestAllConnections_Executed" CanExecute="ExecuteSql_CanExecute" />
<CommandBinding Command="local:CustomCommands.ShowTables" Executed="ShowTables_Executed" />
<CommandBinding Command="local:CustomCommands.ExtendDBLicenses" Executed="ExtendDBLicenses_Executed" />
<CommandBinding Command="local:CustomCommands.OpenBrowser" Executed="OpenBrowser_Excecuted" />
</Window.CommandBindings>
<!-- Content -->
<Border BorderBrush="LightGray" Background="{StaticResource BackgroundBrush}" BorderThickness="2" CornerRadius="5" SnapsToDevicePixels="True" MouseLeftButtonDown="StartDrag">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<!-- Title, Menu and Toolbar -->
<Grid Background="{StaticResource TitleBackgroundBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.Resources>
<Style TargetType="Button" BasedOn="{StaticResource ToolBarButtonStyle}" />
</Grid.Resources>
<!-- Title -->
<Label Grid.RowSpan="3" Content="{Binding ElementName=MainWindow, Path=WindowTitle}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
HorizontalContentAlignment="Center" FontSize="13" Padding="2" MouseDoubleClick="TitleLabel_MouseDoubleClick" FontWeight="SemiBold" />
<Label HorizontalAlignment="Left" MouseDoubleClick="InvisibleIconArea_MouseDoubleClick" Height="15" Width="15" Margin="5 0 0 0" />
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
<Button Content="{StaticResource MinimizeIcon}" Click="MinimizeButton_Click" />
<Button Content="{StaticResource RestoreIcon}" Click="MaximizeOrRestoreButton_Click" Name="normalSizeButton" Visibility="Collapsed" />
<Button Content="{StaticResource MaximizeIcon}" Click="MaximizeOrRestoreButton_Click" Name="maximizeButton" />
<Button Content="{StaticResource CloseIcon}" Command="ApplicationCommands.Close" Margin="0 0 1 0" Background="Red" />
</StackPanel>
<!-- Menu -->
<Menu Grid.Row="1" HorizontalAlignment="Left" Background="Transparent" Margin="5 0 0 0" >
<MenuItem Header="_Datei">
<MenuItem Header="_Neu" Command="ApplicationCommands.New">
<MenuItem.Icon>
<Image Source="Icons/page_white.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Ö_ffnen..." Command="ApplicationCommands.Open">
<MenuItem.Icon>
<Image Source="Icons/disk.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="_Speichern" Command="ApplicationCommands.Save">
<MenuItem.Icon>
<Image Source="Icons/folder.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Speichern _unter..." Command="ApplicationCommands.SaveAs">
</MenuItem>
<Separator />
<MenuItem Header="_Beenden" Command="ApplicationCommands.Close">
<MenuItem.Icon>
<Image Source="Icons/door_in.png" />
</MenuItem.Icon>
</MenuItem>
</MenuItem>
<MenuItem Header="D_atenbanken">
<MenuItem Header="Server Hinzufügen" Command="local:CustomCommands.AddServer">
<MenuItem.Icon>
<Image Source="Icons/server_add.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Datenbank _Hinzufügen" Command="local:CustomCommands.AddDatabase">
<MenuItem.Icon>
<Image Source="Icons/database_add.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Server/Datenbank _Entfernen" Command="local:CustomCommands.RemoveDatabase">
<MenuItem.Icon>
<Image Source="Icons/database_delete.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="_Neue Datenbank erstellen" Command="local:CustomCommands.CreateDatabase">
<MenuItem.Icon>
<Image Source="Icons/page_white_database.png" />
</MenuItem.Icon>
</MenuItem>
<Separator />
<MenuItem Header="Verbindungen Testen" Command="local:CustomCommands.TestAllConnections" Visibility="{Binding RelativeSource={RelativeSource self}, Path=IsEnabled, Converter={StaticResource CollapsedIfFalseConverter}}">
<MenuItem.Icon>
<Image Source="Icons/database_connect.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="_SQL-Befehl ausführen" Command="local:CustomCommands.ExecuteSqlOnCheckedDBs" Visibility="{Binding RelativeSource={RelativeSource self}, Path=IsEnabled, Converter={StaticResource CollapsedIfFalseConverter}}">
<MenuItem.Icon>
<Image Source="Icons/database_lightning.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="_SQL-Befehl abbrechen" Command="local:CustomCommands.CancelExecution" Visibility="{Binding RelativeSource={RelativeSource self}, Path=IsEnabled, Converter={StaticResource CollapsedIfFalseConverter}}">
<MenuItem.Icon>
<Image Source="Icons/cancel.png" />
</MenuItem.Icon>
</MenuItem>
</MenuItem>
</Menu>
<!-- Toolbar -->
<StackPanel Grid.Row="2" Margin="5 0 0 0" Orientation="Horizontal">
<Button Command="ApplicationCommands.New" ToolTip="Neu (Strg+N)">
<Image Source="Icons/page_white.png" />
</Button>
<Button Command="ApplicationCommands.Open" ToolTip="Öffnen (Strg+O)">
<Image Source="Icons/folder.png" />
</Button>
<Button Command="ApplicationCommands.Save" ToolTip="Speichern (Strg+S)">
<Image Source="Icons/disk.png" />
</Button>
<Rectangle Width="1" VerticalAlignment="Stretch" Margin="4" Fill="LightGray" />
<Button Command="local:CustomCommands.AddServer" ToolTip="Server hinzufügen">
<Image Source="Icons/server_add.png" />
</Button>
<Button Command="local:CustomCommands.AddDatabase" ToolTip="Datenbank hinzufügen (Strg+A)">
<Image Source="Icons/database_add.png" />
</Button>
<Button Command="local:CustomCommands.RemoveDatabase" ToolTip="Datenbank entfernen (Entf)">
<Image Source="Icons/database_delete.png" />
</Button>
<Button Command="local:CustomCommands.CreateDatabase" ToolTip="Neue Datenbank erstellen (Strg+Shift+N)">
<Image Source ="Icons/page_white_database.png" />
</Button>
<Rectangle Width="1" VerticalAlignment="Stretch" Margin="4" Fill="LightGray" />
<Button Command="local:CustomCommands.TestAllConnections" ToolTip="Verbindung zu ausgewählten Datenbanken testen" Visibility="{Binding RelativeSource={RelativeSource self}, Path=IsEnabled, Converter={StaticResource CollapsedIfFalseConverter}}">
<Image Source="Icons/database_connect.png" />
</Button>
<Button Command="local:CustomCommands.ExecuteSqlOnCheckedDBs" ToolTip="SQL-Befehl ausführen (Strg+E)" Visibility="{Binding RelativeSource={RelativeSource self}, Path=IsEnabled, Converter={StaticResource CollapsedIfFalseConverter}}">
<Image Source="Icons/database_lightning.png" />
</Button>
<Button Command="local:CustomCommands.CancelExecution" ToolTip="Abbrechen (Esc)" Visibility="{Binding RelativeSource={RelativeSource self}, Path=IsEnabled, Converter={StaticResource CollapsedIfFalseConverter}}">
<Image Source="Icons/cancel.png" />
</Button>
</StackPanel>
</Grid>
<!-- Main Tree -->
<TreeView Grid.Row="1" Name="mainTree" KeyUp="mainTree_KeyUp" SelectedItemChanged="mainTree_SelectedItemChanged" Margin="5 5 5 0" />
<!-- Edit Grid -->
<Grid Grid.Row="2" DataContext="{Binding ElementName=mainTree, Path=SelectedItem}" Margin="5">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Name="UriLabel" Visibility="Collapsed" VerticalAlignment="Center" HorizontalAlignment="Right">URI:</TextBlock>
<TextBox Name="UriText" Visibility="Collapsed" Grid.Column="1" Text="{Binding Path=Uri}" Margin="2 0 2 1" TextChanged="TextBox_TextChanged" GotFocus="TextBox_GotFocus" />
<TextBlock Name="PortLabel" Visibility="Collapsed" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Right">Port:</TextBlock>
<TextBox Name="PortText" Visibility="Collapsed" Grid.Column="3" Grid.ColumnSpan="2" Text="{Binding Path=Port}" Margin="2 0 2 1" TextChanged="TextBox_TextChanged" GotFocus="TextBox_GotFocus" />
<TextBlock Name="TenantLabel" Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Right">Mandant:</TextBlock>
<TextBox Name="TenantText" Grid.Row="1" Grid.Column="1" Text="{Binding Path=Name}" Margin="2 0 7 1" TextChanged="TextBox_TextChanged" GotFocus="TextBox_GotFocus" />
<TextBlock Name="DBLabel" Grid.Row="1" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Right">Datenbank:</TextBlock>
<TextBox Name="DBText" Grid.Row="1" Grid.ColumnSpan="2" Grid.Column="3" Text="{Binding Path=Database}" Margin="2 0 2 1" TextChanged="TextBox_TextChanged" GotFocus="TextBox_GotFocus" />
<TextBlock Grid.Row="2" VerticalAlignment="Center" HorizontalAlignment="Right">Benutzername:</TextBlock>
<TextBox Grid.Row="2" Grid.Column="1" Margin="2 4 7 1" Name="UsernameTextBox" Foreground="{Binding Path=HasOwnUser, Converter={StaticResource ForegroundConverter}}" GotFocus="TextBox_GotFocus" TextChanged="UsernameTextBox_TextChanged" />
<TextBlock Grid.Row="2" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Right">Passwort:</TextBlock>
<PasswordBox Grid.Row="2" Grid.Column="3" Margin="2 4 2 1" Name="UserPasswordBox" Background="{Binding Path=HasOwnUser, Converter={StaticResource BackgroundConverter}}" PasswordChanged="UserPasswordBox_PasswordChanged" />
<Button Grid.Row="2" Grid.Column="4" Name="ApplyButton" IsEnabled="false" Margin="2 2 2 0" Click="ApplyButton_Click" Padding="3 1 3 1">übernehmen</Button>
</Grid>
<Separator Grid.Row="3" Margin="0" Background="LightGray" />
<!-- Status Bar -->
<StatusBar Grid.Row="4" Background="Transparent">
<StatusBar.ItemsPanel>
<ItemsPanelTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="4" />
</Grid.ColumnDefinitions>
</Grid>
</ItemsPanelTemplate>
</StatusBar.ItemsPanel>
<StatusBarItem Grid.Column="1">
<TextBlock Name="NumberOfItemsText" />
</StatusBarItem>
<Separator Grid.Column="2" Background="LightGray"/>
<StatusBarItem Grid.Column="3">
<StackPanel Name="ProgressPanel" Orientation="Horizontal" Visibility="Hidden">
<TextBlock Name="StatusText" Margin="0 0 2 0" >SQL-Befehl wird ausgeführt...</TextBlock>
<ProgressBar Name="ProgressBar" Width="150" Height="15" />
</StackPanel>
</StatusBarItem>
</StatusBar>
<!-- Dark Overlay -->
<Border Opacity="0" Background="Black" CornerRadius="4" Grid.RowSpan="5" Visibility="Collapsed" Name="darkOverlay" SnapsToDevicePixels="True" />
</Grid>
</Border>
</Window>