/* ************************************************************************* IT Mill Toolkit Development of Browser User Interfaces Made Easy Copyright (C) 2000-2006 IT Mill Ltd ************************************************************************* This product is distributed under commercial license that can be found from the product package on license.pdf. Use of this product might require purchasing a commercial license from IT Mill Ltd. For guidelines on usage, see licensing-guidelines.html ************************************************************************* For more information, contact: IT Mill Ltd phone: +358 2 4802 7180 Ruukinkatu 2-4 fax: +358 2 4802 7181 20540, Turku email: info@itmill.com Finland company www: www.itmill.com Primary source for information and releases: www.itmill.com ********************************************************************** */ package com.itmill.toolkit.demo.features; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.io.OutputStream; import com.itmill.toolkit.terminal.StreamResource; import com.itmill.toolkit.ui.Component; import com.itmill.toolkit.ui.Label; import com.itmill.toolkit.ui.Link; import com.itmill.toolkit.ui.OrderedLayout; import com.itmill.toolkit.ui.Panel; import com.itmill.toolkit.ui.Upload; import com.itmill.toolkit.ui.Upload.FinishedEvent; public class FeatureUpload extends Feature implements Upload.FinishedListener { Buffer buffer = new Buffer(); Panel status = new Panel("Uploaded file:"); public FeatureUpload() { super(); } protected Component getDemoComponent() { OrderedLayout l = new OrderedLayout(); // Example panel Panel show = new Panel("Upload component"); Upload up = new Upload("Upload a file:", buffer); up.addListener(this); show.addComponent(up); status.setVisible(false); l.addComponent(status); l.addComponent(show); // Properties propertyPanel = new PropertyPanel(up); return l; } protected String getExampleSrc() { return "Upload u = new Upload(\"Upload a file:\", uploadReceiver);\n\n" + "public class uploadReceiver \n" + "implements Upload.receiver, Upload.FinishedListener { \n" + "\n" + " java.io.File file;\n" + " java.io.FileOutputStream fos;\n" + " public uploadReceiver() {\n" + " }"; } protected String getDescriptionXHTML() { return "This demonstrates the use of the Upload component together with the Link component. " + "This implementation does not actually store the file to disk, it only keeps it in a buffer. " + "The example given on the example-tab on the other hand stores the file to disk and binds the link to that file.
" + "
On the demo tab you can try out how the different properties affect the presentation of the component."; } protected String getImage() { return "filetransfer.jpg"; } protected String getTitle() { return "Upload"; } public void uploadFinished(FinishedEvent event) { status.removeAllComponents(); if (buffer.getStream() == null) status.addComponent(new Label( "Upload finished, but output buffer is null!!")); else { status .addComponent(new Label("Name: " + event.getFilename(), Label.CONTENT_XHTML)); status.addComponent(new Label("Mimetype: " + event.getMIMEType(), Label.CONTENT_XHTML)); status.addComponent(new Label("Size: " + event.getLength() + " bytes.", Label.CONTENT_XHTML)); status.addComponent(new Link("Download " + buffer.getFileName(), new StreamResource(buffer, buffer.getFileName(), getApplication()))); status.setVisible(true); } } public class Buffer implements StreamResource.StreamSource, Upload.Receiver { ByteArrayOutputStream outputBuffer = null; String mimeType; String fileName; public Buffer() { } public InputStream getStream() { if (outputBuffer == null) return null; return new ByteArrayInputStream(outputBuffer.toByteArray()); } /** * @see com.itmill.toolkit.ui.Upload.Receiver#receiveUpload(String, * String) */ public OutputStream receiveUpload(String filename, String MIMEType) { fileName = filename; mimeType = MIMEType; outputBuffer = new ByteArrayOutputStream(); return outputBuffer; } /** * Returns the fileName. * * @return String */ public String getFileName() { return fileName; } /** * Returns the mimeType. * * @return String */ public String getMimeType() { return mimeType; } } }