package bluej.stride.generic;

import bluej.stride.operations.FrameOperation;
import threadchecker.OnThread;
import threadchecker.Tag;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;


| Holds a list of all the extensions, and information about them (e.g. shortcut key, description) | public abstract class ExtensionsDictionary { public static class Entry { private final FrameOperation operation; private final List<Character> shortcutKeys; private final String name; private final String description; private final boolean validOnSelection; public Entry(List<Character> shortcutKeys, FrameOperation operation, boolean validOnSelection, String name, String description) { this.shortcutKeys = new ArrayList<>(shortcutKeys); this.operation = operation; this.name = name; this.description = description; this.validOnSelection = validOnSelection; } public Entry(char shortcutKey, FrameOperation operation, boolean validOnSelection, String name, String description) { this(Arrays.asList(shortcutKey), operation, validOnSelection, name, description); } public boolean hasShortcut(char k) { return shortcutKeys.contains(k); } public List getReadOnlyShortcuts() { return Collections.unmodifiableList(shortcutKeys); } public FrameOperation getOperation() { return operation; } public String getName() { return name; } public String getDescription() { return description; } @OnThread(Tag.FXPlatform) public void activate(Frame frame) { operation.activate(frame); } public boolean validOnSelection() { return validOnSelection; } public String getShortcuts() { StringBuilder builder = new StringBuilder(); builder.append(shortcutKeys.get(0)); for (int i = 1; i < shortcutKeys.size(); i++) { builder.append(", ").append(shortcutKeys.get(i)); } return builder.toString(); } } private final List<Entry> entries; protected ExtensionsDictionary(List<Entry> entries) { this.entries = entries; } public List getAllExtensions() { return entries; }
| Returns empty list if no block for that key | public List getExtyensionsForShortcutKey(char k) { return entries.stream().filter(e -> e.hasShortcut(k)).collect(Collectors.toList()); } }
top, use, map, abstract class ExtensionsDictionary

top, use, map, class ExtensionsDictionary . Entry

.   Entry
.   Entry
.   hasShortcut
.   getReadOnlyShortcuts
.   getOperation
.   getName
.   getDescription
.   activate
.   validOnSelection
.   getShortcuts
.   ExtensionsDictionary
.   getAllExtensions
.   getExtyensionsForShortcutKey




128 neLoCode + 2 LoComm