/*********************************************************************** * * $CVSHeader$ * * This file is part of WebScarab, an Open Web Application Security * Project utility. For details, please see http://www.owasp.org/ * * Copyright (c) 2002 - 2004 Rogan Dawes * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Getting Source * ============== * * Source for this application is maintained at Sourceforge.net, a * repository for free software projects. * * For details, please see http://www.sourceforge.net/projects/owasp * */ /* * HexEditor.java * * Created on November 4, 2003, 8:23 AM */ package org.owasp.webscarab.ui.swing.editors; import java.awt.Image; import javax.swing.ImageIcon; import javax.imageio.ImageIO; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; /** * * @author rdawes */ public class ImagePanel extends javax.swing.JPanel implements ByteArrayEditor { /** * */ private static final long serialVersionUID = 6069538617330618742L; private byte[] _data = new byte[0]; /** Creates new form HexEditor */ public ImagePanel() { initComponents(); setName("Image"); } public String[] getContentTypes() { return new String[] { "image/.*" }; } public void setEditable(boolean editable) { } public byte[] getBytes() { return _data; } public void setBytes(String contentType, byte[] bytes) { imageLabel.setIcon(null); if (bytes != null && bytes.length > 0) { try { ByteArrayInputStream bais = new ByteArrayInputStream(bytes); Image image = ImageIO.read(bais); if (image != null) { imageLabel.setIcon(new ImageIcon(image)); } } catch (Exception e) { e.printStackTrace(); imageLabel.setIcon(null); } } } public boolean isModified() { return false; } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents java.awt.GridBagConstraints gridBagConstraints; imageScrollPane = new javax.swing.JScrollPane(); imageLabel = new javax.swing.JLabel(); setLayout(new java.awt.GridBagLayout()); imageScrollPane.setViewportView(imageLabel); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; add(imageScrollPane, gridBagConstraints); }//GEN-END:initComponents // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel imageLabel; private javax.swing.JScrollPane imageScrollPane; // End of variables declaration//GEN-END:variables public static void main(String[] args) { byte[] content = new byte[0]; try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); FileInputStream fis = new FileInputStream("/usr/share/xfce/backdrops/Flower.jpg"); byte[] buff = new byte[1024]; int got = 0; while ((got = fis.read(buff)) > 0) { baos.write(buff, 0, got); } content = baos.toByteArray(); } catch (Exception e) { e.printStackTrace(); System.exit(0); } javax.swing.JFrame top = new javax.swing.JFrame("Image Panel"); top.addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { System.exit(0); } }); ImagePanel ip = new ImagePanel(); top.getContentPane().add(ip); top.setBounds(100,100,600,400); try { ip.setBytes(null, content); ip.setEditable(false); top.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }