Forge
csharp4405de34
1namespace CascadeIDE.IdeDisplay.CommandPalette;
2
3/// <summary>
4/// IDS: композитор поверхности палитры команд (канал → снимок для оверлея Ctrl+Q).
5/// </summary>
6public sealed class CommandPaletteSurfaceCompositor
7 : IIdsSurfaceCompositor<CommandPaletteSurfaceIntent, CommandPaletteSurfaceSnapshot>
8{
9 public CommandPaletteSurfaceSnapshot Compose(CommandPaletteSurfaceIntent intent)
10 {
11 var query = intent.Query;
12 var rows = intent.Rows;
13 var selectedIndex = intent.SelectedIndex;
14
15 if (rows.Count == 0)
16 return new CommandPaletteSurfaceSnapshot(query, -1, []);
17
18 var items = new List<CommandPaletteSurfaceEntry>(rows.Count);
19 foreach (var row in rows)
20 {
21 items.Add(new CommandPaletteSurfaceEntry(
22 row.PaletteId,
23 row.CommandId,
24 row.Title,
25 row.Subtitle,
26 row.HotkeyHint,
27 row.IsAvailable,
28 row.ShowUnavailableHint,
29 row.UnavailableHint,
30 row.RowOpacity));
31 }
32
33 var normalizedSelected = selectedIndex < 0
34 ? 0
35 : Math.Min(selectedIndex, items.Count - 1);
36 return new CommandPaletteSurfaceSnapshot(query, normalizedSelected, items);
37 }
38}
39
View only · write via MCP/CIDE