package com.akjava.gwt.html5.client.file.ui;
import com.akjava.gwt.html5.client.file.File;
import com.akjava.gwt.html5.client.file.FileHandler;
import com.akjava.gwt.html5.client.file.FileReader;
import com.google.common.base.Optional;
import com.google.common.base.Predicate;
import com.google.gwt.dom.client.Style.Unit;
/*
* this is usefull when do nothing drop rootPanel
*/
public abstract class DropDockTextRootPanel extends DropDockRootPanel{
private String encoding;
public DropDockTextRootPanel(Unit unit,String encoding,boolean addRootLayoutPanel) {
super(unit,addRootLayoutPanel);
this.encoding=encoding==null?"UTF-8":encoding;
}
private Predicate<File> filePredicate;
public Predicate<File> getFilePredicate() {
return filePredicate;
}
public void setFilePredicate(Predicate<File> filePredicate) {
this.filePredicate = filePredicate;
}
@Override
public void callback(final File file, final String parent) {
if(file==null){
return;
}
if(filePredicate!=null && !filePredicate.apply(file)){
return;
}
final FileReader reader = FileReader.createFileReader();
reader.setOnLoad(new FileHandler() {
@Override
public void onLoad() {
String dataUrl=reader.getResultAsString();
loadFile(parent,Optional.fromNullable(file), dataUrl);
}
});
if(file!=null){
reader.readAsText(file,encoding);
}
}
public abstract void loadFile(final String pareht,final Optional<File> optional,final String text);
}