/*
* 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.DirectoryReader;
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.Flags;
import com.googlecode.gwtphonegap.client.file.Metadata;
public class DirectoryEntryJsImpl implements DirectoryEntry {
private final JavaScriptObject entry;
public DirectoryEntryJsImpl(JavaScriptObject entry) {
this.entry = entry;
}
public JavaScriptObject getEntry() {
return entry;
}
@Override
public native String getName() /*-{
return (this.@com.googlecode.gwtphonegap.client.file.js.DirectoryEntryJsImpl::entry).name;
}-*/;
@Override
public native String getFullPath() /*-{
return (this.@com.googlecode.gwtphonegap.client.file.js.DirectoryEntryJsImpl::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.DirectoryEntryJsImpl::onMetaDataFailure(Lcom/googlecode/gwtphonegap/client/file/FileCallback;Lcom/googlecode/gwtphonegap/client/file/js/FileErrorJsImpl;)( callback, error);
};
var suc = function(meta) {
that.@com.googlecode.gwtphonegap.client.file.js.DirectoryEntryJsImpl::onMetaDataSuccess(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 onMetaDataFailure(FileCallback<Metadata, FileError> callback, FileErrorJsImpl error) {
callback.onFailure(error);
}
private void onMetaDataSuccess(FileCallback<Metadata, FileError> callback, MetaDataJsImpl meta) {
callback.onSuccess(meta);
}
@Override
public void moveTo(DirectoryEntry parent, String newName, FileCallback<DirectoryEntry, FileError> callback) {
moveTo0(((DirectoryEntryJsImpl) parent).entry, newName, callback);
}
private native void moveTo0(JavaScriptObject parent, String newName, FileCallback<DirectoryEntry, FileError> callback) /*-{
var that = this;
var fail = function(error) {
that.@com.googlecode.gwtphonegap.client.file.js.DirectoryEntryJsImpl::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.DirectoryEntryJsImpl::onMoveToSuccess(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.moveTo(parent, newName, $entry(suc), $entry(fail));
}-*/;
private void onMoveToFailure(FileCallback<DirectoryEntry, FileError> callback, FileError error) {
callback.onFailure(error);
}
private void onMoveToSuccess(FileCallback<DirectoryEntry, FileError> callback, JavaScriptObject entry) {
callback.onSuccess(new DirectoryEntryJsImpl(entry));
}
@Override
public void copyTo(DirectoryEntry parent, String newName, FileCallback<DirectoryEntry, FileError> callback) {
copyTo0(((DirectoryEntryJsImpl) parent).entry, newName, callback);
}
private native void copyTo0(JavaScriptObject parent, String newName, FileCallback<DirectoryEntry, FileError> callback) /*-{
var that = this;
var fail = function(error) {
that.@com.googlecode.gwtphonegap.client.file.js.DirectoryEntryJsImpl::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.DirectoryEntryJsImpl::onCopyToSuccess(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.copyTo(parent, newName, $entry(suc), $entry(fail));
}-*/;
private void onCopyToFailure(FileCallback<DirectoryEntry, FileError> callback, FileError error) {
callback.onFailure(error);
}
private void onCopyToSuccess(FileCallback<DirectoryEntry, FileError> callback, JavaScriptObject entry) {
callback.onSuccess(new DirectoryEntryJsImpl(entry));
}
@Override
public native String toURI() /*-{
var entry = (this.@com.googlecode.gwtphonegap.client.file.js.DirectoryEntryJsImpl::entry);
return entry.toURI();
}-*/;
@Override
public native String toURL() /*-{
var entry = (this.@com.googlecode.gwtphonegap.client.file.js.DirectoryEntryJsImpl::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.DirectoryEntryJsImpl::onRemoveFailure(Lcom/googlecode/gwtphonegap/client/file/FileCallback;Lcom/googlecode/gwtphonegap/client/file/FileError;)(callback, error);
};
var suc = function() {
that.@com.googlecode.gwtphonegap.client.file.js.DirectoryEntryJsImpl::onRemoveSuccess(Lcom/googlecode/gwtphonegap/client/file/FileCallback;)(callback);
};
var entry = (this.@com.googlecode.gwtphonegap.client.file.js.DirectoryEntryJsImpl::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.DirectoryEntryJsImpl::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.DirectoryEntryJsImpl::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 DirectoryReader createReader() {
return new DirectoryReaderJsImpl(createReader0());
}
private native JavaScriptObject createReader0() /*-{
var entry = (this.@com.googlecode.gwtphonegap.client.file.js.DirectoryEntryJsImpl::entry);
return entry.createReader();
}-*/;
@Override
public native void getDirectory(String path, Flags flags, FileCallback<DirectoryEntry, FileError> callback) /*-{
var that = this;
var fail = function(error) {
that.@com.googlecode.gwtphonegap.client.file.js.DirectoryEntryJsImpl::onGetDirectoryFailure(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.DirectoryEntryJsImpl::onGetDirectorySuccess(Lcom/googlecode/gwtphonegap/client/file/FileCallback;Lcom/google/gwt/core/client/JavaScriptObject;)(callback, entry);
};
var options = {};
options.create = flags.@com.googlecode.gwtphonegap.client.file.Flags::isCreate()();
options.exclusive = flags.@com.googlecode.gwtphonegap.client.file.Flags::isExclusive()();
var entry = (this.@com.googlecode.gwtphonegap.client.file.js.DirectoryEntryJsImpl::entry);
entry.getDirectory(path, options, $entry(suc), $entry(fail));
}-*/;
private void onGetDirectoryFailure(FileCallback<DirectoryEntry, FileError> callback, FileError error) {
callback.onFailure(error);
}
private void onGetDirectorySuccess(FileCallback<DirectoryEntry, FileError> callback, JavaScriptObject entry) {
callback.onSuccess(new DirectoryEntryJsImpl(entry));
}
@Override
public native void getFile(String path, Flags flags, FileCallback<FileEntry, FileError> callback) /*-{
var that = this;
var fail = function(error) {
that.@com.googlecode.gwtphonegap.client.file.js.DirectoryEntryJsImpl::onGetFileFailure(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.DirectoryEntryJsImpl::onGetFileSuccess(Lcom/googlecode/gwtphonegap/client/file/FileCallback;Lcom/google/gwt/core/client/JavaScriptObject;)(callback, entry);
};
var options = {};
options.create = flags.@com.googlecode.gwtphonegap.client.file.Flags::isCreate()();
options.exclusive = flags.@com.googlecode.gwtphonegap.client.file.Flags::isExclusive()();
var entry = (this.@com.googlecode.gwtphonegap.client.file.js.DirectoryEntryJsImpl::entry);
entry.getFile(path, options, $entry(suc), $entry(fail));
}-*/;
private void onGetFileFailure(FileCallback<FileEntry, FileError> callback, FileError error) {
callback.onFailure(error);
}
private void onGetFileSuccess(FileCallback<FileEntry, FileError> callback, JavaScriptObject entry) {
callback.onSuccess(new FileEntryJsImpl(entry));
}
@Override
public native void removeRecursively(FileCallback<Boolean, FileError> callback)/*-{
var that = this;
var fail = function(error) {
that.@com.googlecode.gwtphonegap.client.file.js.DirectoryEntryJsImpl::onRemoveRecursivelyFailure(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.DirectoryEntryJsImpl::onRemoveRecursivelySuccess(Lcom/googlecode/gwtphonegap/client/file/FileCallback;)(callback);
};
var entry = (this.@com.googlecode.gwtphonegap.client.file.js.DirectoryEntryJsImpl::entry);
entry.removeRecursively($entry(suc), $entry(fail));
}-*/;
private void onRemoveRecursivelyFailure(FileCallback<Boolean, FileError> callback, FileError error) {
callback.onFailure(error);
}
private void onRemoveRecursivelySuccess(FileCallback<Boolean, FileError> callback) {
callback.onSuccess(Boolean.TRUE);
}
}