use of php.runtime.invoke.Invoker in project jphp by jphp-compiler.
the class SPLFunctions method spl_autoload_functions.
public static Memory spl_autoload_functions(Environment env) {
ArrayMemory result = new ArrayMemory();
for (SplClassLoader loader : env.getClassLoaders()) {
result.add(loader.getCallback().toImmutable());
}
if (result.size() == 0) {
if (env.__autoload == null) {
Invoker invoker = Invoker.valueOf(env, null, __autoloadMethod);
if (invoker != null) {
env.__autoload = new SplClassLoader(invoker, __autoloadMethod);
result.add(env.__autoload.getCallback().toImmutable());
}
}
}
return result.toConstant();
}
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;
}
Aggregations