/* * $Id$ * * Copyright 2007 Bruno Lowagie. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ package com.lowagie.rups.view.itext; import java.io.IOException; import java.util.Observable; import java.util.Observer; import javax.swing.JScrollPane; import javax.swing.JTextArea; import com.lowagie.rups.io.TextAreaOutputStream; import com.lowagie.text.pdf.PRStream; import com.lowagie.text.pdf.PdfObject; import com.lowagie.text.pdf.PdfReader; public class StreamTextArea extends JScrollPane implements Observer { /** The text area with the content stream. */ protected JTextArea text; /** * Constructs a StreamTextArea. */ public StreamTextArea() { super(); text = new JTextArea(); setViewportView(text); } /** * @see java.util.Observer#update(java.util.Observable, java.lang.Object) */ public void update(Observable observable, Object obj) { text.setText(null); } /** * Renders the content stream of a PdfObject or empties the text area. * @param object the object of which the content stream needs to be rendered */ public void render(PdfObject object) { if (object instanceof PRStream) { PRStream stream = (PRStream)object; try { TextAreaOutputStream taos = new TextAreaOutputStream(text); taos.write(PdfReader.getStreamBytes(stream)); //text.addMouseListener(new StreamEditorAction(stream)); } catch(IOException e) { text.setText("The stream could not be read: " + e.getMessage()); } } else { update(null, null); return; } text.repaint(); repaint(); } /** a serial version id. */ private static final long serialVersionUID = 1302283071087762494L; }