Package org.zanata.webtrans.client.ui

Source Code of org.zanata.webtrans.client.ui.FileUploadDialog

package org.zanata.webtrans.client.ui;

import com.google.gwt.user.client.ui.Button;
import org.zanata.webtrans.client.resources.Resources;
import org.zanata.webtrans.client.view.DocumentListDisplay;
import org.zanata.webtrans.shared.model.DocumentInfo;
import org.zanata.webtrans.shared.model.WorkspaceId;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.FileUpload;
import com.google.gwt.user.client.ui.FormPanel;
import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteEvent;
import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteHandler;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.Hidden;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.PushButton;
import com.google.gwt.user.client.ui.VerticalPanel;

public class FileUploadDialog extends DialogBox {
    private final FileUpload upload;
    private final CheckBox merge;
    private final Button cancelButton;
    private final Button uploadButton;
    private final Image loadingIcon;
    private final FormPanel form;

    private final Hidden projectSlug;
    private final Hidden versionSlug;
    private final Hidden docId;
    private final Hidden fileName;
    private final Hidden targetLocale;
    private final Hidden mergeTranslation;

    public FileUploadDialog(Resources resources) {
        setText("File upload");
        setGlassEnabled(true);
        setAutoHideEnabled(true);
        setStyleName("gwt-DialogBox");

        UnorderedListWidget panel = new UnorderedListWidget();
        panel.setStyleName("list--no-bullets");

        loadingIcon = new Image(resources.spinner());
        loadingIcon.setVisible(false);

        upload = new FileUpload();
        upload.setName("uploadFileElement");

        merge = new CheckBox("Merge?");
        merge.setValue(true);

        cancelButton = new Button("Cancel");
        uploadButton = new Button("Upload");

        UnorderedListWidget buttonPanel = new UnorderedListWidget();
        buttonPanel.setStyleName("list--horizontal l--float-right");
        buttonPanel.add(new ListItemWidget(loadingIcon));
        buttonPanel.add(new ListItemWidget(cancelButton));
        buttonPanel.add(new ListItemWidget(uploadButton));

        panel.add(new ListItemWidget(upload));
        panel.add(new ListItemWidget(merge));
        panel.add(new ListItemWidget(buttonPanel));

        projectSlug = new Hidden("projectSlug");
        versionSlug = new Hidden("versionSlug");
        docId = new Hidden("docId");
        fileName = new Hidden("fileName");
        targetLocale = new Hidden("targetLocale");
        mergeTranslation = new Hidden("merge");

        panel.add(projectSlug);
        panel.add(versionSlug);
        panel.add(docId);
        panel.add(fileName);
        panel.add(targetLocale);
        panel.add(mergeTranslation);

        // Because we're going to add a FileUpload widget, we'll need to set
        // the
        // form to use the POST method, and multipart MIME encoding.
        form = new FormPanel();
        form.setStyleName("new-zanata");
        form.setEncoding(FormPanel.ENCODING_MULTIPART);
        form.setMethod(FormPanel.METHOD_POST);
        form.setWidget(panel);

        add(form);
    }

    public void registerHandler(final DocumentListDisplay.Listener listener,
            String uploadFileURL) {
        form.setAction(uploadFileURL);
        cancelButton.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                listener.cancelFileUpload();
            }
        });

        uploadButton.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                listener.onUploadFile();
            }
        });

        form.addSubmitCompleteHandler(new SubmitCompleteHandler() {
            @Override
            public void onSubmitComplete(SubmitCompleteEvent event) {
                listener.onFileUploadComplete(event);
            }
        });
    }

    public void submitForm() {
        fileName.setValue(getUploadFileName());
        mergeTranslation.setValue(merge.getValue().toString());
        loadingIcon.setVisible(true);
        form.submit();
    }

    public String getUploadFileName() {
        String fileName = upload.getFilename();

        if (fileName.contains("/")) {
            return fileName.substring(fileName.lastIndexOf("/") + 1);
        } else if (fileName.contains("\\")) {
            return fileName.substring(fileName.lastIndexOf("\\") + 1);
        }

        return fileName;
    }

    public void setDocumentInfo(DocumentInfo docInfo, WorkspaceId workspaceId) {
        projectSlug.setValue(workspaceId.getProjectIterationId()
                .getProjectSlug());
        versionSlug.setValue(workspaceId.getProjectIterationId()
                .getIterationSlug());
        docId.setValue(docInfo.getId().getDocId());
        targetLocale.setValue(workspaceId.getLocaleId().toString());
    }

    @Override
    public void hide() {
        loadingIcon.setVisible(false);
        DOM.setElementProperty(upload.getElement(), "value", "");
        super.hide();
    }

}
TOP

Related Classes of org.zanata.webtrans.client.ui.FileUploadDialog

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.