Package com.gloopics.g3viewer.client

Source Code of com.gloopics.g3viewer.client.UploadFile$ProgressBar

package com.gloopics.g3viewer.client;

import com.gloopics.g3viewer.client.canvas.Canvas;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.core.client.GWT;
import com.google.gwt.gears.client.Factory;
import com.google.gwt.gears.client.blob.Blob;
import com.google.gwt.gears.client.desktop.File;
import com.google.gwt.gears.client.httprequest.HttpRequest;
import com.google.gwt.gears.client.httprequest.ProgressEvent;
import com.google.gwt.gears.client.httprequest.ProgressHandler;
import com.google.gwt.gears.client.httprequest.RequestCallback;
import com.google.gwt.gears.client.localserver.ResourceStore;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONValue;

public class UploadFile extends Composite{

  private final static ResourceStore RS = Factory.getInstance().createLocalServer().createStore("temp");

 
  private class ProgressBar extends SimplePanel{
    private final SimplePanel m_ProgressInner;
    public ProgressBar(){
      addStyleName("progressBar");
      m_ProgressInner = new SimplePanel();
      m_ProgressInner.addStyleName("progessInner");
      add(m_ProgressInner);
    }
   
    public void setProgress(int a_Percent){
      m_ProgressInner.setWidth( a_Percent + "%");
     
    }
  }
 
  private final ResizeOptions m_ResizeOptions;
 
  private final String m_Name;
 
  private final Album m_Parent;
 
  private Blob m_Blob;
 
  //private final Canvas m_UpThumb;
 
  private final Label m_Label = new Label("Pending..");
  private final ProgressBar m_ProgressBar = new ProgressBar();
 
  //private final Image m_Image;
  private final File m_File;
 
  private final SimplePanel m_ImageContainer;
 
  private final UploadControl m_UploadControl;

  /**
   * Loads an image into this Canvas, replacing the Canvas' current dimensions
   * and contents.
   *
   * @param blob The Blob to decode. The image should be in PNG or JPEG format.
   */
  public final native void captureBlob(ResourceStore rs, Blob blob, String a_Url) /*-{
    rs.captureBlob(blob, a_Url, "image/JPEG");
    }-*/;

  /**
   * Loads an image into this Canvas, replacing the Canvas' current dimensions
   * and contents.
   *
   * @param blob The Blob to decode. The image should be in PNG or JPEG format.
   */
  public final native void removeCapture(ResourceStore rs, String a_Url) /*-{
    rs.remove(a_Url);
  }-*/;
 
  public UploadFile(UploadControl a_UploadControl, Album a_Parent, File a_File, ResizeOptions a_ResizeOptions){
    m_UploadControl = a_UploadControl;
    m_File = a_File;
    m_ResizeOptions = a_ResizeOptions;
    m_Parent = a_Parent;
    m_Name = a_File.getName();
   
    FlowPanel dp = new FlowPanel();
   
 
    m_ImageContainer = new SimplePanel();
    m_ImageContainer.setWidget(new Label(m_Name));
    dp.add(m_ImageContainer);
   
    dp.add(m_ProgressBar);
    dp.add(m_Label);
   
    initWidget(dp);
    setStylePrimaryName("item");
    addStyleName("iUpload");
   
  }
 
  protected void uploadBlob(Blob a_Blob){
    m_Label.setText("Uploading..");
    HttpRequest request = Factory.getInstance().createHttpRequest();
    request.open("POST", G3Viewer.UPLOAD_URL + m_Parent.getId() + "?filename="
        + m_Name + "&csrf=" + G3Viewer.getCSRF());
   
    request.getUpload().setProgressHandler(new ProgressHandler() {
     
      @Override
      public void onProgress(ProgressEvent event) {
          double pcnt = ((double) event.getLoaded() / event.getTotal());
          m_ProgressBar.setProgress((int) Math.floor(pcnt * 100));
       
      }
    });
   
    request.setCallback(new RequestCallback() {
     
      @Override
      public void onResponseReceived(HttpRequest request) {
       
        if (request.getStatus() != 200)
        {
          m_Label.setText("Upload Error");
          addStyleName("upload-error");
          G3Viewer.displayError("Error Uploading", request.getResponseText());
        }
        removeCapture(RS, m_Name);
       
        if (request.getStatus() == 200)
        {
          try{
            JSONValue jv = JSONParser.parse(request.getResponseText());
            m_UploadControl.finishedUpload(UploadFile.this);
            m_Parent.replaceUpload(UploadFile.this, jv);
            return;
          }
          catch (Exception e){
            G3Viewer.displayError("Exception on Upload", e.toString() + " " + request.getResponseText());
          }
        }
        m_Parent.removeUpload(UploadFile.this);
        m_UploadControl.finishedUploadWithError(UploadFile.this);
       
      }
    });
   
    request.send(a_Blob);
   
  }
 
  public ResizeOptions getResizeOptions(){
    return m_ResizeOptions;
  }
 
  public void prepareUpload(){
    GWT.runAsync(new AsyncRunner(new Runnable() {
     
      @Override
      public void run() {
        m_Blob = m_File.getBlob();
        captureBlob(RS, m_Blob , m_Name);
        Image img = new Image(m_Name);
       
        m_ImageContainer.setWidget(img);   
        m_UploadControl.finishedPrepare(UploadFile.this);
      }
    }));
   
  }
 
  public void startUpload(){
   
    if (m_ResizeOptions.isResize())
    {
      m_Label.setText("Resizing..");
      GWT.runAsync(new AsyncResizer(m_Blob, this));
    }
    else
    {
      uploadBlob(m_Blob);
    }
  }
 
}
TOP

Related Classes of com.gloopics.g3viewer.client.UploadFile$ProgressBar

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.