Warning: session_start(): open(/var/lib/php/sessions/sess_akljhttg03gqu9julb96q4jq1r, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
!7
compact module ListMethodsOfActiveModule > DynTextArea {
transient O module;
transient JButton btnCall;
void start {
dm_updateMeOnNewActiveModule();
}
S methodToCall() {
S s = trim(lineAtCaret(textArea)), m;
ret endsWith(s, "!") && isIdentifier(m = dropLast(s)) ? m : null;
}
JComponent visualize() {
JComponent c = super.visualize();
onCaretAndNow(textArea, r {
S m = methodToCall();
setEnabledAndText(btnCall, m != null, m != null ? "Call method " + singleQuote(m) : "Move cursor to call a method");
});
ret centerAndSouth(c,
withMargin(jcenteredline(btnCall = jbutton("Call method", r-thread {
S m = methodToCall();
if (m != null) {
print("Calling method " + m + " on " + module);
call(module, m);
}
}))));
}
void update {
O _m = dm_activeModule();
if ((_m != this || module == null) && setField(module := _m)) {
setText("Active Module: " + dm_moduleName(module) + "\n");
new StringBuilder buf;
L l = allLiveMethods_skipOverridden_sortByNameWithinClass(module);
new L lines;
Class c = null;
for (Method m : l) {
if (m.getDeclaringClass() != c) {
c = m.getDeclaringClass();
lines.add("\nclass " + shortClassName(c) + "\n");
}
Class>[] args = m.getParameterTypes();
Class> returns = m.getReturnType();
lines.add(" " + m.getName() +
(typeIsVoid(returns) && empty(args) ? "!"
: trim(": " + joinWithComma(shortClassNames(args))) + " -> " + shortClassName(returns));
}
setText(getText() + lines(lines));
}
}
}