package kvj.app.vimtouch.ext.manager.impl;
import net.momodalo.app.vimtouch.VimTouch;
import kvj.app.vimtouch.ext.manager.impl.InputExtension.InputExtensionInput;
import org.kvj.vimtouch.ext.IncomingTransfer;
import org.kvj.vimtouch.ext.OutgoingTransfer;
import org.kvj.vimtouch.ext.Transferable;
import org.kvj.vimtouch.ext.impl.EmptyTransferable;
import org.kvj.vimtouch.ext.impl.read.StringFieldReader;
import org.kvj.vimtouch.ext.manager.IntegrationExtension;
import org.kvj.vimtouch.ext.manager.IntegrationExtensionException;
public class InputExtension implements
IntegrationExtension<InputExtensionInput, EmptyTransferable> {
public static class InputExtensionInput implements Transferable {
String request = "";
@Override
public void readFrom(IncomingTransfer t) {
t.readAs("request", new StringFieldReader() {
@Override
public void set(String value) {
request = value;
}
});
}
@Override
public void writeTo(OutgoingTransfer t) {
}
}
protected static final String TAG = "InputExtension";
private VimTouch vimTouch = null;
public InputExtension(VimTouch vimTouch) {
this.vimTouch = vimTouch;
}
@Override
public String getType() {
return "input";
}
@Override
public InputExtensionInput newInput() {
return new InputExtensionInput();
}
@Override
public EmptyTransferable process(InputExtensionInput input)
throws IntegrationExtensionException {
if ("keyboard_show".equals(input.request)) {
vimTouch.runOnUiThread(new Runnable() {
@Override
public void run() {
vimTouch.showIme();
}
});
}
if ("keyboard_hide".equals(input.request)) {
vimTouch.runOnUiThread(new Runnable() {
@Override
public void run() {
vimTouch.hideIme();
}
});
}
return new EmptyTransferable();
}
}