TextViewer.java
上传用户:dinglihq
上传日期:2013-02-04
资源大小:99958k
文件大小:3k
源码类别:

Java编程

开发平台:

Java

  1. /*
  2.  * @(#)TextViewer.java 1.12 01/05/23
  3.  *
  4.  * Copyright 1997-2000 Sun Microsystems, Inc. All Rights Reserved.
  5.  *
  6.  * Redistribution and use in source and binary forms, with or without
  7.  * modification, are permitted provided that the following conditions
  8.  * are met:
  9.  * 
  10.  * - Redistributions of source code must retain the above copyright
  11.  *   notice, this list of conditions and the following disclaimer.
  12.  * 
  13.  * - Redistribution in binary form must reproduce the above copyright
  14.  *   notice, this list of conditions and the following disclaimer in the
  15.  *   documentation and/or other materials provided with the distribution.
  16.  * 
  17.  * Neither the name of Sun Microsystems, Inc. or the names of contributors
  18.  * may be used to endorse or promote products derived from this software
  19.  * without specific prior written permission.
  20.  * 
  21.  * This software is provided "AS IS," without a warranty of any kind. ALL
  22.  * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
  23.  * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
  24.  * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND
  25.  * ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES OR LIABILITIES
  26.  * SUFFERED BY LICENSEE AS A RESULT OF  OR RELATING TO USE, MODIFICATION
  27.  * OR DISTRIBUTION OF THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL
  28.  * SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR
  29.  * FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
  30.  * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
  31.  * ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS
  32.  * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
  33.  * 
  34.  * You acknowledge that Software is not designed, licensed or intended
  35.  * for use in the design, construction, operation or maintenance of any
  36.  * nuclear facility.
  37.  */
  38. import java.awt.*;
  39. import java.io.*;
  40. import java.beans.*;
  41. import javax.activation.*;
  42. import javax.swing.JPanel;
  43. import javax.swing.JTextArea;
  44. import javax.swing.JScrollPane;
  45. /**
  46.  * A very simple TextViewer Bean for the MIMEType "text/plain"
  47.  *
  48.  * @version 1.12, 01/05/23
  49.  * @author Christopher Cotton
  50.  */
  51. public class TextViewer extends JPanel implements CommandObject 
  52. {
  53.     private JTextArea text_area = null;
  54.     private DataHandler dh = null;
  55.     private String verb = null;
  56.     /**
  57.      * Constructor
  58.      */
  59.     public TextViewer() {
  60. super(new GridLayout(1,1));
  61. // create the text area
  62. text_area = new JTextArea();
  63. text_area.setEditable(false);
  64. text_area.setLineWrap(true);
  65. // create a scroll pane for the JTextArea
  66. JScrollPane sp = new JScrollPane();
  67. sp.setPreferredSize(new Dimension(300, 300));
  68. sp.getViewport().add(text_area);
  69. add(sp);
  70.     }
  71.     public void setCommandContext(String verb, DataHandler dh)
  72. throws IOException {
  73. this.verb = verb;
  74. this.dh = dh;
  75. this.setInputStream( dh.getInputStream() );
  76.     }
  77.   /**
  78.    * set the data stream, component to assume it is ready to
  79.    * be read.
  80.    */
  81.   public void setInputStream(InputStream ins) {
  82.       
  83.       int bytes_read = 0;
  84.       // check that we can actually read
  85.       ByteArrayOutputStream baos = new ByteArrayOutputStream();
  86.       byte data[] = new byte[1024];
  87.       
  88.       try {
  89.   while((bytes_read = ins.read(data)) >0)
  90.   baos.write(data, 0, bytes_read);
  91.   ins.close();
  92.       } catch(Exception e) {
  93.   e.printStackTrace();
  94.       }
  95.       // convert the buffer into a string
  96.       // place in the text area
  97.       text_area.setText(baos.toString());
  98.     }
  99. }