org.daxplore.presenter.admin.view.PrefixDisplayViewImpl.java Source code

Java tutorial

Introduction

Here is the source code for org.daxplore.presenter.admin.view.PrefixDisplayViewImpl.java

Source

/*
 *  Copyright 2012 Axel Winkler, Daniel Dunr
 * 
 *  This file is part of Daxplore Presenter.
 *
 *  Daxplore Presenter is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU Lesser General Public License as published by
 *  the Free Software Foundation, either version 2.1 of the License, or
 *  (at your option) any later version.
 *
 *  Daxplore Presenter 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 Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public License
 *  along with Daxplore Presenter.  If not, see <http://www.gnu.org/licenses/>.
 */
package org.daxplore.presenter.admin.view;

import javax.servlet.http.HttpServletResponse;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.uibinder.client.UiTemplate;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
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.Hidden;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;

public class PrefixDisplayViewImpl extends Composite implements PrefixDisplayView {
    @UiTemplate("PrefixDisplayViewImpl.ui.xml")
    interface PrefixDisplayViewPanel extends UiBinder<Widget, PrefixDisplayViewImpl> {
        /* Empty UiTemplate interface */}

    private static PrefixDisplayViewPanel uiBinder = GWT.create(PrefixDisplayViewPanel.class);

    @UiField
    protected Anchor prefixHeader;
    @UiField
    protected Anchor mainlink;
    @UiField
    protected Label something; //TODO add relevant statistics

    @UiField
    protected FormPanel settingsForm;
    @UiField
    protected Hidden settingsPrefix;
    @UiField
    protected TextBox gaIDField;
    @UiField
    protected Button settingsButton;

    @UiField
    protected FormPanel uploadForm;
    @UiField
    protected FileUpload uploadWidget;
    @UiField
    protected Hidden uploadPrefix;
    @UiField
    protected Button uploadButton;
    @UiField
    protected DialogBox uploadDialog;
    @UiField
    protected Label uploadDialogText;
    @UiField
    protected Button uploadDialogButton;

    @UiField
    protected Label deletePrefixLabel;
    @UiField
    protected Button deleteButton;

    public PrefixDisplayViewImpl() {
        initWidget(uiBinder.createAndBindUi(this));

        mainlink.setTarget("_blank");

        settingsForm.setAction("/admin/settings");
        settingsForm.setEncoding(FormPanel.ENCODING_URLENCODED);
        settingsForm.setMethod(FormPanel.METHOD_POST);

        uploadForm.setAction("/admin/upload");
        uploadForm.setEncoding(FormPanel.ENCODING_MULTIPART);
        uploadForm.setMethod(FormPanel.METHOD_POST);

        uploadDialog.setVisible(false);
        uploadDialog.setModal(true);
        uploadDialog.setGlassEnabled(true);
    }

    @UiHandler("settingsButton")
    protected void settingsClick(ClickEvent e) {
        settingsForm.submit();
    }

    @UiHandler("uploadButton")
    protected void uploadClick(ClickEvent e) {
        boolean doUpload = Window.confirm("Are you sure you want to upload a new file, replacing all old data?");
        if (doUpload) {
            uploadForm.submit();
        }
    }

    @UiHandler("uploadForm")
    protected void uploadSubmitComplete(SubmitCompleteEvent event) {
        int status = -1;
        if (event.getResults() != null) {
            status = Integer.parseInt(event.getResults());
        }

        if (status != HttpServletResponse.SC_OK) {
            uploadDialogText.setText("Error code given by server: " + status + ". Please try again.");
            uploadDialog.center();
        }
    }

    @UiHandler("uploadDialogButton")
    protected void onClick(ClickEvent event) {
        uploadDialog.hide();
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void setPrefix(String prefix) {
        prefixHeader.setText(prefix);
        deletePrefixLabel.setText("Delete prefix " + prefix + ":");
        deleteButton.setText("Delete " + prefix);
        uploadPrefix.setValue(prefix);
        settingsPrefix.setValue(prefix);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void setPrefixHref(String href) {
        prefixHeader.setHref(href);
        mainlink.setText(href);
        mainlink.setHref(href);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void setStatDataItemCount(String something) {
        this.something.setText(something);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void addDeletePrefixClickHandler(ClickHandler handler) {
        deleteButton.addClickHandler(handler);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public boolean promptDeleteConfirmation(String prefix) {
        return Window.confirm("Are you sure you want to delete the prefix '" + prefix
                + "'.\n\nThis will also remove all data and information that belongs to it.");
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void setGoogleAnalyticsID(String gaID) {
        gaIDField.setText(gaID);
    }
}