com.openkm.frontend.client.widget.massive.ConvertPopup.java Source code

Java tutorial

Introduction

Here is the source code for com.openkm.frontend.client.widget.massive.ConvertPopup.java

Source

/**
 *  OpenKM, Open Document Management System (http://www.openkm.com)
 *  Copyright (c) 2006-2015  Paco Avila & Josep Llort
 *
 *  No bytes were intentionally harmed during the development of this application.
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *  
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License along
 *  with this program; if not, write to the Free Software Foundation, Inc.,
 *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */

package com.openkm.frontend.client.widget.massive;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HasAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.openkm.frontend.client.Main;
import com.openkm.frontend.client.bean.GWTDocument;
import com.openkm.frontend.client.constants.rpc.GWTConvertConstants;
import com.openkm.frontend.client.service.OKMDocumentService;
import com.openkm.frontend.client.service.OKMDocumentServiceAsync;
import com.openkm.frontend.client.util.Util;

/**
 * ConvertPopup
 * 
 * @author jllort
 *
 */
public class ConvertPopup extends DialogBox {
    private final OKMDocumentServiceAsync documentService = (OKMDocumentServiceAsync) GWT
            .create(OKMDocumentService.class);

    private VerticalPanel vPanel;
    private CheckBox saveCheck;
    private CheckBox downloadCheck;
    private Button cancelbutton;
    private Button executeButton;
    private GWTDocument doc;
    private HTML formatText;
    private ListBox formats;
    private Status status;

    /**
     * ConvertPopup
     */
    public ConvertPopup() {
        // Establishes auto-close when click outside
        super(false, true);
        setText(Main.i18n("convert.label"));

        // Status
        status = new Status(this);
        status.setStyleName("okm-StatusPopup");

        vPanel = new VerticalPanel();

        saveCheck = new CheckBox(Main.i18n("convert.save"));
        saveCheck.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                if (saveCheck.getValue()) {
                    downloadCheck.setValue(false);
                }
                evaluateExecuteButton();
            }
        });
        downloadCheck = new CheckBox(Main.i18n("convert.download"));
        downloadCheck.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                if (downloadCheck.getValue()) {
                    saveCheck.setValue(false);
                }
                evaluateExecuteButton();
            }
        });

        formatText = new HTML(Main.i18n("convert.format"));
        formats = new ListBox();
        formats.addChangeHandler(new ChangeHandler() {
            @Override
            public void onChange(ChangeEvent event) {
                evaluateExecuteButton();
            }
        });
        formats.setStyleName("okm-Input");

        cancelbutton = new Button(Main.i18n("button.cancel"));
        cancelbutton.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                hide();
            }
        });
        cancelbutton.setStyleName("okm-NoButton");
        executeButton = new Button(Main.i18n("button.execute"));
        executeButton.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                if (downloadCheck.getValue()) {
                    Util.downloadFilePdf(doc.getUuid());
                } else if (saveCheck.getValue()) {
                    String format = formats.getValue(formats.getSelectedIndex());
                    if (format.equals(GWTConvertConstants.TO_PDF)) {
                        status.setFlagConvert();
                        documentService.convertToPdf(doc.getPath(), new AsyncCallback<String>() {
                            @Override
                            public void onSuccess(String result) {
                                Main.get().mainPanel.desktop.browser.fileBrowser.refreshOnlyFileBrowser();
                                status.unsetFlagConvert();
                                hide();
                            }

                            @Override
                            public void onFailure(Throwable caught) {
                                Main.get().showError("convertToPdf", caught);
                                status.unsetFlagConvert();
                            }
                        });
                    }
                }
            }
        });
        executeButton.setStyleName("okm-YesButton");

        HorizontalPanel hCheckPanel = new HorizontalPanel();
        hCheckPanel.add(saveCheck);
        hCheckPanel.add(Util.hSpace("5"));
        hCheckPanel.add(downloadCheck);
        hCheckPanel.add(Util.hSpace("5"));
        hCheckPanel.setStyleName("okm-NoWrap");
        hCheckPanel.setCellVerticalAlignment(saveCheck, HasAlignment.ALIGN_MIDDLE);
        hCheckPanel.setCellVerticalAlignment(downloadCheck, HasAlignment.ALIGN_MIDDLE);

        HorizontalPanel hFormatPanel = new HorizontalPanel();
        hFormatPanel.add(Util.hSpace("5"));
        hFormatPanel.add(formatText);
        hFormatPanel.add(Util.hSpace("5"));
        hFormatPanel.add(formats);
        hFormatPanel.add(Util.hSpace("5"));
        hFormatPanel.setCellVerticalAlignment(formatText, HasAlignment.ALIGN_MIDDLE);
        hFormatPanel.setCellVerticalAlignment(formats, HasAlignment.ALIGN_MIDDLE);

        HorizontalPanel hButtonPanel = new HorizontalPanel();
        hButtonPanel.add(cancelbutton);
        hButtonPanel.add(Util.hSpace("5"));
        hButtonPanel.add(executeButton);

        vPanel.add(hCheckPanel);
        vPanel.add(Util.vSpace("5"));
        vPanel.add(hFormatPanel);
        vPanel.add(Util.vSpace("5"));
        vPanel.add(hButtonPanel);
        vPanel.add(Util.vSpace("5"));
        vPanel.setCellHorizontalAlignment(hButtonPanel, HasAlignment.ALIGN_CENTER);
        vPanel.setSize("100%", "20");

        super.hide();
        setWidget(vPanel);
    }

    /**
     * reset
     * 
     * @param doc
     */
    public void reset(GWTDocument doc) {
        this.doc = doc;
        saveCheck.setValue(true);
        downloadCheck.setValue(false);
        executeButton.setEnabled(false);
        formats.clear();
        formats.addItem("", "-");
        if (doc.isConvertibleToPdf()) {
            formats.addItem("pdf", GWTConvertConstants.TO_PDF);
        }
    }

    /**
     * evaluateExecuteButton
     */
    private void evaluateExecuteButton() {
        if (!saveCheck.getValue() && !downloadCheck.getValue()) {
            executeButton.setEnabled(false);
        } else {
            executeButton.setEnabled(formats.getSelectedIndex() > 0);
        }
    }

    /**
     * langRefresh
     */
    public void langRefresh() {
        setText(Main.i18n("convert.label"));
        saveCheck.setHTML(Main.i18n("convert.save"));
        downloadCheck.setHTML(Main.i18n("convert.download"));
        formatText.setHTML(Main.i18n("convert.format"));
        cancelbutton.setHTML(Main.i18n("button.cancel"));
        executeButton.setHTML(Main.i18n("button.execute"));
    }
}