Skip to content

Commit f6add71

Browse files
committed
Remove all keyboard shortcuts
1 parent 6a8eb9a commit f6add71

File tree

2 files changed

+32
-6
lines changed

2 files changed

+32
-6
lines changed

src/Blazor.Diagrams.Core/Behaviors/KeyboardShortcutsBehavior.cs

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,41 +2,54 @@
22
using Blazor.Diagrams.Core.Utils;
33
using System;
44
using System.Collections.Generic;
5+
using System.Linq;
56
using System.Threading.Tasks;
67

78
namespace Blazor.Diagrams.Core.Behaviors;
89

910
public class KeyboardShortcutsBehavior : Behavior
1011
{
11-
private readonly Dictionary<string, Func<Diagram, ValueTask>> _shortcuts;
12+
public record KeyboardShortcut(string Key, bool Ctrl, bool Shift, bool Alt, Func<Diagram, ValueTask> Action);
13+
14+
private readonly Dictionary<string, KeyboardShortcut> _shortcuts;
1215

1316
public KeyboardShortcutsBehavior(Diagram diagram) : base(diagram)
1417
{
15-
_shortcuts = new Dictionary<string, Func<Diagram, ValueTask>>();
18+
_shortcuts = new Dictionary<string, KeyboardShortcut>();
1619
SetShortcut("Delete", false, false, false, KeyboardShortcutsDefaults.DeleteSelection);
1720
SetShortcut("g", true, false, true, KeyboardShortcutsDefaults.Grouping);
1821

1922
Diagram.KeyDown += OnDiagramKeyDown;
2023
}
2124

25+
public KeyboardShortcut[] GetShortcuts()
26+
{
27+
return _shortcuts.Values.ToArray();
28+
}
29+
2230
public void SetShortcut(string key, bool ctrl, bool shift, bool alt, Func<Diagram, ValueTask> action)
2331
{
2432
var k = KeysUtils.GetStringRepresentation(ctrl, shift, alt, key);
25-
_shortcuts[k] = action;
33+
_shortcuts[k] = new KeyboardShortcut(key, ctrl, shift, alt, action);
2634
}
27-
35+
2836
public bool RemoveShortcut(string key, bool ctrl, bool shift, bool alt)
2937
{
3038
var k = KeysUtils.GetStringRepresentation(ctrl, shift, alt, key);
3139
return _shortcuts.Remove(k);
3240
}
3341

42+
public void RemoveAllShortcuts()
43+
{
44+
_shortcuts.Clear();
45+
}
46+
3447
private async void OnDiagramKeyDown(KeyboardEventArgs e)
3548
{
3649
var k = KeysUtils.GetStringRepresentation(e.CtrlKey, e.ShiftKey, e.AltKey, e.Key);
37-
if (_shortcuts.TryGetValue(k, out var action))
50+
if (_shortcuts.TryGetValue(k, out var shortcut))
3851
{
39-
await action(Diagram);
52+
await shortcut.Action(Diagram);
4053
}
4154
}
4255

tests/Blazor.Diagrams.Core.Tests/Behaviors/KeyboardShortcutsBehaviorTests.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,19 @@ public void Behavior_ShouldExecuteAction_WhenCombinationIsPressed(string key, bo
3636
executed.Should().BeTrue();
3737
}
3838

39+
[Fact]
40+
public void RemoveAll_ShouldRemoveAllShortcuts()
41+
{
42+
var diagram = new TestDiagram();
43+
var ksb = diagram.GetBehavior<KeyboardShortcutsBehavior>()!;
44+
45+
ksb.GetShortcuts().Length.Should().Be(2);
46+
47+
ksb.RemoveAllShortcuts();
48+
49+
ksb.GetShortcuts().Length.Should().Be(0);
50+
}
51+
3952
[Fact]
4053
public void Behavior_ShouldDoNothing_WhenRemoved()
4154
{

0 commit comments

Comments
 (0)