/*
* 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.FileError;
import com.googlecode.gwtphonegap.client.file.FileWriter;
import com.googlecode.gwtphonegap.client.file.WriterCallback;
public class FileWriterJsImpl implements FileWriter {
private final JavaScriptObject writer;
public FileWriterJsImpl(JavaScriptObject writer) {
this.writer = writer;
}
public JavaScriptObject getWriter() {
return writer;
}
@Override
public native int getReadyState() /*-{
return (this.@com.googlecode.gwtphonegap.client.file.js.FileWriterJsImpl::writer).readyState;
}-*/;
@Override
public native String getFileName() /*-{
return (this.@com.googlecode.gwtphonegap.client.file.js.FileWriterJsImpl::writer).fileName;
}-*/;
@Override
public long getLength() {
return Math.round(getLength0());
}
private native double getLength0()/*-{
return (this.@com.googlecode.gwtphonegap.client.file.js.FileWriterJsImpl::writer).length;
}-*/;
@Override
public long getPosition() {
return Math.round(getPosition0());
}
private native double getPosition0()/*-{
return (this.@com.googlecode.gwtphonegap.client.file.js.FileWriterJsImpl::writer).position;
}-*/;
@Override
public native FileError getError()/*-{
return (this.@com.googlecode.gwtphonegap.client.file.js.FileWriterJsImpl::writer).error;
}-*/;
@Override
public native void setOnWriteStartCallback(WriterCallback<FileWriter> callback) /*-{
var that = this;
var cal = function() {
that.@com.googlecode.gwtphonegap.client.file.js.FileWriterJsImpl::onCallBack(Lcom/googlecode/gwtphonegap/client/file/WriterCallback;)(callback);
};
var writer = (this.@com.googlecode.gwtphonegap.client.file.js.FileWriterJsImpl::writer);
writer.onwritestart = $entry(cal);
}-*/;
private void onCallBack(WriterCallback<FileWriter> callback) {
callback.onCallback(this);
}
@Override
public native void setOnProgressCallback(WriterCallback<FileWriter> callback) /*-{
var that = this;
var cal = function() {
that.@com.googlecode.gwtphonegap.client.file.js.FileWriterJsImpl::onCallBack(Lcom/googlecode/gwtphonegap/client/file/WriterCallback;)(callback);
};
var writer = (this.@com.googlecode.gwtphonegap.client.file.js.FileWriterJsImpl::writer);
writer.onprogress = $entry(cal);
}-*/;
@Override
public native void setOnWriteCallback(WriterCallback<FileWriter> callback)/*-{
var that = this;
var cal = function() {
that.@com.googlecode.gwtphonegap.client.file.js.FileWriterJsImpl::onCallBack(Lcom/googlecode/gwtphonegap/client/file/WriterCallback;)(callback);
};
var writer = (this.@com.googlecode.gwtphonegap.client.file.js.FileWriterJsImpl::writer);
writer.onwrite = $entry(cal);
}-*/;
@Override
public native void setOnAbortCallback(WriterCallback<FileWriter> callback) /*-{
var that = this;
var cal = function() {
that.@com.googlecode.gwtphonegap.client.file.js.FileWriterJsImpl::onCallBack(Lcom/googlecode/gwtphonegap/client/file/WriterCallback;)(callback);
};
var writer = (this.@com.googlecode.gwtphonegap.client.file.js.FileWriterJsImpl::writer);
writer.onabort = $entry(cal);
}-*/;
@Override
public native void setOnErrorCallback(WriterCallback<FileWriter> callback) /*-{
var that = this;
var cal = function() {
that.@com.googlecode.gwtphonegap.client.file.js.FileWriterJsImpl::onCallBack(Lcom/googlecode/gwtphonegap/client/file/WriterCallback;)(callback);
};
var writer = (this.@com.googlecode.gwtphonegap.client.file.js.FileWriterJsImpl::writer);
writer.onerror = $entry(cal);
}-*/;
@Override
public native void setOnWriteEndCallback(WriterCallback<FileWriter> callback) /*-{
var that = this;
var cal = function() {
that.@com.googlecode.gwtphonegap.client.file.js.FileWriterJsImpl::onCallBack(Lcom/googlecode/gwtphonegap/client/file/WriterCallback;)(callback);
};
var writer = (this.@com.googlecode.gwtphonegap.client.file.js.FileWriterJsImpl::writer);
writer.onwriteend = $entry(cal);
}-*/;
@Override
public native void abort() /*-{
var writer = (this.@com.googlecode.gwtphonegap.client.file.js.FileWriterJsImpl::writer);
writer.abort();
}-*/;
@Override
public void seek(long position) {
seek(Double.valueOf(position));
}
private native void seek(double position)/*-{
var writer = (this.@com.googlecode.gwtphonegap.client.file.js.FileWriterJsImpl::writer);
writer.seek(position);
}-*/;
@Override
public void truncate(long position) {
truncate(Double.valueOf(position));
}
private native void truncate(double position)/*-{
var writer = (this.@com.googlecode.gwtphonegap.client.file.js.FileWriterJsImpl::writer);
writer.truncate(position);
}-*/;
@Override
public native void write(String text) /*-{
var writer = (this.@com.googlecode.gwtphonegap.client.file.js.FileWriterJsImpl::writer);
writer.write(text);
}-*/;
}