use of php.runtime.invoke.Invoker in project jphp by jphp-compiler.
the class WrapSwingUtilities method invokeLater.
@Signature(@Arg(value = "callback", type = HintType.CALLABLE))
public static Memory invokeLater(final Environment env, Memory... args) {
final Invoker invoker = Invoker.valueOf(env, null, args[0]);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
Thread thread = Thread.currentThread();
ClassLoader old = thread.getContextClassLoader();
thread.setUncaughtExceptionHandler(buildUncaughtExceptionHandler(env));
try {
thread.setContextClassLoader(env.scope.getClassLoader());
invoker.callNoThrow();
} finally {
thread.setContextClassLoader(old);
}
}
});
return Memory.NULL;
}
use of php.runtime.invoke.Invoker in project jphp by jphp-compiler.
the class WrapUIReader method onTranslate.
@Signature(@Arg(value = "handler", type = HintType.CALLABLE, optional = @Optional("NULL")))
public Memory onTranslate(final Environment env, Memory... args) {
if (args[0].isNull())
reader.setTranslateHandler(null);
else {
final Invoker invoker = Invoker.valueOf(env, null, args[0]);
UIReader.TranslateHandler handler = new UIReader.TranslateHandler() {
@Override
public Value onTranslate(Component component, Value var) {
return new Value(invoker.callNoThrow(new ObjectMemory(UIElement.of(env, component)), var == null ? Memory.NULL : new StringMemory(var.asString())).toString());
}
};
reader.setTranslateHandler(handler);
}
return Memory.NULL;
}
use of php.runtime.invoke.Invoker in project jphp by jphp-compiler.
the class WrapUIReader method onRead.
@Signature(@Arg(value = "handler", type = HintType.CALLABLE, optional = @Optional("NULL")))
public Memory onRead(final Environment env, Memory... args) {
if (args[0].isNull())
reader.setReadHandler(null);
else {
final Invoker invoker = Invoker.valueOf(env, null, args[0]);
UIReader.ReadHandler handler = new UIReader.ReadHandler() {
@Override
public void onRead(Component component, String var) {
invoker.callNoThrow(new ObjectMemory(UIElement.of(env, component)), var == null ? Memory.NULL : new StringMemory(var));
}
};
reader.setReadHandler(handler);
}
return Memory.NULL;
}
use of php.runtime.invoke.Invoker in project jphp by jphp-compiler.
the class UIFileChooser method onFileView.
@Signature({ @Arg(value = "field"), @Arg(value = "callback", type = HintType.CALLABLE, optional = @Optional("null")) })
public Memory onFileView(final Environment env, final Memory... args) {
final FileView oldFileView = component.getFileView();
final Invoker invoker = Invoker.valueOf(env, null, args[1]);
final String field = args[0].toString().toLowerCase();
component.setFileView(new FileView() {
@Override
public String getName(File f) {
if (invoker != null && field.equals("name")) {
Memory r = invoker.callNoThrow(new ObjectMemory(new FileObject(env, f)));
if (!r.isNull())
return r.toString();
}
return oldFileView == null ? super.getName(f) : oldFileView.getName(f);
}
@Override
public String getDescription(File f) {
if (invoker != null && field.equals("description")) {
Memory r = invoker.callNoThrow(new ObjectMemory(new FileObject(env, f)));
if (!r.isNull())
return r.toString();
}
return oldFileView == null ? super.getDescription(f) : oldFileView.getDescription(f);
}
@Override
public String getTypeDescription(File f) {
return super.getTypeDescription(f);
}
@Override
public Icon getIcon(File f) {
if (invoker != null && field.equals("icon")) {
Memory r = invoker.callNoThrow(new ObjectMemory(new FileObject(env, f)));
if (r.instanceOf(WrapImage.class))
return r.toObject(WrapImage.class).getImageIcon();
}
return oldFileView == null ? super.getIcon(f) : oldFileView.getIcon(f);
}
@Override
public Boolean isTraversable(File f) {
if (invoker != null && field.equals("traversable")) {
Memory r = invoker.callNoThrow(new ObjectMemory(new FileObject(env, f)));
if (!r.isNull())
return r.toBoolean();
}
return oldFileView == null ? super.isTraversable(f) : oldFileView.isTraversable(f);
}
});
return Memory.NULL;
}
use of php.runtime.invoke.Invoker in project jphp by jphp-compiler.
the class Stream method eachLine.
@Signature({ @Arg(value = "callback", type = HintType.CALLABLE), @Arg(value = "encoding", optional = @Optional("null")) })
public Memory eachLine(Environment env, Memory... args) throws Throwable {
Invoker invoker = Invoker.create(env, args[0]);
InputStream is = getInputStream(env, this);
Scanner scanner = new Scanner(is, args[1].isNull() ? env.getDefaultCharset().name() : args[1].toString());
int count = 0;
while (scanner.hasNextLine()) {
Memory call = invoker.call(StringMemory.valueOf(scanner.nextLine()));
if (call.toBoolean()) {
break;
}
count++;
}
return LongMemory.valueOf(count);
}
Aggregations