@Override public void prepareRenderer(MeshRenderer meshRenderer) { rendererCallback.invoke(meshRenderer); } }
@Override public Promise<Void> setIcon(FilePath filePath) { return new Promise<>((resolve, reject) -> resolve.invoke(null)); }
@Override public Promise<Void> copyTo(FilePath path) { return new Promise<>((resolve, reject) -> reject.invoke(new IOException("Cannot copy files in HTML5 platform."))); }
@Override public Promise<List<FilePath>> listFiles() { return new Promise<>((resolve, reject) -> resolve.invoke(EMPTY_LIST)); }
@Override public Promise<Void> createFile() { return new Promise<>((resolve, reject) -> reject.invoke(new IOException("Cannot create a file inside jar"))); }
@Override public Promise<Boolean> delete() { return new Promise<>((resolve, reject) -> reject.invoke(new IOException("Cannot delete an in-jar resource"))); }
@Override public Promise<Void> mkdirs() { return new Promise<>((resolve, reject) -> reject.invoke(new IOException("Cannot create directories in HTML5 platform."))); }
@Override public Promise<Boolean> isDirectory() { return new Promise<>((resolve, reject) -> resolve.invoke(file.isDirectory())); }
@Override public Promise<Long> sizeInBytes() { return new Promise<>((resolve, reject) -> resolve.invoke(file.exists() ? file.length() : -1L)); }
@Override public Promise<Void> mkdirs() { return new Promise<>((resolve, reject) -> reject.invoke(new IOException("Cannot create directory inside a jar"))); }
@Override public Promise<Void> createFile() { return new Promise<>((resolve, reject) -> reject.invoke(new IOException("Cannot create a file inside jar"))); }
@Override public Promise<Void> moveTo(FilePath path) { return new Promise<>((resolve, reject) -> reject.invoke(new IOException("Cannot move files in HTML5 platform."))); }
@Override public Promise<Boolean> delete() { return new Promise<>((resolve, reject) -> reject.invoke(new IOException("Cannot delete files in HTML5 platform."))); }
@Override public Promise<Boolean> isFile() { return new Promise<>((resolve, reject) -> resolve.invoke(!file.isDirectory())); }
public static Promise<Void> race(Promise<?>... promises) { return new Promise<>((self, resolve, reject) -> { for (Promise<?> promise : promises) promise.then(v -> { if (self.state != State.REJECTED) resolve.invoke(null); }, reject); }); }
public static void main(String[] args) { new Promise<>((resolve, reject) -> resolve.invoke("Hello World")) .then(System.out::println) .then(v -> System.out.println("Printing twice! " + v)); } }
@Override public Promise<Boolean> isFile() { return new Promise<>((resolve, reject) -> isDirectory().then(isDirectory -> resolve.invoke(!isDirectory))); }
/** * Sets the icon of the display. Must point to an image (PNG, BMP, JPEG are supported). For HTML5, use a .ICO file. * * @param filePath The file path to the image. * * @return A void {@link Promise} that wraps the callbacks. */ @PlatformDesktop @PlatformHTML5 default Promise<Void> setIcon(FilePath filePath) { return new Promise<>((resolve, reject) -> setIcon(filePath, () -> resolve.invoke(null), reject)); }
@Override public void readImage(DirectBuffer memory, UniCallback<Image> onComplete, UniCallback<Throwable> onError) { getImage(((ArrayBufferView) memory.nativeBuffer()).buffer(), onComplete, e -> onError.invoke(new SilenceException(e))); }
public void readImage(FilePath filePath, UniCallback<Image> uniCallback, UniCallback<Throwable> error) { SilenceEngine.io.getFileReader().readBinaryFile(filePath, directBuffer -> readImage(directBuffer, image -> { // Free the direct buffer SilenceEngine.io.free(directBuffer); // Invoke the on complete handler uniCallback.invoke(image); }, error), error); }