/**
*
*/
package org.appfuse.webapp.client.ui.upload.views;
import java.util.List;
import org.appfuse.webapp.client.ui.upload.FileUploadBean;
import com.github.gwtbootstrap.client.ui.Alert;
import com.github.gwtbootstrap.client.ui.FileUpload;
import com.github.gwtbootstrap.client.ui.Form;
import com.github.gwtbootstrap.client.ui.TextBox;
import com.github.gwtbootstrap.client.ui.constants.AlertType;
import com.google.gwt.core.client.GWT;
import com.google.gwt.editor.client.Editor;
import com.google.gwt.editor.client.EditorDriver;
import com.google.gwt.editor.client.SimpleBeanEditorDriver;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
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.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Widget;
/**
* @author ivangsa
*
*/
public class FileUploadViewImpl extends Composite implements FileUploadView, Editor<FileUploadBean> {
interface Binder extends UiBinder<Widget, FileUploadViewImpl> {}
private static final Binder BINDER = GWT.create(Binder.class);
interface Driver extends SimpleBeanEditorDriver<FileUploadBean, FileUploadViewImpl> { }
private Driver driver = GWT.create(Driver.class);
private Delegate delegate;
@UiField FlowPanel errorsPanel;
@UiField Form form;
@UiField TextBox name;
@UiField FileUpload file;
@UiField HasClickHandlers cancelButton;
/**
*
*/
public FileUploadViewImpl() {
super();
initWidget(BINDER.createAndBindUi(this));
driver.initialize(this);
}
@Override
public void setDelegate(Delegate delegate) {
this.delegate = delegate;
form.addSubmitHandler(delegate);
form.addSubmitCompleteHandler(delegate);
}
@Override
public void edit(FileUploadBean object) {
driver.edit(object);
errorsPanel.clear();
}
@Override
public EditorDriver<FileUploadBean> getEditorDriver() {
return driver;
}
@Override
public void showErrorsMessages(List<String> errors) {
errorsPanel.clear();
SafeHtmlBuilder sb = new SafeHtmlBuilder();
for (String error : errors) {
sb.appendEscaped(error);
sb.appendHtmlConstant("<br />");
}
errorsPanel.add(new Alert(sb.toSafeHtml().asString(), AlertType.ERROR));
}
@UiHandler("cancelButton")
void onCancelClick(ClickEvent event) {
delegate.onCancelClick();
}
}