Browse Source

Added deleting and editing items on Data entry grid

Kenric Nugteren 1 year ago
parent
commit
fa51f778bc

+ 1 - 12
prs.desktop/Panels/DataEntry/DataEntryList.xaml

@@ -35,18 +35,7 @@
                         Drop="DynamicTabItem_Drop"
                         ContextMenuOpening="_dataEntryGrid_OnContextMenuOpening">
                         <local:DataEntryGrid.ContextMenu>
-                            <ContextMenu x:Name="_uploadMenu" Opened="_uploadMenu_OnOpened" >
-                                <MenuItem x:Name="_additem" Header="Load From File" Click="_addItem_OnClick" />
-                                <MenuItem x:Name="_pasteItem" Header="Paste From Clipboard" Click="_pasteItem_OnClick" />
-                                
-                                <Separator x:Name="_changetagseparator"/>
-                                <MenuItem x:Name="_changeTag" Header="Set Tag"/>
-                                <MenuItem x:Name="_changeNote" Header="Set Note" Click="_changeNote_Click"/>
-                                
-                                <Separator x:Name="_archiveseparator"/>
-                                <MenuItem x:Name="_archive" Header="Archive" Click="_remove_OnClick"/>
-
-                            </ContextMenu>
+                            <ContextMenu x:Name="_uploadMenu" Opened="_uploadMenu_OnOpened"/>
                         </local:DataEntryGrid.ContextMenu>
                     </local:DataEntryGrid>
 

+ 57 - 46
prs.desktop/Panels/DataEntry/DataEntryList.xaml.cs

@@ -466,68 +466,79 @@ public partial class DataEntryList : UserControl, ICorePanel, IDockPanel
 
     private void _uploadMenu_OnOpened(object sender, RoutedEventArgs e)
     {
+        _uploadMenu.Items.Clear();
+
+        _uploadMenu.AddItem("Load from File", null, _addItem_OnClick);
         if (Clipboard.ContainsText())
         {
-            _pasteItem.Header = "Paste Text from Clipboard";
-            _pasteItem.Visibility = Visibility.Visible;
+            _uploadMenu.AddItem("Paste Text from Clipboard", null, _pasteItem_OnClick);
         }
         else if (Clipboard.ContainsImage())
         {
-            _pasteItem.Header = "Paste Image from Clipboard";
-            _pasteItem.Visibility = Visibility.Visible;
+            _uploadMenu.AddItem("Paste Image from Clipboard", null, _pasteItem_OnClick);
         }
         else if (Clipboard.ContainsFileDropList())
         {
             int count = CheckAllowableFiles();
             if (count > 0)
             {
-                _pasteItem.Header = $@"Paste {count} File{(count > 1 ? "s" : "")} from Clipboard";
-                _pasteItem.Visibility = Visibility.Visible;
+                _uploadMenu.AddItem($@"Paste {count} File{(count > 1 ? "s" : "")} from Clipboard", null, _pasteItem_OnClick);
             }
         }
-        else
-            _pasteItem.Visibility = Visibility.Collapsed;
-        
-        _archive.Visibility = _dataEntryGrid.SelectedRows.Any() && Security.CanEdit<DataEntryDocument>()
-            ? Visibility.Visible
-            : Visibility.Collapsed;
-
-        _archiveseparator.Visibility = _archive.Visibility;
-        
-        _tags ??= DataEntryGrid.GetVisibleTagList();
-        _changeTag.Items.Clear();
-
-        foreach (var tag in _tags)
-            _changeTag.Items.Add(new MenuItem()
+        _uploadMenu.AddSeparatorIfNeeded();
+        if(_dataEntryGrid.SelectedRows.Length > 0)
+        {
+            if (Security.CanEdit<DataEntryDocument>())
             {
-                Header = tag.Name, 
-                Command = new Command((_) => ChangeTag(tag)) { }
-            });
-        _changeTag.Items.Add(new Separator());
-        _changeTag.Items.Add(new MenuItem()
+                if (Security.IsAllowed<CanSetupDataEntryTags>())
+                {
+                    _tags ??= DataEntryGrid.GetVisibleTagList();
+                    if(_tags.Count > 0)
+                    {
+                        var changeTag = _uploadMenu.AddItem("Set Tag", null, null);
+                        foreach(var tag in _tags)
+                        {
+                            changeTag.AddItem(tag.Name, null, tag, ChangeTag);
+                        }
+                        changeTag.AddSeparatorIfNeeded();
+                        changeTag.AddItem<DataEntryTag?>("Clear Tags", null, null, ChangeTag);
+                    }
+                }
+                _uploadMenu.AddItem("Set Note", null, _dataEntryGrid.SelectedRows, _changeNote_Click);
+                _uploadMenu.AddSeparator();
+                _uploadMenu.AddItem("Archive", null, _remove_OnClick);
+                _uploadMenu.AddItem("Edit", null, _dataEntryGrid.SelectedRows, EditItem_Click);
+            }
+            if (Security.CanDelete<DataEntryDocument>())
+            {
+                _uploadMenu.AddItem("Delete", null, _dataEntryGrid.SelectedRows, DeleteItem_Click);
+            }
+        }
+
+        _uploadMenu.RemoveUnnecessarySeparators();
+    }
+
+    private void DeleteItem_Click(CoreRow[] obj)
+    {
+        _dataEntryGrid.DeleteItems(obj);
+        _dataEntryGrid.Refresh(false, true);
+    }
+
+    private void EditItem_Click(CoreRow[] rows)
+    {
+        var items = _dataEntryGrid.LoadItems(rows);
+        if (_dataEntryGrid.EditItems(items))
         {
-            Header= "Clear Tags",
-            Command = new Command((_) => ChangeTag(new DataEntryTag()))
-        });
-        
-        _changeTag.Visibility = _dataEntryGrid.SelectedRows.Any() && _tags.Any() && (Security.CanEdit<DataEntryDocument>() || Security.IsAllowed<CanSetupDataEntryTags>())
-            ? Visibility.Visible
-            : Visibility.Collapsed;
-        _changeNote.Visibility = _dataEntryGrid.SelectedRows.Any() && Security.CanEdit<DataEntryDocument>()
-            ? Visibility.Visible
-            : Visibility.Collapsed;
-        
-        _changetagseparator.Visibility = _archive.Visibility;
-        
+            _dataEntryGrid.Refresh(false, true);
+        }
     }
 
-    private void ChangeTag(object obj)
+    private void ChangeTag(DataEntryTag? obj)
     {
-        if (obj is DataEntryTag tag)
-            _dataEntryGrid.DoChangeTags(tag.ID);
+        _dataEntryGrid.DoChangeTags(obj?.ID ?? Guid.Empty);
     }
 
-    private void _addItem_OnClick(object sender, RoutedEventArgs e)
+    private void _addItem_OnClick()
     {
         var ofd = new OpenFileDialog()
         {
@@ -545,7 +556,7 @@ public partial class DataEntryList : UserControl, ICorePanel, IDockPanel
         }
     }
 
-    private void _pasteItem_OnClick(object sender, RoutedEventArgs e)
+    private void _pasteItem_OnClick()
     {
         if (Clipboard.ContainsText())
         {
@@ -611,7 +622,7 @@ public partial class DataEntryList : UserControl, ICorePanel, IDockPanel
             _historyGrid.Refresh(false,true);
     }
 
-    private void _remove_OnClick(object sender, RoutedEventArgs e)
+    private void _remove_OnClick()
     {
         _dataEntryGrid.DoRemove();
     }
@@ -621,9 +632,9 @@ public partial class DataEntryList : UserControl, ICorePanel, IDockPanel
         _historyGrid.DoReopen();
     }
 
-    private void _changeNote_Click(object sender, RoutedEventArgs e)
+    private void _changeNote_Click(CoreRow[] rows)
     {
-        var notes = _dataEntryGrid.SelectedRows.ToObjects<DataEntryDocument>().Select(x => x.Note).Distinct().ToArray();
+        var notes = rows.ToObjects<DataEntryDocument>().Select(x => x.Note).Distinct().ToArray();
 
         var note = notes.Length == 1 ? notes[0] : "";