/* * Copyright 2010 Manuel Carrasco Moñino. (manolo at apache/org) * http://code.google.com/p/gwtupload * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package gwtuploadsample.client; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.dom.client.Style; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Hidden; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.RootPanel; import gwtupload.client.IFileInput.FileInputType; import gwtupload.client.IUploadStatus.Status; import gwtupload.client.IUploader; import gwtupload.client.IUploader.UploaderConstants; import gwtupload.client.PreloadedImage; import gwtupload.client.PreloadedImage.OnLoadPreloadedImageHandler; import gwtupload.client.SingleUploader; import gwtupload.client.SingleUploaderModal; import gwtupload.client.Uploader; import jsupload.client.ChismesUploadProgress; /** * * <p> * An example of a single uploader form, using a simple and modal upload progress widget * The example also uses PreloadedImage to display uploaded images. * </p> * * @author Manolo Carrasco Moñino * */ public class SingleUploadSample implements EntryPoint { FlowPanel panelImages = new FlowPanel(); OnLoadPreloadedImageHandler showImage = new OnLoadPreloadedImageHandler() { public void onLoad(PreloadedImage img) { img.setWidth("75px"); panelImages.add(img); } }; protected UploaderConstants i18nStrs;; private IUploader.OnFinishUploaderHandler onFinishUploaderHandler = new IUploader.OnFinishUploaderHandler() { public void onFinish(IUploader uploader) { if (uploader.getStatus() == Status.SUCCESS) { String msg = uploader.getServerMessage().getMessage(); if (msg != null && msg.startsWith("data:")) { new PreloadedImage(msg, showImage); } else { for (String url : uploader.getServerMessage().getUploadedFileUrls()) { new PreloadedImage(url, showImage); } } } } }; public void onModuleLoad() { // Configurable servlet path to experiment with different options String servletPath = Window.Location.getParameter("servlet"); if (servletPath == null) { servletPath = "servlet.gupld"; } SingleUploader single1 = new SingleUploaderModal(); single1.setServletPath(servletPath); // This enables php apc progress mechanism single1.add(new Hidden("APC_UPLOAD_PROGRESS", single1.getInputName()), 0); single1.avoidEmptyFiles(false); single1.addOnFinishUploadHandler(onFinishUploaderHandler); // single1.setMultipleSelection(false); RootPanel.get("single1").add(single1); SingleUploader single2 = new SingleUploaderModal(FileInputType.ANCHOR, new ChismesUploadProgress(true)); single2.setServletPath(servletPath); single2.addOnFinishUploadHandler(onFinishUploaderHandler); RootPanel.get("single2").add(single2); SingleUploader single3 = new SingleUploader(FileInputType.BUTTON); single3.addOnFinishUploadHandler(onFinishUploaderHandler); single3.setServletPath(servletPath); RootPanel.get("single3").add(single3); Label customButton = new Label(); customButton.setStyleName("customButton"); Label externalZone = new Label(); externalZone.setStyleName("customZone"); SingleUploader single4 = new SingleUploader(FileInputType.CUSTOM.with(customButton).withZone(externalZone)); single4.add(new Hidden("APC_UPLOAD_PROGRESS", single4.getInputName()), 0); single4.setServletPath(servletPath); single4.setAutoSubmit(true); single4.setValidExtensions("jpg", "gif", "png"); single4.addOnFinishUploadHandler(onFinishUploaderHandler); single4.avoidRepeatFiles(true); RootPanel.get("single4").add(single4); single4.getElement().getStyle().setProperty("display", "inline-block"); RootPanel.get("single4").add(externalZone); externalZone.getElement().getStyle().setProperty("display", "inline-block"); SingleUploader single5 = new SingleUploader(FileInputType.DROPZONE); single5.setServletPath(servletPath); single5.setAutoSubmit(true); single5.setValidExtensions("jpg", "gif", "png"); single5.addOnFinishUploadHandler(onFinishUploaderHandler); single5.avoidRepeatFiles(true); RootPanel.get("single5").add(single5); Label uploadLabel = new Label("Select images ..."); Label externalDropZone = new Label(); externalDropZone.setText("Drop files here"); externalDropZone.setSize("160px", "30px"); externalDropZone.getElement().getStyle().setBorderStyle(Style.BorderStyle.DASHED); externalDropZone.getElement().getStyle().setBorderWidth(1, Style.Unit.PX); SingleUploader single6 = new SingleUploader(FileInputType.DROPZONE.with(uploadLabel).withZone(externalDropZone)); single6.setServletPath(servletPath); single6.setAutoSubmit(true); single6.setValidExtensions("jpg", "gif", "png"); single6.addOnFinishUploadHandler(onFinishUploaderHandler); single6.avoidRepeatFiles(true); RootPanel.get("single6").add(single6); RootPanel.get("single6").add(externalDropZone); RootPanel.get("thumbnails").add(panelImages); } }