X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FHTMLOutput.java;h=54b9595c7f26effbe5c0ca7b8b61bef214246079;hb=588042b69abf8e60bcc950b24c283933c7dd422f;hp=a37d8a2f8b76de7750632bf3318624a2d07b6f1b;hpb=61464a7627562c55f28357cb6eeb68eb734961b7;p=jalview.git diff --git a/src/jalview/io/HTMLOutput.java b/src/jalview/io/HTMLOutput.java index a37d8a2..54b9595 100755 --- a/src/jalview/io/HTMLOutput.java +++ b/src/jalview/io/HTMLOutput.java @@ -1,106 +1,267 @@ +/* +* Jalview - A Sequence Alignment Editor and Viewer +* Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle +* +* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA +*/ package jalview.io; -import jalview.gui.*; import jalview.datamodel.*; + +import jalview.gui.*; + import jalview.schemes.*; + import java.awt.*; -import javax.swing.*; + import java.io.*; -import java.util.*; +import java.util.*; -public class HTMLOutput -{ +import javax.swing.*; - public HTMLOutput(AlignViewport av) - { - SequenceRenderer sr = new SequenceRenderer(av); +public class HTMLOutput { + AlignViewport av; + SequenceRenderer sr; Color color; - JFileChooser chooser = new JFileChooser(jalview.bin.Cache.LAST_DIRECTORY); - chooser.setDialogTitle("Save as HTML"); - chooser.setToolTipText("Save"); - int value = chooser.showSaveDialog(null); - if(value == JFileChooser.APPROVE_OPTION) - { - String choice = chooser.getSelectedFile().getPath(); - jalview.bin.Cache.LAST_DIRECTORY = choice; - try{ - PrintWriter out = new java.io.PrintWriter(new java.io.FileWriter(choice)); - out.println(""); - out.println(""); - out.println(""); - out.println("
\n"); - out.println("\n"); + public HTMLOutput(AlignViewport av) { + this.av = av; + sr = new SequenceRenderer(av); + + JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache.getProperty( + "LAST_DIRECTORY"), new String[] { "html" }, + new String[] { "HTML files" }, "HTML files"); + + chooser.setFileView(new JalviewFileView()); + chooser.setDialogTitle("Save as HTML"); + chooser.setToolTipText("Save"); + + int value = chooser.showSaveDialog(null); + + if (value == JalviewFileChooser.APPROVE_OPTION) { + String choice = chooser.getSelectedFile().getPath(); + jalview.bin.Cache.setProperty("LAST_DIRECTORY", + chooser.getSelectedFile().getParent()); + + try { + PrintWriter out = new java.io.PrintWriter(new java.io.FileWriter( + choice)); + out.println(""); + out.println(""); + out.println(""); + + if (av.getWrapAlignment()) { + drawWrappedAlignment(out); + } else { + drawUnwrappedAlignment(out); + } + + out.println("\n\n"); + out.close(); + jalview.util.BrowserLauncher.openURL("file:///" + choice); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + } + + void drawUnwrappedAlignment(PrintWriter out) { + out.println("
\n"); + out.println( + "\n"); ////////////// - SequenceGroup group; + SequenceGroup[] groups; SequenceI seq; - ColourSchemeI cs; + ColourSchemeI cs = null; AlignmentI alignment = av.getAlignment(); - String r,g,b; - for (int i = 0; i < alignment.getHeight(); i++) - { - seq = alignment.getSequenceAt(i); - group = alignment.findGroup( seq ); - out.println(""); - for (int res = 0; res < seq.getLength(); res++) - { - if(group!=null && group.getStartRes()<=res && group.getEndRes()>=res) - cs = group.cs; - else - cs = av.getGlobalColourScheme(); - - - color = sr.getResidueBoxColour(cs, seq, res); - - if(color.getRGB()<-1) - { - r = Integer.toHexString(color.getRed()); - if(r.length()<2) - r = "0"+r; - g = Integer.toHexString(color.getGreen()); - if(g.length()<2) - g = "0"+g; - b = Integer.toHexString(color.getBlue()); - if(b.length()<2) - b = "0"+b; - out.println(""); + String r; + String g; + String b; + + // draws the top row, the measure rule + out.println(""); + + int i = 0; + + for (i = 10; i < (alignment.getWidth() - 10); i += 10) + out.println(""); + + out.println(""); + out.println(""); + + for (i = 0; i < alignment.getHeight(); i++) { + seq = alignment.getSequenceAt(i); + groups = alignment.findAllGroups(seq); + + if (av.getShowFullId()) { + out.println(""); + } else { + out.println(""); } - else - out.println(""); - } + for (int res = 0; res < seq.getLength(); res++) { + cs = av.getGlobalColourScheme(); + + if (groups != null) { + for (int k = 0; k < groups.length; k++) + if ((groups[k].getStartRes() <= res) && + (groups[k].getEndRes() >= res)) { + cs = groups[k].cs; + + break; + } + } - out.println(""); + color = sr.getResidueBoxColour(cs, seq, res); + + if (color.getRGB() < -1) { + out.println(""); + } else { + out.println(""); + } + } + + out.println(""); } + ////////////// out.println("
"+seq.getName()+"  "+seq.getCharAt(res)+"
" + i + "
|
" + i + + "
|
" + seq.getDisplayId() + + "  
" + seq.getName() + + "  "+seq.getCharAt(res)+"
" + + seq.getCharAt(res) + "" + seq.getCharAt(res) + "
"); - out.println("
\n\n"); + out.println("
"); + } - out.close(); + void drawWrappedAlignment(PrintWriter out) { + //////////////////////////////////// + /// How many sequences and residues can we fit on a printable page? + AlignmentI al = av.getAlignment(); + SequenceGroup[] groups; + SequenceI seq; + ColourSchemeI cs = null; + String r; + String g; + String b; - jalview.util.BrowserLauncher.openURL( choice ); - } - catch(Exception ex){ex.printStackTrace();} - } - } + out.println("
\n"); + out.println( + "\n"); + + for (int startRes = 0; startRes < al.getWidth(); + startRes += av.getChunkWidth()) { + int endRes = startRes + av.getChunkWidth(); + + if (endRes > al.getWidth()) { + endRes = al.getWidth(); + } + + out.println(""); + out.println(""); + + for (int i = startRes + 10; i < endRes; i += 10) + out.println(""); + + // out.println(""); + out.println(""); + + for (int s = 0; s < al.getHeight(); s++) { + out.println(""); + seq = al.getSequenceAt(s); + groups = al.findAllGroups(seq); + + if (av.getShowFullId()) { + out.println(""); + } else { + out.println(""); + } + + for (int res = startRes; res < endRes; res++) { + cs = av.getGlobalColourScheme(); + if (groups != null) { + for (int k = 0; k < groups.length; k++) + if ((groups[k].getStartRes() <= res) && + (groups[k].getEndRes() >= res)) { + cs = groups[k].cs; + break; + } + } + + color = sr.getResidueBoxColour(cs, seq, res); + + if (color.getRGB() < -1) { + r = Integer.toHexString(color.getRed()); + + if (r.length() < 2) { + r = "0" + r; + } + + g = Integer.toHexString(color.getGreen()); + + if (g.length() < 2) { + g = "0" + g; + } + + b = Integer.toHexString(color.getBlue()); + + if (b.length() < 2) { + b = "0" + b; + } + + out.println(""); + } else { + out.println(""); + } + } + + out.println(""); + } + + if (endRes < al.getWidth()) { + out.println(""); + } + } + + out.println("
 " + i + "
|
" + i + + // "
|
" + seq.getDisplayId() + + "  " + seq.getName() + + "  " + + seq.getCharAt(res) + "" + seq.getCharAt(res) + "
"); + out.println("
"); + } }