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