/*
* Copyright 2012 Axel Winkler, Daniel Dunér
*
* 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);
}
}