Warning: session_start(): open(/var/lib/php/sessions/sess_nofv8lhn0pdbh116r3j4kbs57i, 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
sclass ListMethodsOfActiveModule extends DynTextArea {
transient O module;
void start {
dm_updateMeOnNewActiveModule();
}
JComponent visualize() {
ret centerAndSouth(super.visualize(),
withMargin(jcenteredbutton("Call method", r-thread {
S s = trim(lineAtCaret(textArea));
S m;
if (endsWith(s, "!") && isIdentifier(m = dropLast(s))) {
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(classNames(args))) + " -> " + returns);
}
setText(getText() + lines(lines));
}
}
}