1 17 18 package org.objectweb.jac.aspects.gui.web; 19 20 import java.io.IOException ; 21 import java.io.PrintWriter ; 22 import javax.servlet.http.HttpServletResponse ; 23 import org.apache.log4j.Logger; 24 import org.mortbay.html.Tag; 25 import org.objectweb.jac.aspects.gui.GuiAC; 26 import org.objectweb.jac.aspects.gui.TableCellViewer; 27 import org.objectweb.jac.core.rtti.FieldItem; 28 import org.objectweb.jac.lib.Attachment; 29 import org.objectweb.jac.util.Strings; 30 import org.objectweb.jac.util.Thumbnail; 31 32 public class AttachmentViewer extends AbstractFieldView 33 implements HTMLViewer, AttachmentListener, TableCellViewer 34 { 35 static Logger logger = Logger.getLogger("web.attachment"); 36 37 Attachment value; 38 39 public AttachmentViewer(Object value, Object substance, FieldItem field) { 40 super(substance,field); 41 setValue(value); 42 } 43 44 public AttachmentViewer() { 45 isCellViewer = true; 46 } 47 48 public void setValue(Object value) { 49 this.value = (Attachment)value; 50 } 51 52 public void genHTML(PrintWriter out) throws IOException { 53 if (value!=null) { 54 if (value.getMimeType()==null) 55 out.print("<a HREF=\""+eventURL("onLoadAttachment")+"\">"+ 56 value.getName()+"</a>"); 57 else if (value.getMimeType().startsWith("image/")) { 58 Tag img = new Tag("img"); 59 if (isCellViewer) 60 img.attribute("src",eventURL("onLoadAttachment")+"&thumb=1"); 61 else 62 img.attribute("src",eventURL("onLoadAttachment")); 63 img.write(out); 64 } else 65 out.print("<a HREF=\""+eventURL("onLoadAttachment")+"\">"+ 66 value.getName()+"</a>"); 67 } 68 } 69 70 72 public void onLoadAttachment() { 73 WebDisplay display = (WebDisplay)context.getDisplay(); 74 try { 75 if (value!=null) { 76 JacRequest request = WebDisplay.getRequest(); 77 HttpServletResponse response = WebDisplay.getResponse(); 78 response.setContentType(value.getMimeType()); 79 if (request.getParameter("thumb")!=null) { 80 try { 81 byte[] thumb = 82 Thumbnail.createThumbArray( 83 value.getData(), 84 GuiAC.THUMB_MAX_WIDTH,GuiAC.THUMB_MAX_HEIGHT, 85 GuiAC.THUMB_QUALITY); 86 logger.debug(this+"Writing attachment "+value+ 87 " on "+Strings.hex(response)); 88 response.getOutputStream().write(thumb); 89 } catch (Exception e) { 90 e.printStackTrace(); 91 } 92 } else { 93 response.getOutputStream().write(value.getData()); 94 } 95 } 96 } catch (IOException e) { 97 logger.error("Failed to output stream",e); 98 } finally { 99 (WebDisplay.getRequest()).setResponse(); 100 } 101 } 102 } 103 | Popular Tags |