Good afternoon everyone,
I have tried to implement “basic upload” case as in Vaadin example, but now I tried it in Grails environment (using Vaadin Grails plugin), most cases works okay in grails, but I have problems regarding Upload component especially when the upload button is clicked, the Upload.Receiver event is not fired, this also happen when I tried Upload.FinishedListener and Upload.StartedListener.
I don’t know is it caused by Groovy/Grails reflection mechanism? since most cases are working.
package com.rtm.java.ui.test;
import com.vaadin.ui.Upload;
import org.zhakimel.vgrails.app.AppWorkContent; //extended SplitPanel
import org.zhakimel.vgrails.util.AppManager;
import org.zhakimel.vgrails.util.UIBuilder;
import java.io.IOException;
import java.io.OutputStream;
/**
* Class TestUpload
* Description:
* <p/>
* Usage :
*
* @author abiel
*/
public class TestUpload extends AppWorkContent implements UIBuilder {
boolean built=false;
private LineBreakCounter counter = new LineBreakCounter();
private Upload upload = new Upload("Upload a file", counter);
TestUpload(String caption, AppManager manager){
super(caption,manager);
}
/**
* build / addComponent calls here
* at the end of routine, set built=true
*/public void build() {
getWorkPanel().addComponent(upload); //workPanel is a Panel
upload.addListener(new Upload.FinishedListener() {
public void uploadFinished(Upload.FinishedEvent event) {
System.out.println("FINISHED: "+ + counter.getLineBreakCount());
}
});
upload.addListener(new Upload.StartedListener(){
public void uploadStarted(Upload.StartedEvent event){
System.out.println("STARTED");
}
});
built = true;
}
/**
* returns boolean built private property
*/public boolean isBuilt() {
return false;
}
/**
* put your set value or set data container of your data components here
*/public void refreshUIData() {
}
public static class LineBreakCounter implements Upload.Receiver {
private String fileName;
private String mtype;
private int counter;
/**
* return an OutputStream that simply counts lineends
*/
public OutputStream receiveUpload(String filename, String MIMEType) {
counter = 0;
fileName = filename;
mtype = MIMEType;
return new OutputStream() {
private static final int searchedByte = '\n';
@Override
public void write(int b) throws IOException {
if (b == searchedByte) {
counter++;
}
}
};
}
public String getFileName() {
return fileName;
}
public String getMimeType() {
return mtype;
}
public int getLineBreakCount() {
return counter;
}
}
}
I appreciate any helps
Regards
Abiel
@Bandung, Java