package fr.lteconsulting.hexa.client.ui.uploadjs;
import java.util.HashMap;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.DecoratorPanel;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RootPanel;
public class UploadTest implements EntryPoint
{
FlexTable table = new FlexTable();
@Override
public void onModuleLoad()
{
final DecoratorPanel deco = new DecoratorPanel();
Label text = new Label( "Drop files here..." );
deco.setWidget( text );
DropTarget target = DropTarget.create( deco, new DropTarget.Callback()
{
@Override
public void onDropFiles( FilesList files )
{
deco.getElement().getStyle().clearBackgroundColor();
sendFiles( files );
}
@Override
public void onDragLeave()
{
deco.getElement().getStyle().clearBackgroundColor();
}
@Override
public void onDragEnter()
{
deco.getElement().getStyle().setBackgroundColor( "grey" );
}
} );
if( target != null )
{
RootPanel.get().add( target );
}
else
{
RootPanel.get().add( new Label( "Sorry, no drop enabled..." ) );
}
RootPanel.get().add( table );
}
private void sendFiles( FilesList files )
{
int nb = files.getCount();
HashMap<String, String> prms = new HashMap<String, String>();
prms.put( "image", "mon Igmaeh" );
prms.put( "coolVariable", "coolValue" );
FileUploader uploader = new FileUploader();
for( int i = 0; i < nb; i++ )
{
final File file = files.getFile( i );
final int row = table.getRowCount();
final ProgressBar bar = new ProgressBar();
table.setWidget( row, 0, bar );
final String title = file.getFileName() + " (" + file.getMimeType() + ")";
table.setText( row, 1, title );
String mime = file.getMimeType();
if( mime != null && (mime.equalsIgnoreCase( "image/png" ) || mime.equalsIgnoreCase( "image/jpeg" )) )
{
final Image img = new Image();
file.getAsDataUrl( new File.Callback()
{
@Override
public void onDataReady( String data )
{
img.setUrl( data );
}
} );
int w = img.getWidth();
int h = img.getHeight();
if( w == 0 || h == 0 )
{
w = 30;
h = 30;
}
else if( w > h )
{
h = (int) ((h * 30.0f) / w);
w = 30;
}
else
{
w = (int) ((w * 30.0f) / h);
h = 30;
}
img.setPixelSize( w, h );
table.setWidget( row, 2, img );
}
uploader.uploadFile( "upload.php", prms, "uploadedFile", file, new FileUploader.Callback()
{
@Override
public void onStart()
{
table.setText( row, 1, "Started " + title );
}
@Override
public void onProgress( int percentage, float speed, String response )
{
bar.setValue( percentage );
if( percentage < 0 )
table.setText( row, 1, "Failure " + title );
else
table.setText( row, 1, "Uploaded " + title + " " + percentage + "% speed:" + speed );
}
} );
}
}
}