Skip to content

Commit

Permalink
Make GenericFileBrowser ContextMenu more predictable
Browse files Browse the repository at this point in the history
  • Loading branch information
lukeblevins committed Feb 18, 2019
1 parent 043b58b commit c9e742f
Show file tree
Hide file tree
Showing 2 changed files with 141 additions and 81 deletions.
204 changes: 125 additions & 79 deletions Files UWP/GenericFileBrowser.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls"
xmlns:uilib="using:Microsoft.UI.Xaml.Controls"
xmlns:controlsprimitives="using:Microsoft.Toolkit.Uwp.UI.Controls.Primitives"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="using:Files"
xmlns:local1="using:Files.Navigation"
xmlns:local2="using:Files.Filesystem"
xmlns:local3="using:Files.Interacts"
Name="GenericItemView"
mc:Ignorable="d" PointerReleased="GenericItemView_PointerReleased">
mc:Ignorable="d" IsRightTapEnabled="True" RightTapped="GenericItemView_RightTapped" PointerReleased="GenericItemView_PointerReleased">
<Page.Resources>
<Style x:Key="TextBoxStyleForPathBar" TargetType="TextBox">
<Setter Property="Foreground" Value="{ThemeResource DefaultTextForegroundThemeBrush}"/>
Expand Down Expand Up @@ -176,8 +177,36 @@
</Setter.Value>
</Setter>
</Style>

</Page.Resources>
<Page.ContextFlyout>
<MenuFlyout x:Name="EmptySpaceFlyout">
<MenuFlyout.Items>
<MenuFlyoutItem Text="Refresh" Name="RefreshEmptySpace">
<MenuFlyoutItem.Icon>
<FontIcon Glyph="&#xE72C;"/>
</MenuFlyoutItem.Icon>
</MenuFlyoutItem>
<MenuFlyoutItem Text="Paste" Name="PasteEmptySpace" IsEnabled="{x:Bind local3:Interaction.PS.isEnabled, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<MenuFlyoutItem.Icon>
<FontIcon Glyph="&#xE77F;"/>
</MenuFlyoutItem.Icon>
</MenuFlyoutItem>
<MenuFlyoutItem Text="Open in PowerShell...">
<MenuFlyoutItem.Icon>
<FontIcon Glyph="&#xE756;"/>
</MenuFlyoutItem.Icon>
</MenuFlyoutItem>
<MenuFlyoutSeparator/>
<MenuFlyoutItem Text="Properties">
<MenuFlyoutItem.Icon>
<FontIcon Glyph="&#xE946;"/>
</MenuFlyoutItem.Icon>
</MenuFlyoutItem>

</MenuFlyout.Items>
</MenuFlyout>
</Page.ContextFlyout>
<Grid>
<Grid Tag="{x:Bind Tag, Mode=OneWay}" Background="{StaticResource ApplicationPageBackgroundThemeBrush}" Padding="0,0,0,0" VerticalAlignment="Stretch">
<Grid.RowDefinitions>
Expand All @@ -195,7 +224,9 @@
<AppBarButton.Icon>
<FontIcon Glyph="&#xE76B;" FontFamily="Segoe MDL2 Assets"/>
</AppBarButton.Icon>

<AppBarButton.KeyboardAccelerators>
<KeyboardAccelerator Modifiers="Control" Key="Left"/>
</AppBarButton.KeyboardAccelerators>
</AppBarButton>

<AppBarButton LabelPosition="Collapsed" IsEnabled="{x:Bind local2:ItemViewModel.FS.isEnabled, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" x:Name="Forward">
Expand All @@ -204,6 +235,9 @@
<FontIcon Glyph="&#xE76C;" FontFamily="Segoe MDL2 Assets"/>

</AppBarButton.Icon>
<AppBarButton.KeyboardAccelerators>
<KeyboardAccelerator Modifiers="Control" Key="Right"/>
</AppBarButton.KeyboardAccelerators>
</AppBarButton>


Expand Down Expand Up @@ -260,87 +294,99 @@



<controls:DataGrid SelectionChanged="AllView_SelectionChanged" Margin="24,0,0,0" Grid.Row="3" CellEditEnded="AllView_CellEditEnded" FocusVisualPrimaryThickness="0" SelectionMode="Extended" IsDoubleTapEnabled="True" x:FieldModifier="public" x:Name="AllView" Drop="AllView_DropAsync" AutoGenerateColumns="False" CanDrag="False" AllowDrop="True" DragOver="AllView_DragOver" IsRightTapEnabled="True" CanUserReorderColumns="False" IsReadOnly="True" ItemsSource="{x:Bind local2:ItemViewModel.FilesAndFolders}" HorizontalAlignment="Left">

<controls:DataGrid.Resources>
<MenuFlyout x:Name="HeaderRightClickMenu" x:Key="HeaderRightClickFlyout">
<MenuFlyoutItem Text="Edit Columns" Name="EditColumn">
<MenuFlyoutItem.Icon>
<FontIcon Glyph="&#xE70F;"/>
</MenuFlyoutItem.Icon>
</MenuFlyoutItem>
<MenuFlyoutItem Text="Size All Columns to Fit" Name="FitColumns">
<MenuFlyoutItem.Icon>
<FontIcon Glyph="&#xE9A6;"/>
</MenuFlyoutItem.Icon>
</MenuFlyoutItem>
</MenuFlyout>

<MenuFlyout x:Name="RightClickContextMenu" x:Key="RightClickFlyout">
<MenuFlyout.Items>
<MenuFlyoutItem Text="Open With..." Name="OpenItem">
<MenuFlyoutItem.Icon>
<FontIcon Glyph="&#xE7AC;"/>
</MenuFlyoutItem.Icon>
</MenuFlyoutItem>
<controls:DataGrid ContextRequested="AllView_ContextRequested" SelectionChanged="AllView_SelectionChanged" Margin="24,0,0,0" Grid.Row="3" CellEditEnded="AllView_CellEditEnded" FocusVisualPrimaryThickness="0" SelectionMode="Extended" IsDoubleTapEnabled="True" x:FieldModifier="public" x:Name="AllView" Drop="AllView_DropAsync" AutoGenerateColumns="False" CanDrag="False" AllowDrop="True" DragOver="AllView_DragOver" IsRightTapEnabled="True" CanUserReorderColumns="False" IsReadOnly="True" ItemsSource="{x:Bind local2:ItemViewModel.FilesAndFolders}" HorizontalAlignment="Left">

<controls:DataGrid.ColumnHeaderStyle>
<Style TargetType="controlsprimitives:DataGridColumnHeader">
<Setter Property="ContextFlyout">
<Setter.Value>
<MenuFlyout x:Name="HeaderRightClickMenu">
<MenuFlyoutItem Text="Edit Columns" Name="EditColumn">
<MenuFlyoutItem.Icon>
<FontIcon Glyph="&#xE70F;"/>
</MenuFlyoutItem.Icon>
</MenuFlyoutItem>
<MenuFlyoutItem Text="Size All Columns to Fit" Name="FitColumns">
<MenuFlyoutItem.Icon>
<FontIcon Glyph="&#xE9A6;"/>
</MenuFlyoutItem.Icon>
</MenuFlyoutItem>
</MenuFlyout>
</Setter.Value>
</Setter>
</Style>
</controls:DataGrid.ColumnHeaderStyle>
<controls:DataGrid.RowStyle>
<Style TargetType="controls:DataGridRow">
<Setter Property="ContextFlyout">
<Setter.Value>
<MenuFlyout x:Name="RightClickContextMenu">
<MenuFlyout.Items>
<MenuFlyoutItem Text="Open With..." Name="OpenItem">
<MenuFlyoutItem.Icon>
<FontIcon Glyph="&#xE7AC;"/>
</MenuFlyoutItem.Icon>
</MenuFlyoutItem>

<MenuFlyoutItem Text="Share" Name="ShareItem">
<MenuFlyoutItem.Icon>
<FontIcon Glyph="&#xE72D;"/>
</MenuFlyoutItem.Icon>
<MenuFlyoutItem.KeyboardAccelerators>
<KeyboardAccelerator Modifiers="Control" Key="S"/>
</MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>
<MenuFlyoutItem Text="Share" Name="ShareItem">
<MenuFlyoutItem.Icon>
<FontIcon Glyph="&#xE72D;"/>
</MenuFlyoutItem.Icon>
<MenuFlyoutItem.KeyboardAccelerators>
<KeyboardAccelerator Modifiers="Control" Key="S"/>
</MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>

<MenuFlyoutSeparator/>
<MenuFlyoutItem Text="Delete" Name="DeleteItem" >
<MenuFlyoutItem.Icon>
<FontIcon Glyph="&#xE74D;"/>
</MenuFlyoutItem.Icon>
<MenuFlyoutItem.KeyboardAccelerators>
<KeyboardAccelerator Key="Delete"/>
</MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>
<MenuFlyoutItem Text="Rename" Name="RenameItem" >
<MenuFlyoutItem.Icon>
<FontIcon Glyph="&#xE8AC;"/>
</MenuFlyoutItem.Icon>
<MenuFlyoutItem.KeyboardAccelerators>
<KeyboardAccelerator Key="F2"/>
</MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>
<MenuFlyoutSeparator/>
<MenuFlyoutItem Text="Cut" Name="CutItem" >
<MenuFlyoutItem.Icon>
<FontIcon Glyph="&#xE8C6;"/>
</MenuFlyoutItem.Icon>
<MenuFlyoutItem.KeyboardAccelerators>
<KeyboardAccelerator Modifiers="Control" Key="X"/>
</MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>
<MenuFlyoutItem Text="Copy" Name="CopyItem" >
<MenuFlyoutItem.Icon>
<FontIcon Glyph="&#xE8C8;"/>
</MenuFlyoutItem.Icon>
<MenuFlyoutItem.KeyboardAccelerators>
<KeyboardAccelerator Modifiers="Control" Key="C"/>
</MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>
<MenuFlyoutSeparator/>
<MenuFlyoutItem Text="Delete" Name="DeleteItem" >
<MenuFlyoutItem.Icon>
<FontIcon Glyph="&#xE74D;"/>
</MenuFlyoutItem.Icon>
<MenuFlyoutItem.KeyboardAccelerators>
<KeyboardAccelerator Key="Delete"/>
</MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>
<MenuFlyoutItem Text="Rename" Name="RenameItem" >
<MenuFlyoutItem.Icon>
<FontIcon Glyph="&#xE8AC;"/>
</MenuFlyoutItem.Icon>
<MenuFlyoutItem.KeyboardAccelerators>
<KeyboardAccelerator Key="F2"/>
</MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>
<MenuFlyoutSeparator/>
<MenuFlyoutItem Text="Cut" Name="CutItem" >
<MenuFlyoutItem.Icon>
<FontIcon Glyph="&#xE8C6;"/>
</MenuFlyoutItem.Icon>
<MenuFlyoutItem.KeyboardAccelerators>
<KeyboardAccelerator Modifiers="Control" Key="X"/>
</MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>
<MenuFlyoutItem Text="Copy" Name="CopyItem" >
<MenuFlyoutItem.Icon>
<FontIcon Glyph="&#xE8C8;"/>
</MenuFlyoutItem.Icon>
<MenuFlyoutItem.KeyboardAccelerators>
<KeyboardAccelerator Modifiers="Control" Key="C"/>
</MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>

<MenuFlyoutSeparator/>
<MenuFlyoutItem Text="Properties" Name="PropertiesItem">
<MenuFlyoutItem.Icon>
<FontIcon Glyph="&#xE946;"/>
</MenuFlyoutItem.Icon>

</MenuFlyoutItem>
</MenuFlyout.Items>
<MenuFlyoutSeparator/>
<MenuFlyoutItem Text="Properties" Name="PropertiesItem">
<MenuFlyoutItem.Icon>
<FontIcon Glyph="&#xE946;"/>
</MenuFlyoutItem.Icon>

</MenuFlyout>
</controls:DataGrid.Resources>
</MenuFlyoutItem>
</MenuFlyout.Items>

<controls:DataGrid.CellStyle>
</MenuFlyout>
</Setter.Value>
</Setter>
</Style>
</controls:DataGrid.RowStyle>
<controls:DataGrid.CellStyle>
<Style TargetType="controls:DataGridCell">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="FocusVisualPrimaryThickness" Value="0"/>
Expand All @@ -352,7 +398,7 @@
<controls:DataGridTemplateColumn IsReadOnly="True">
<controls:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid Margin="15, 0, 0, 0">
<Grid Margin="15, 0, 0, 0">
<FontIcon Visibility="{Binding FolderImg}" Glyph="&#xE8D5;" FontFamily="Segoe MDL2 Assets" Foreground="#ffe793"/>
<FontIcon Visibility="{Binding EmptyImgVis}" Glyph="&#xE7C3;" FontFamily="Segoe MDL2 Assets"/>
<Image Visibility="{Binding FileIconVis}" Height="20" Width="20" Source="{Binding FileImg}" Stretch="UniformToFill" />
Expand Down
18 changes: 16 additions & 2 deletions Files UWP/GenericFileBrowser.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
using Windows.UI.Xaml.Input;
using Windows.UI.Popups;
using System.IO;
using Windows.UI.Xaml.Controls.Primitives;

namespace Files
{
Expand All @@ -29,6 +30,7 @@ public sealed partial class GenericFileBrowser : Page
public TextBlock textBlock;
public static DataGrid data;
public static MenuFlyout context;
public static MenuFlyout emptySpaceContext;
public static MenuFlyout HeaderContextMenu;
public static Page GFBPageName;
public static ContentDialog collisionBox;
Expand Down Expand Up @@ -67,6 +69,10 @@ public GenericFileBrowser()
AddItemBox = AddDialog;
NameBox = NameDialog;
inputFromRename = RenameInput;
emptySpaceContext = EmptySpaceFlyout;
RefreshEmptySpace.Click += NavigationActions.Refresh_Click;
PasteEmptySpace.Click += Interaction.PasteItem_ClickAsync;

}


Expand Down Expand Up @@ -208,7 +214,6 @@ protected override void OnNavigatedTo(NavigationEventArgs eventArgs)
{
foreach (Microsoft.UI.Xaml.Controls.NavigationViewItemBase NavItemChoice in MainPage.nv.MenuItems)
{
Debug.WriteLine(parameters.Split("\\")[0]);
if (NavItemChoice is Microsoft.UI.Xaml.Controls.NavigationViewItem && NavItemChoice.Tag.ToString().Contains(parameters.Split("\\")[0]))
{
MainPage.Select.itemSelected = NavItemChoice;
Expand Down Expand Up @@ -291,7 +296,6 @@ private void ContentDialog_Loaded(object sender, RoutedEventArgs e)

private void GenericItemView_PointerReleased(object sender, Windows.UI.Xaml.Input.PointerRoutedEventArgs e)
{
data.CommitEdit();
data.SelectedItems.Clear();
}

Expand Down Expand Up @@ -458,6 +462,16 @@ private async void VisiblePath_TextChanged(object sender, KeyRoutedEventArgs e)
}

}

private void GenericItemView_RightTapped(object sender, RightTappedRoutedEventArgs e)
{
GFBPageName.ContextFlyout.ShowAt(GFBPageName);
}

private void AllView_ContextRequested(UIElement sender, ContextRequestedEventArgs args)
{

}
}

public class EmptyFolderTextState : INotifyPropertyChanged
Expand Down

0 comments on commit c9e742f

Please sign in to comment.