1e21e33ade
Move SecureStoreManager project and tests to Deprecated folder and remove from solution. SecureStore functionality is now integrated into ConfigManager.
115 lines
6.5 KiB
XML
115 lines
6.5 KiB
XML
<Window xmlns="https://github.com/avaloniaui"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:vm="clr-namespace:JdeScoping.SecureStoreManager.ViewModels"
|
|
x:Class="JdeScoping.SecureStoreManager.Views.MainWindow"
|
|
Title="{Binding WindowTitle}"
|
|
Height="500" Width="800"
|
|
MinHeight="400" MinWidth="600"
|
|
WindowStartupLocation="CenterScreen">
|
|
<!-- DataContext is set via DI in App.axaml.cs -->
|
|
|
|
<Window.KeyBindings>
|
|
<KeyBinding Gesture="Ctrl+N" Command="{Binding NewStoreCommand}" />
|
|
<KeyBinding Gesture="Ctrl+O" Command="{Binding OpenStoreCommand}" />
|
|
<KeyBinding Gesture="Ctrl+S" Command="{Binding SaveCommand}" />
|
|
<KeyBinding Gesture="Ctrl+W" Command="{Binding CloseStoreCommand}" />
|
|
<KeyBinding Gesture="Delete" Command="{Binding DeleteSecretCommand}" />
|
|
</Window.KeyBindings>
|
|
|
|
<Grid RowDefinitions="Auto,Auto,*,Auto">
|
|
<!-- Menu Bar -->
|
|
<Menu Grid.Row="0">
|
|
<MenuItem Header="_File">
|
|
<MenuItem Header="_New Store..." Command="{Binding NewStoreCommand}" InputGesture="Ctrl+N" />
|
|
<MenuItem Header="_Open Store..." Command="{Binding OpenStoreCommand}" InputGesture="Ctrl+O" />
|
|
<Separator />
|
|
<MenuItem Header="_Save" Command="{Binding SaveCommand}" InputGesture="Ctrl+S" />
|
|
<Separator />
|
|
<MenuItem Header="_Close Store" Command="{Binding CloseStoreCommand}" InputGesture="Ctrl+W" />
|
|
<Separator />
|
|
<MenuItem Header="E_xit" Command="{Binding ExitCommand}" InputGesture="Alt+F4" />
|
|
</MenuItem>
|
|
<MenuItem Header="_Secrets">
|
|
<MenuItem Header="_Add Secret..." Command="{Binding AddSecretCommand}" />
|
|
<MenuItem Header="_Edit Secret..." Command="{Binding EditSecretCommand}" />
|
|
<Separator />
|
|
<MenuItem Header="_Delete Secret" Command="{Binding DeleteSecretCommand}" InputGesture="Delete" />
|
|
</MenuItem>
|
|
<MenuItem Header="_Tools">
|
|
<MenuItem Header="_Generate Key File..." Command="{Binding GenerateKeyFileCommand}" />
|
|
<MenuItem Header="_Export Current Key..." Command="{Binding ExportKeyCommand}" />
|
|
</MenuItem>
|
|
</Menu>
|
|
|
|
<!-- Toolbar -->
|
|
<Border Grid.Row="1" BorderBrush="LightGray" BorderThickness="0,0,0,1" Padding="5">
|
|
<StackPanel Orientation="Horizontal" Spacing="5">
|
|
<Button Content="New" Command="{Binding NewStoreCommand}" ToolTip.Tip="Create new store (Ctrl+N)" Padding="8,4" />
|
|
<Button Content="Open" Command="{Binding OpenStoreCommand}" ToolTip.Tip="Open existing store (Ctrl+O)" Padding="8,4" />
|
|
<Button Content="Save" Command="{Binding SaveCommand}" ToolTip.Tip="Save changes (Ctrl+S)" Padding="8,4" />
|
|
<Rectangle Width="1" Fill="LightGray" Margin="5,0" />
|
|
<Button Content="Add" Command="{Binding AddSecretCommand}" ToolTip.Tip="Add new secret" Padding="8,4" />
|
|
<Button Content="Edit" Command="{Binding EditSecretCommand}" ToolTip.Tip="Edit selected secret" Padding="8,4" />
|
|
<Button Content="Delete" Command="{Binding DeleteSecretCommand}" ToolTip.Tip="Delete selected secret (Delete)" Padding="8,4" />
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<!-- Main Content -->
|
|
<Grid Grid.Row="2" Margin="10">
|
|
<!-- Empty State -->
|
|
<TextBlock Text="No store open. Use File > New Store or File > Open Store to begin."
|
|
HorizontalAlignment="Center" VerticalAlignment="Center"
|
|
FontSize="14" Foreground="Gray"
|
|
IsVisible="{Binding !IsStoreOpen}" />
|
|
|
|
<!-- Secrets Grid -->
|
|
<DataGrid ItemsSource="{Binding Secrets}"
|
|
SelectedItem="{Binding SelectedSecret}"
|
|
AutoGenerateColumns="False"
|
|
IsReadOnly="True"
|
|
SelectionMode="Single"
|
|
CanUserReorderColumns="True"
|
|
CanUserResizeColumns="True"
|
|
CanUserSortColumns="True"
|
|
GridLinesVisibility="Horizontal"
|
|
IsVisible="{Binding IsStoreOpen}"
|
|
x:Name="SecretsDataGrid"
|
|
DoubleTapped="DataGrid_DoubleTapped">
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="Key" Binding="{Binding Key}" Width="200" />
|
|
<DataGridTextColumn Header="Value" Binding="{Binding DisplayValue}" Width="*" />
|
|
<DataGridTemplateColumn Header="Actions" Width="150">
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
<DataTemplate>
|
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Spacing="5">
|
|
<Button Content="{Binding IsValueVisible, Converter={StaticResource BoolToVisibilityIcon}}"
|
|
Command="{Binding ToggleVisibilityCommand}"
|
|
ToolTip.Tip="Show/Hide value"
|
|
Width="50" Height="24"
|
|
FontSize="11" />
|
|
<Button Content="Copy"
|
|
Command="{Binding CopyToClipboardCommand}"
|
|
ToolTip.Tip="Copy value to clipboard"
|
|
Width="50" Height="24"
|
|
FontSize="11" />
|
|
</StackPanel>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
</DataGridTemplateColumn>
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
</Grid>
|
|
|
|
<!-- Status Bar -->
|
|
<Border Grid.Row="3" Background="#F0F0F0" BorderBrush="LightGray" BorderThickness="0,1,0,0" Padding="10,5">
|
|
<DockPanel>
|
|
<StackPanel Orientation="Horizontal" DockPanel.Dock="Right">
|
|
<TextBlock Text="Secrets: " />
|
|
<TextBlock Text="{Binding Secrets.Count}" />
|
|
</StackPanel>
|
|
<TextBlock Text="{Binding StatusMessage}" />
|
|
</DockPanel>
|
|
</Border>
|
|
</Grid>
|
|
</Window>
|