package bluej.stride.generic;
import bluej.stride.operations.ToggleBooleanProperty;
import bluej.utility.Debug;
import bluej.utility.javafx.FXPlatformRunnable;
import bluej.utility.javafx.FXRunnable;
import threadchecker.OnThread;
import threadchecker.Tag;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ExtensionDescription
{
public enum ExtensionSource
{
BEFORE, AFTER, INSIDE_FIRST, INSIDE_LATER, MODIFIER, SELECTION;
}
private final char shortcut;
private final String description;
private final boolean showInCatalogue;
private final List<ExtensionSource> validSources;
private FXPlatformRunnable action;
private ToggleBooleanProperty operation;
private Frame frame;
public ExtensionDescription(char shortcut, String description, FXPlatformRunnable action, boolean showInCatalogue, ExtensionSource firstSrc, ExtensionSource... restSrc)
{
this(shortcut, description, showInCatalogue, firstSrc, restSrc);
this.action = action;
}
public ExtensionDescription(ToggleBooleanProperty operation, Frame frame, boolean showInCatalogue, ExtensionSource firstSrc, ExtensionSource... restSrc)
{
this(operation.getKey(), operation.getLabel(), showInCatalogue, firstSrc, restSrc);
this.operation = operation;
this.frame = frame;
}
private ExtensionDescription(char shortcut, String description, boolean showInCatalogue, ExtensionSource firstSrc, ExtensionSource... restSrc)
{
this.shortcut = shortcut;
this.description = description;
this.showInCatalogue = showInCatalogue;
validSources = new ArrayList<>();
validSources.add(firstSrc);
validSources.addAll(Arrays.asList(restSrc));
}
public char getShortcutKey()
{
return shortcut;
}
public String getDescription()
{
return description;
}
@OnThread(Tag.FXPlatform)
public void activate()
{
if (action != null) {
action.run();
}
else if (operation != null) {
operation.activate(frame);
}
else {
Debug.reportError("Action and Operation shouldn't be both null in ExtensionDescription:: " + description);
}
}
@OnThread(Tag.FXPlatform)
public void activate(List<Frame> frames)
{
if (operation != null) {
operation.activate(frames);
}
else {
Debug.reportError("Operation shouldn't be null when calling activate(frames) in ExtensionDescription:: " + description);
}
}
public boolean showInCatalogue()
{
return showInCatalogue;
}
public boolean validFor(ExtensionSource extensionSource)
{
return validSources.contains(extensionSource);
}
}
top,
use,
map,
class ExtensionDescription
. ExtensionDescription
. ExtensionDescription
. ExtensionDescription
. getShortcutKey
. getDescription
. activate
. activate
. showInCatalogue
. validFor
121 neLoCode
+ 0 LoComm