/** * */ package org.appfuse.webapp.client.ui.upload; import java.util.ArrayList; import java.util.List; import java.util.Set; import org.appfuse.webapp.client.application.Application; import org.appfuse.webapp.client.application.base.activity.AbstractBaseActivity; import org.appfuse.webapp.client.ui.home.HomePlace; import org.appfuse.webapp.client.ui.upload.views.FileUploadView; import org.appfuse.webapp.client.ui.upload.views.UploadedFileView; import com.github.gwtbootstrap.client.ui.Form.SubmitCompleteEvent; import com.github.gwtbootstrap.client.ui.Form.SubmitEvent; import com.github.gwtbootstrap.client.ui.constants.AlertType; import com.google.gwt.event.shared.EventBus; import com.google.gwt.user.client.ui.AcceptsOneWidget; import com.google.inject.Inject; /** * @author ivangsa * */ public class FileUploadActivity extends AbstractBaseActivity implements FileUploadView.Delegate, UploadedFileView.Delegate { private final FileUploadView formView; private final UploadedFileView resultsView; private AcceptsOneWidget panel; @Inject public FileUploadActivity(final Application application, final FileUploadView formView, final UploadedFileView resultsView) { super(application); this.formView = formView; this.resultsView = resultsView; setTitle(i18n.upload_title()); } /* * (non-Javadoc) * * @see * com.google.gwt.activity.shared.Activity#start(com.google.gwt.user.client * .ui.AcceptsOneWidget, com.google.gwt.event.shared.EventBus) */ @Override public void start(final AcceptsOneWidget panel, final EventBus eventBus) { this.panel = panel; showForm(); setDocumentTitleAndBodyAttributtes(); } private void showForm() { formView.setDelegate(this); formView.edit(new FileUploadBean()); panel.setWidget(formView); } @Override public void onSubmit(final SubmitEvent event) { if (formView != null) { final FileUploadBean fileUpload = formView.getEditorDriver().flush(); final Set violations = getValidator().validate(fileUpload); formView.getEditorDriver().setConstraintViolations(violations); if (!violations.isEmpty()) { event.cancel(); } } } @Override public void onSubmitComplete(final SubmitCompleteEvent event) { final UploadedFileBean uploadedFile = parseResponse(event.getResults()); if (uploadedFile.getErrorMessages() != null && uploadedFile.getErrorMessages().length() > 0) { final List<String> errorMessages = new ArrayList<String>(); for (int i = 0; i < uploadedFile.getErrorMessages().length(); i++) { errorMessages.add(uploadedFile.getErrorMessages().get(i)); } formView.showErrorsMessages(errorMessages); } else { shell.addMessage(uploadedFile.getLocation(), AlertType.SUCCESS); showResults(uploadedFile); } } private void showResults(final UploadedFileBean uploadedFile) { resultsView.setDelegate(this); resultsView.display(uploadedFile); panel.setWidget(resultsView); } @Override public void onDoneClick() { placeController.goTo(new HomePlace()); } @Override public void onCancelClick() { placeController.goTo(new HomePlace()); } @Override public void onUploadAnotherFileClick() { showForm(); } private final native UploadedFileBean parseResponse(String json) /*-{ return eval('(' + json + ')'); }-*/; }