package kvj.app.vimtouch.ext.manager.impl;
import net.momodalo.app.vimtouch.VimTouch;
import kvj.app.vimtouch.ext.manager.impl.ToastExtension.ToastInput;
import kvj.app.vimtouch.ext.manager.impl.ToastExtension.ToastOutput;
import org.kvj.vimtouch.ext.IncomingTransfer;
import org.kvj.vimtouch.ext.OutgoingTransfer;
import org.kvj.vimtouch.ext.Transferable;
import org.kvj.vimtouch.ext.impl.read.StringFieldReader;
import org.kvj.vimtouch.ext.manager.IntegrationExtension;
import org.kvj.vimtouch.ext.manager.IntegrationExtensionException;
import android.widget.Toast;
public class ToastExtension implements
IntegrationExtension<ToastInput, ToastOutput> {
public static class ToastInput implements Transferable {
String message = null;
String type = "short";
@Override
public void readFrom(IncomingTransfer t) {
t.readAs("message", new StringFieldReader() {
@Override
public void set(String value) {
message = value;
}
});
t.readAs("type", new StringFieldReader() {
@Override
public void set(String value) {
type = value;
}
});
}
@Override
public void writeTo(OutgoingTransfer t) {
}
}
public static class ToastOutput implements Transferable {
@Override
public void readFrom(IncomingTransfer t) {
}
@Override
public void writeTo(OutgoingTransfer t) {
}
}
private VimTouch vimTouch;
public ToastExtension(VimTouch vimTouch) {
this.vimTouch = vimTouch;
}
@Override
public String getType() {
return "toast";
}
@Override
public ToastInput newInput() {
return new ToastInput();
}
@Override
public ToastOutput process(final ToastInput input)
throws IntegrationExtensionException {
vimTouch.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(
vimTouch,
input.message,
"long".equals(input.type) ? Toast.LENGTH_LONG
: Toast.LENGTH_SHORT).show();
}
});
return new ToastOutput();
}
}