⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fileeditordisplay.java

📁 emboss的linux版本的源代码
💻 JAVA
字号:
/**********************************************************************  This library is free software; you can redistribute it and/or*  modify it under the terms of the GNU Library General Public*  License as published by the Free Software Foundation; either*  version 2 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*  Library General Public License for more details.**  You should have received a copy of the GNU Library General Public*  License along with this library; if not, write to the*  Free Software Foundation, Inc., 59 Temple Place - Suite 330,*  Boston, MA  02111-1307, USA.**  @author: Copyright (C) Tim Carver*********************************************************************/package org.emboss.jemboss.gui.filetree;import java.awt.Color;import java.awt.Dimension;import javax.swing.*;import javax.swing.text.*;import java.io.*;import java.net.URL;/**** Display for text, sequence editing, html, gif, png, jpeg.**/public class FileEditorDisplay extends JTextPane{   /** png file content */   private byte[] pngContent = null;   /** file name */   private String filename;   /**   *   * @param filename	file name to display   *   */   public FileEditorDisplay(final String filename)   {      this.filename = filename;     initStylesForTextPane();     String text = "";     try     {       BufferedReader in = new BufferedReader(new FileReader(filename));       String line;       while((line = in.readLine()) != null)         text = text.concat(line + "\n");     }     catch (IOException ioe)     {       System.out.println("Cannot read file: " + filename);     }     if(filename.endsWith(".html"))       setText(text,"html");     else if( filename.toLowerCase().endsWith(".png") ||               filename.toLowerCase().endsWith(".gif") ||              filename.toLowerCase().endsWith(".jpeg") ||              filename.endsWith(".tif") )       setText(text,"png");     else if( filename.toLowerCase().endsWith(".z")  ||              filename.toLowerCase().endsWith(".gz") ||              filename.toLowerCase().endsWith(".zip")||              filename.toLowerCase().endsWith(".tar")||              filename.toLowerCase().endsWith(".ppt")||              filename.toLowerCase().endsWith(".doc")||              filename.toLowerCase().endsWith(".ps") )       setText("Jemboss Cannot display "+filename,"regular");     else       setText(text,"regular");   }   /**   *   * @param filename    file name to display   * @param contents	contents of file   *   */   public FileEditorDisplay(final String filename,                            Object contents)   {          this.filename = filename;     initStylesForTextPane();     if(contents.getClass().equals(String.class))     {       if(!filename.endsWith(".html"))         setText((String)contents,"regular");       else         setText((String)contents,"html");     }     else if( filename.toLowerCase().endsWith(".png") ||              filename.toLowerCase().endsWith(".gif") ||              filename.toLowerCase().endsWith(".jpeg") ||              filename.endsWith(".tif") )     {       ImageIcon icon = new ImageIcon((byte [])contents);       insertIcon(icon);       pngContent = (byte [])contents;     }     else if( filename.toLowerCase().endsWith(".z")  ||              filename.toLowerCase().endsWith(".gz") ||              filename.toLowerCase().endsWith(".zip")||              filename.toLowerCase().endsWith(".tar")||              filename.toLowerCase().endsWith(".ppt")||              filename.toLowerCase().endsWith(".doc")||              filename.toLowerCase().endsWith(".ps") )       setText("Jemboss Cannot display "+filename,"regular");     else     {       try       {         setText(new String((byte [])contents),"regular");       }       catch (Exception exp)       {         setText("Cannot display "+filename,"regular");       }     }   }  /**  *  * Override to avoid line wrapping.  * @param d	dimension  *  */   public void setSize(Dimension d)   {     if (d.width < getParent().getSize().width)       d.width = getParent().getSize().width;     super.setSize(d);   }  /**  *  * Override to avoid line wrapping.  *  */   public boolean getScrollableTracksViewportWidth()   {     return false;   }                           // public JTextPane getJTextPane()// {//   return this; // }    /**  *  *  Set the text & style in the JTextPane.  *  @param text 	text to be put into the JTextPane.  *  @param type 	style to use ("regular", "sequence", "png", "html").  *  */  public void setText(String text, String type)  {    Document doc = getDocument();         if(type.equalsIgnoreCase("regular"))    {      try      {        doc.insertString(0, text, getStyle("regular"));      }      catch (BadLocationException ble)      {        System.err.println("Couldn't insert initial text.");      }    }    else if(type.equalsIgnoreCase("sequence"))    {      try      {         String hdr = findHeader(text);        doc.insertString(doc.getLength(), hdr, getStyle("bold"));        for (int i=hdr.length(); i < text.length(); i++)        {          String rescol = new String("darkGray ");          if(text.substring(i,i+1).equalsIgnoreCase("A"))            rescol = "green";          else if(text.substring(i,i+1).equalsIgnoreCase("T"))            rescol = "red";          else if(text.substring(i,i+1).equalsIgnoreCase("G"))            rescol = "black";          else if(text.substring(i,i+1).equalsIgnoreCase("C"))            rescol = "blue";          doc.insertString(doc.getLength(), text.substring(i,i+1),                            getStyle(rescol));        }      }      catch (BadLocationException ble)      {        System.err.println("Couldn't insert initial text.");      }    }     else if(type.equalsIgnoreCase("png"))    {      ImageIcon icon = new ImageIcon(filename,filename);       insertIcon(icon);      pngContent = loadPNGContent(filename);    }    else if(type.equalsIgnoreCase("html"))    {      setContentType("text/html");      setText(text);      setEditable(false);    }  }  /**  *  *  Need to read png in, in case it is saved out  *  @param filename	file name to read  *  @return 		contents of file as a byte array  *  */  private byte[] loadPNGContent(String filename)  {    DataInputStream dis;    FileInputStream fis;    int nby = 0;    byte data[] = new byte[1];    try    {      fis = new FileInputStream(filename);      dis = new DataInputStream(fis);      while(true)      {        dis.readByte();        nby++;      }    }    catch (EOFException eof){}    catch (IOException ioe){}    if(nby >0)    {      try      {        data = new byte[nby];        fis = new FileInputStream(filename);        dis = new DataInputStream(fis);        nby=0;        while(true)        {          data[nby]=dis.readByte();          nby++;        }      }      catch (EOFException eof){}      catch (IOException ioe){}    }    return data;   }  /**  *  *  Returns the content of a png file or null.  *  @return 	byte content of a png file  *  */  public byte[] getPNGContent()  {    return pngContent;  }  /**  *  *  Initialise styles for a JTextPane.  *  */  protected void initStylesForTextPane()   {     //Initialize some styles.    Style def = StyleContext.getDefaultStyleContext().                             getStyle(StyleContext.DEFAULT_STYLE);    Style regular = addStyle("regular", def);    StyleConstants.setFontFamily(def, "monospaced");    Style s = addStyle("italic", regular);    StyleConstants.setItalic(s, true);    s = addStyle("bold", regular);    StyleConstants.setBold(s, true);    s = addStyle("small", regular);    StyleConstants.setFontSize(s, 10);    s = addStyle("large", regular);    StyleConstants.setFontSize(s, 16);    s = addStyle("red", regular);    StyleConstants.setForeground(s,Color.red);    StyleConstants.setBold(s, true);    StyleConstants.setFontFamily(def, "monospaced");    s = addStyle("green", regular);    StyleConstants.setForeground(s,Color.green);    StyleConstants.setBold(s, true);    StyleConstants.setFontFamily(def, "monospaced");    s = addStyle("blue", regular);    StyleConstants.setForeground(s,Color.blue);    StyleConstants.setBold(s, true);    StyleConstants.setFontFamily(def, "monospaced");    s = addStyle("orange", regular);    StyleConstants.setForeground(s,Color.orange);    StyleConstants.setBold(s, true);    StyleConstants.setFontFamily(def, "monospaced");    s = addStyle("black", regular);    StyleConstants.setForeground(s,Color.black);    StyleConstants.setBold(s, true);    StyleConstants.setFontFamily(def, "monospaced");    s = addStyle("darkGray", regular);    StyleConstants.setForeground(s,Color.darkGray);    StyleConstants.setBold(s, true);    StyleConstants.setFontFamily(def, "monospaced");    s = addStyle("icon", regular);    StyleConstants.setAlignment(s, StyleConstants.ALIGN_CENTER);  }  /**  *  *  Sequence header text.  *  @param text	contents of the file.  *  */  private String findHeader(String text)  {    String hdr = "";    String tmphdr = "";    BufferedReader in = new BufferedReader(new StringReader(text));    try    {      String line = in.readLine();      if(line.startsWith(">"))                   //fasta        hdr = line;      else      {        tmphdr = line;        while((line = in.readLine()) != null)        {          tmphdr = tmphdr.concat("\n" + line );                   if(line.equals("//") || line.startsWith("SQ ")                                || line.endsWith(".."))   //msf, embl, gcg          {            hdr = tmphdr;            break;          }                      }      }    }    catch( IOException ioe)    {      System.out.println("Cannot read " + text);    }     return hdr;  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -