package kvj.app.vimtouch.ext.manager.impl;
import java.util.ArrayList;
import java.util.List;
import net.momodalo.app.vimtouch.VimTouch;
import kvj.app.vimtouch.ext.manager.impl.QuickbarExtension.QuickbarInput;
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.BooleanFieldReader;
import org.kvj.vimtouch.ext.impl.read.ListFieldReader;
import org.kvj.vimtouch.ext.impl.read.StringFieldReader;
import org.kvj.vimtouch.ext.manager.IntegrationExtension;
import org.kvj.vimtouch.ext.manager.IntegrationExtensionException;
public class QuickbarExtension implements
IntegrationExtension<QuickbarInput, EmptyTransferable> {
private VimTouch vimTouch = null;
public QuickbarExtension(VimTouch vimTouch) {
this.vimTouch = vimTouch;
}
public static class QuickbarInput implements Transferable {
private List<String> items = new ArrayList<String>();
private boolean setDefault = false;
@Override
public void readFrom(IncomingTransfer t) {
t.readAs("items", new ListFieldReader<String>(
new StringFieldReader() {
@Override
public void set(String value) {
}
}) {
@Override
public void set(List<String> value) {
}
@Override
public void add(String value) {
items.add(value);
}
});
t.readAs("default", new BooleanFieldReader() {
@Override
public void set(Boolean value) {
setDefault = value;
}
});
}
@Override
public void writeTo(OutgoingTransfer t) {
}
}
@Override
public String getType() {
return "quickbar";
}
@Override
public QuickbarInput newInput() {
return new QuickbarInput();
}
@Override
public EmptyTransferable process(final QuickbarInput input)
throws IntegrationExtensionException {
vimTouch.runOnUiThread(new Runnable() {
@Override
public void run() {
if (input.setDefault) {
vimTouch.updateButtons();
} else {
vimTouch.setCustomButtons(input.items);
}
}
});
return new EmptyTransferable();
}
}