2025-09-15 15:34:25 +02:00

69 lines
2.0 KiB
Java

package quick.intern;
import quick.Action;
import quick.Color;
import quick.View;
import quick.action.a_nop;
import quick.action.a_redirect;
public class v_select extends View {
private String viewList;
private String lastSelectionWrong;
@Override
public Boolean init() {
StringBuilder sb = new StringBuilder();
for (Class<? extends View> viewClass : global.registeredViews) {
if (viewClass == v_select.class) continue;
View viewInstance = View.instantiate(viewClass);
viewInstance.init();
if (viewInstance.viewSignature != null && !viewInstance.viewSignature.isEmpty()) {
sb.append(": " + viewInstance.viewSignature + " - " + viewInstance.helperText).append("\n");
} else {
sb.append(": " + viewInstance.helperText).append("\n");
}
}
if (sb.length() > 0 && sb.charAt(sb.length() - 1) == '\n') {
sb.deleteCharAt(sb.length() - 1);
}
viewList = sb.toString();
return true;
}
@Override
public void draw() {
terminal.print("Select a action:\n");
for (String line : viewList.split("\n")) terminal.print(line+"\n");
terminal.print("\n");
if (lastSelectionWrong != null) {
terminal.print(Color.ANSI_RED + "Something went wrong with: " + lastSelectionWrong + "\"" + Color.ANSI_RESET + "\n");
terminal.print("\n");
lastSelectionWrong = null;
} else {
terminal.print("\n");
}
}
@Override
public Action onCommand(String command) {
if (command.isEmpty()) {
return new a_nop();
}
View selectedView = View.signatureParse(command);
if (selectedView == null) {
lastSelectionWrong = command;
return new a_nop();
}
return new a_redirect(selectedView);
}
@Override
public Boolean onSelection(String userInputRaw) {
return false;
}
}