/* * Copyright 2011 Daniel Kurka * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.googlecode.gwtphonegap.client.file.js; import com.google.gwt.core.client.JavaScriptObject; import com.googlecode.gwtphonegap.client.file.DirectoryEntry; import com.googlecode.gwtphonegap.client.file.FileCallback; import com.googlecode.gwtphonegap.client.file.FileEntry; import com.googlecode.gwtphonegap.client.file.FileError; import com.googlecode.gwtphonegap.client.file.FileObject; import com.googlecode.gwtphonegap.client.file.FileWriter; import com.googlecode.gwtphonegap.client.file.Metadata; public class FileEntryJsImpl implements FileEntry { private final JavaScriptObject entry; public FileEntryJsImpl(JavaScriptObject entry) { this.entry = entry; } public JavaScriptObject getEntry() { return entry; } @Override public native String getName() /*-{ return (this.@com.googlecode.gwtphonegap.client.file.js.FileEntryJsImpl::entry).name; }-*/; @Override public native String getFullPath() /*-{ return (this.@com.googlecode.gwtphonegap.client.file.js.FileEntryJsImpl::entry).fullPath; }-*/; @Override public native void getMetadata(FileCallback<Metadata, FileError> callback) /*-{ var that = this; var fail = function(error) { that.@com.googlecode.gwtphonegap.client.file.js.FileEntryJsImpl::onGetMetaDataFailure(Lcom/googlecode/gwtphonegap/client/file/FileCallback;Lcom/googlecode/gwtphonegap/client/file/FileError;)(callback, error); }; var suc = function(meta) { that.@com.googlecode.gwtphonegap.client.file.js.FileEntryJsImpl::onGetMetaDataSuccess(Lcom/googlecode/gwtphonegap/client/file/FileCallback;Lcom/googlecode/gwtphonegap/client/file/js/MetaDataJsImpl;)(callback, meta); }; var entry = (this.@com.googlecode.gwtphonegap.client.file.js.DirectoryEntryJsImpl::entry); entry.getMetadata($entry(suc), $entry(fail)); }-*/; private void onGetMetaDataFailure(FileCallback<Metadata, FileError> callback, FileError error) { callback.onFailure(error); } private void onGetMetaDataSuccess(FileCallback<Metadata, FileError> callback, MetaDataJsImpl meta) { callback.onSuccess(meta); } @Override public void moveTo(DirectoryEntry parent, String newName, FileCallback<FileEntry, FileError> callback) { moveTo0(((DirectoryEntryJsImpl) parent).getEntry(), newName, callback); } private native void moveTo0(JavaScriptObject parent, String newName, FileCallback<FileEntry, FileError> callback) /*-{ var that = this; var fail = function(error) { that.@com.googlecode.gwtphonegap.client.file.js.FileEntryJsImpl::onMoveToFailure(Lcom/googlecode/gwtphonegap/client/file/FileCallback;Lcom/googlecode/gwtphonegap/client/file/FileError;)(callback, error); }; var suc = function(entry) { that.@com.googlecode.gwtphonegap.client.file.js.FileEntryJsImpl::onMoveToSuccess(Lcom/googlecode/gwtphonegap/client/file/FileCallback;Lcom/google/gwt/core/client/JavaScriptObject;)(callback, entry); }; var entry = (this.@com.googlecode.gwtphonegap.client.file.js.FileEntryJsImpl::entry); entry.moveTo(parent, newName, $entry(suc), $entry(fail)); }-*/; private void onMoveToFailure(FileCallback<FileEntry, FileError> callback, FileError error) { callback.onFailure(error); } private void onMoveToSuccess(FileCallback<FileEntry, FileError> callback, JavaScriptObject entry) { callback.onSuccess(new FileEntryJsImpl(entry)); } @Override public void copyTo(DirectoryEntry parent, String newName, FileCallback<FileEntry, FileError> callback) { copyTo0(((DirectoryEntryJsImpl) parent).getEntry(), newName, callback); } private native void copyTo0(JavaScriptObject parent, String newName, FileCallback<FileEntry, FileError> callback) /*-{ var that = this; var fail = function(error) { that.@com.googlecode.gwtphonegap.client.file.js.FileEntryJsImpl::onCopyToFailure(Lcom/googlecode/gwtphonegap/client/file/FileCallback;Lcom/googlecode/gwtphonegap/client/file/FileError;)(callback, error); }; var suc = function(entry) { that.@com.googlecode.gwtphonegap.client.file.js.FileEntryJsImpl::onCopyToSuccess(Lcom/googlecode/gwtphonegap/client/file/FileCallback;Lcom/google/gwt/core/client/JavaScriptObject;)(callback, entry); }; var entry = (this.@com.googlecode.gwtphonegap.client.file.js.FileEntryJsImpl::entry); entry.copyTo(parent, newName, $entry(suc), $entry(fail)); }-*/; private void onCopyToFailure(FileCallback<FileEntry, FileError> callback, FileError error) { callback.onFailure(error); } private void onCopyToSuccess(FileCallback<FileEntry, FileError> callback, JavaScriptObject entry) { callback.onSuccess(new FileEntryJsImpl(entry)); } @Override @Deprecated public String toURI() { return toURL(); } @Override public native String toURL() /*-{ var entry = (this.@com.googlecode.gwtphonegap.client.file.js.FileEntryJsImpl::entry); return entry.toURL(); }-*/; @Override public native void remove(FileCallback<Boolean, FileError> callback) /*-{ var that = this; var fail = function(error) { that.@com.googlecode.gwtphonegap.client.file.js.FileEntryJsImpl::onRemoveFailure(Lcom/googlecode/gwtphonegap/client/file/FileCallback;Lcom/googlecode/gwtphonegap/client/file/FileError;)(callback, error); }; var suc = function(entry) { that.@com.googlecode.gwtphonegap.client.file.js.FileEntryJsImpl::onRemoveSuccess(Lcom/googlecode/gwtphonegap/client/file/FileCallback;)(callback); }; var entry = (this.@com.googlecode.gwtphonegap.client.file.js.FileEntryJsImpl::entry); entry.remove($entry(suc), $entry(fail)); }-*/; private void onRemoveFailure(FileCallback<Boolean, FileError> callback, FileError error) { callback.onFailure(error); } private void onRemoveSuccess(FileCallback<Boolean, FileError> callback) { callback.onSuccess(Boolean.TRUE); } @Override public native void getParent(FileCallback<DirectoryEntry, FileError> callback) /*-{ var that = this; var fail = function(error) { that.@com.googlecode.gwtphonegap.client.file.js.FileEntryJsImpl::onGetParentFailure(Lcom/googlecode/gwtphonegap/client/file/FileCallback;Lcom/googlecode/gwtphonegap/client/file/FileError;)(callback, error); }; var suc = function(entry) { that.@com.googlecode.gwtphonegap.client.file.js.FileEntryJsImpl::onGetParentSuccess(Lcom/googlecode/gwtphonegap/client/file/FileCallback;Lcom/google/gwt/core/client/JavaScriptObject;)(callback, entry); }; var entry = (this.@com.googlecode.gwtphonegap.client.file.js.DirectoryEntryJsImpl::entry); entry.getParent($entry(suc), $entry(fail)); }-*/; private void onGetParentFailure(FileCallback<DirectoryEntry, FileError> callback, FileError error) { callback.onFailure(error); } private void onGetParentSuccess(FileCallback<DirectoryEntry, FileError> callback, JavaScriptObject entry) { callback.onSuccess(new DirectoryEntryJsImpl(entry)); } @Override public native void createWriter(FileCallback<FileWriter, FileError> callback) /*-{ var that = this; var fail = function(error) { that.@com.googlecode.gwtphonegap.client.file.js.FileEntryJsImpl::onCreateWriterFailure(Lcom/googlecode/gwtphonegap/client/file/FileCallback;Lcom/googlecode/gwtphonegap/client/file/FileError;)(callback, error); }; var suc = function(writer) { that.@com.googlecode.gwtphonegap.client.file.js.FileEntryJsImpl::onCreateWriterSuccess(Lcom/googlecode/gwtphonegap/client/file/FileCallback;Lcom/google/gwt/core/client/JavaScriptObject;)(callback, writer); }; var entry = (this.@com.googlecode.gwtphonegap.client.file.js.FileEntryJsImpl::entry); entry.createWriter($entry(suc), $entry(fail)); }-*/; private void onCreateWriterFailure(FileCallback<FileWriter, FileError> callback, FileError error) { callback.onFailure(error); } private void onCreateWriterSuccess(FileCallback<FileWriter, FileError> callback, JavaScriptObject entry) { callback.onSuccess(new FileWriterJsImpl(entry)); } @Override public native void getFile(FileCallback<FileObject, FileError> callback) /*-{ var that = this; var fail = function(error) { that.@com.googlecode.gwtphonegap.client.file.js.FileEntryJsImpl::onGetFileFailure(Lcom/googlecode/gwtphonegap/client/file/FileCallback;Lcom/googlecode/gwtphonegap/client/file/FileError;)(callback, error); }; var suc = function(file) { that.@com.googlecode.gwtphonegap.client.file.js.FileEntryJsImpl::onGetFileSuccess(Lcom/googlecode/gwtphonegap/client/file/FileCallback;Lcom/googlecode/gwtphonegap/client/file/js/FileObjectJsImpl;)(callback, file); }; var entry = (this.@com.googlecode.gwtphonegap.client.file.js.FileEntryJsImpl::entry); entry.file($entry(suc), $entry(fail)); }-*/; private void onGetFileFailure(FileCallback<FileObject, FileError> callback, FileError error) { callback.onFailure(error); } private void onGetFileSuccess(FileCallback<FileObject, FileError> callback, FileObjectJsImpl fileObject) { callback.onSuccess(fileObject); } }