Example usage for com.google.gwt.gears.client.desktop Desktop openFiles

List of usage examples for com.google.gwt.gears.client.desktop Desktop openFiles

Introduction

In this page you can find the example usage for com.google.gwt.gears.client.desktop Desktop openFiles.

Prototype

public void openFiles(OpenFilesHandler handler, String[] filter) 

Source Link

Document

Provides user-driven access to files on the client machine.

Usage

From source file:com.google.gwt.gears.sample.uploaddemo.client.UploadDemo.java

License:Apache License

/**
 * This is the entry point method.//from ww w. jav a 2  s .c  om
 */
public void onModuleLoad() {
    root = RootPanel.get();

    final Button browse = new Button("Browse");

    final Button upload = new Button("Upload");
    upload.setEnabled(false);

    final TextBox selected = new TextBox();
    selected.setEnabled(false);

    final SimplePanel progressInner = new SimplePanel();
    progressInner.addStyleName("progressInner");

    final SimplePanel progressGauge = new SimplePanel();
    progressGauge.addStyleName("progressGauge");
    progressGauge.add(progressInner);

    final HTML result = new HTML();

    browse.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent event) {
            Desktop desktop = factory.createDesktop();
            desktop.openFiles(new OpenFilesHandler() {

                public void onOpenFiles(OpenFilesEvent event) {
                    File[] files = event.getFiles();
                    selected.setText(files[0].getName());
                    selectedFile = files[0].getBlob();
                    upload.setEnabled(true);
                }
            }, true);
        }
    });

    upload.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent event) {
            HttpRequest request = factory.createHttpRequest();
            request.open("POST", GWT.getModuleBaseURL() + "upload");
            request.setRequestHeader("X-Filename", selected.getText());

            request.setCallback(new RequestCallback() {
                public void onResponseReceived(HttpRequest request) {
                    String msg = request.getStatus() + " " + request.getResponseText();
                    if (request.getStatus() != 200) {
                        result.setHTML("<p style=\"color:red\">" + msg + "</p>");
                    } else {
                        result.setHTML("<p style=\"color:green\">" + msg + "</p>");
                    }
                }
            });

            request.getUpload().setProgressHandler(new ProgressHandler() {
                public void onProgress(ProgressEvent event) {
                    double pcnt = ((double) event.getLoaded() / event.getTotal());
                    progressInner.setWidth((int) Math.floor(pcnt * 100) + "%");
                }
            });
            request.send(selectedFile);
        }
    });

    HorizontalPanel inputPanel = new HorizontalPanel();
    inputPanel.add(selected);
    inputPanel.add(browse);
    inputPanel.add(upload);

    root.add(inputPanel);
    root.add(new HTML("Progress:"));
    root.add(progressGauge);
    root.add(result);
}