package bluej.stride.slots;
import bluej.utility.javafx.FXRunnable;
import bluej.utility.javafx.JavaFXUtil;
import threadchecker.OnThread;
import threadchecker.Tag;
import javafx.application.Platform;
public class SlotTraversalChars
implements SlotValueListener{
private final char[] endings;
private FXRunnable callback;
public SlotTraversalChars(char... endings)
{
this.endings = endings;
callback = null;
}
public SlotTraversalChars(FXRunnable callback, char... endings)
{
this.endings = endings;
this.callback = callback;
}
@Override
public boolean valueChanged(HeaderItem slot, String oldValue, String newValue, FocusParent<HeaderItem> parent)
{
for (char ending : endings) {
if (newValue.contains("" + ending)) {
if ((newValue.charAt(newValue.length() - 1) == ending))
{
if (ending != ' ' || newValue.length() > 1)
{
if (callback != null)
callback.run();
else
{
if (Platform.isFxApplicationThread())
JavaFXUtil.runPlatformLater(() -> parent.focusRight(slot));
}
}
}
return false;
}
}
return true;
}
public static final SlotTraversalChars ASSIGN_LHS = new SlotTraversalChars('=');
public static final SlotTraversalChars METHOD_NAME = new SlotTraversalChars(' ', '(');
public static final SlotTraversalChars IDENTIFIER = new SlotTraversalChars(' ');
public char[] getChars()
{
return endings;
}
@Override
@OnThread(Tag.FXPlatform)
public void backSpacePressedAtStart(HeaderItem slot)
{
}
@Override
@OnThread(Tag.FXPlatform)
public void deletePressedAtEnd(HeaderItem slot)
{
}
}
top,
use,
map,
class SlotTraversalChars
. SlotTraversalChars
. SlotTraversalChars
. valueChanged
. getChars
. backSpacePressedAtStart
. deletePressedAtEnd
97 neLoCode
+ 0 LoComm