X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FHTMLOutput.java;h=95864c3f157b44201f2fa8bbcced4aeb2f324528;hb=17e77c3f2949a0729322b4a8d907f3f34b6a9914;hp=f7a0f3fa06e295e2d7ec414ae8aa7a3bdc50bae1;hpb=3caa3405a5822c7248bab517b8d1a7776e0dc210;p=jalview.git diff --git a/src/jalview/io/HTMLOutput.java b/src/jalview/io/HTMLOutput.java index f7a0f3f..95864c3 100755 --- a/src/jalview/io/HTMLOutput.java +++ b/src/jalview/io/HTMLOutput.java @@ -1,402 +1,389 @@ -/* - * 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 java.io.*; - -import java.awt.*; - -import jalview.datamodel.*; -import jalview.gui.*; - -public class HTMLOutput -{ - AlignViewport av; - SequenceRenderer sr; - FeatureRenderer fr; - Color color; - - public HTMLOutput(AlignViewport av, SequenceRenderer sr, FeatureRenderer fr1) - { - this.av = av; - this.sr = sr; - - fr = new FeatureRenderer(av); - fr.transferSettings(fr1); - - 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"); - - ////////////// - SequenceI seq; - AlignmentI alignment = av.getAlignment(); - - // 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); - - String id = seq.getDisplayId(av.getShowJVSuffix()); - - out.println(""); - - - for (int res = 0; res < seq.getLength(); res++) - { - if (!jalview.util.Comparison.isGap(seq.getCharAt(res))) - { - color = sr.getResidueBoxColour(seq, res); - - color = fr.findFeatureColour(color, seq, res); - } - else - color = Color.white; - - - if (color.getRGB() < -1) - { - out.println(""); - } - else - { - out.println(""); - } - } - - out.println(""); - } - - ////////////// - out.println("
" + i + "
|
" + i + - "
|
" + id + - "  " + - seq.getCharAt(res) + "" + seq.getCharAt(res) + "
"); - out.println("
"); - } - - void drawWrappedAlignment(PrintWriter out) - { - //////////////////////////////////// - /// How many sequences and residues can we fit on a printable page? - AlignmentI al = av.getAlignment(); - SequenceI seq; - String r; - String g; - String b; - - out.println("
\n"); - out.println( - "\n"); - - for (int startRes = 0; startRes < al.getWidth(); - startRes += av.getWrappedWidth()) - { - int endRes = startRes + av.getWrappedWidth(); - - if (endRes > al.getWidth()) - { - endRes = al.getWidth(); - } - - if(av.getScaleAboveWrapped()) - { - out.println(""); - - if (av.getScaleLeftWrapped()) - out.println(""); - else - out.println(""); - - - for (int i = startRes + 10; i < endRes; i += 10) - { - out.println(""); - } - - out.println(""); - } - - int startPos, endPos; - for (int s = 0; s < al.getHeight(); s++) - { - out.println(""); - seq = al.getSequenceAt(s); - - startPos = seq.findPosition( startRes ); - endPos = seq.findPosition( endRes )-1; - - String id = seq.getDisplayId(av.getShowJVSuffix()); - - out.println(""); - - - if(av.getScaleLeftWrapped()) - { - if(startPos > seq.getEnd() || endPos==0) - out.println(""); - else - out.println(""); - } - - - for (int res = startRes; res < endRes; res++) - { - if (!jalview.util.Comparison.isGap(seq.getCharAt(res))) - { - color = sr.getResidueBoxColour(seq, res); - - color = fr.findFeatureColour(color, seq, res); - } - else - color = Color.white; - - 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(""); - } - - - } - - if(av.getScaleRightWrapped() && - endRes < startRes + av.getWrappedWidth()) - { - out.println(""); - } - - - if(av.getScaleRightWrapped() && startPos " + endPos + - "  "); - } - - - out.println(""); - } - - if (endRes < al.getWidth()) - { - out.println(""); - } - } - - out.println("
  " + i + "
|
" + id + - "   " + startPos + - "  " + - seq.getCharAt(res) + "" + seq.getCharAt(res) + "" - +"  
"); - out.println("
"); - } - - public static String getImageMapHTML() - { - return new String( - "\n" - +"\n" - +"\n" - +"\n" - +"\n" - +"
\n" - +"\n"); - - } -} +/* + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9) + * Copyright (C) 2015 The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview 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 3 + * of the License, or (at your option) any later version. + * + * Jalview 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 Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ +package jalview.io; + +import jalview.datamodel.AlignmentI; +import jalview.datamodel.SequenceI; +import jalview.gui.AlignViewport; +import jalview.gui.AlignmentPanel; +import jalview.gui.FeatureRenderer; +import jalview.gui.SequenceRenderer; +import jalview.util.MessageManager; + +import java.awt.Color; +import java.awt.Font; +import java.io.PrintWriter; + +public class HTMLOutput +{ + AlignViewport av; + + SequenceRenderer sr; + + jalview.renderer.seqfeatures.FeatureRenderer fr; + + Color color; + + public HTMLOutput(AlignmentPanel ap, SequenceRenderer sr, + FeatureRenderer fr1) + { + this.av = ap.av; + this.sr = sr; + + fr = new FeatureRenderer(ap); + fr.transferSettings(fr1); + + 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(MessageManager.getString("label.save_as_html")); + chooser.setToolTipText(MessageManager.getString("action.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"); + + // //////////// + SequenceI seq; + AlignmentI alignment = av.getAlignment(); + + // 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); + + String id = seq.getDisplayId(av.getShowJVSuffix()); + + out.println(""); + + for (int res = 0; res < seq.getLength(); res++) + { + if (!jalview.util.Comparison.isGap(seq.getCharAt(res))) + { + color = sr.getResidueBoxColour(seq, res); + + color = fr.findFeatureColour(color, seq, res); + } + else + { + color = Color.white; + } + + if (color.getRGB() < -1) + { + out.println(""); + } + else + { + out.println(""); + } + } + + out.println(""); + } + + // //////////// + out.println("
" + i + "
|
" + i + + "
|
" + id + "  " + + seq.getCharAt(res) + "" + seq.getCharAt(res) + "
"); + out.println("
"); + } + + void drawWrappedAlignment(PrintWriter out) + { + // ////////////////////////////////// + // / How many sequences and residues can we fit on a printable page? + AlignmentI al = av.getAlignment(); + SequenceI seq; + String r; + String g; + String b; + + out.println("
\n"); + out.println("\n"); + + for (int startRes = 0; startRes < al.getWidth(); startRes += av + .getWrappedWidth()) + { + int endRes = startRes + av.getWrappedWidth(); + + if (endRes > al.getWidth()) + { + endRes = al.getWidth(); + } + + if (av.getScaleAboveWrapped()) + { + out.println(""); + + if (av.getScaleLeftWrapped()) + { + out.println(""); + } + else + { + out.println(""); + } + + for (int i = startRes + 10; i < endRes; i += 10) + { + out.println(""); + } + + out.println(""); + } + + int startPos, endPos; + for (int s = 0; s < al.getHeight(); s++) + { + out.println(""); + seq = al.getSequenceAt(s); + + startPos = seq.findPosition(startRes); + endPos = seq.findPosition(endRes) - 1; + + String id = seq.getDisplayId(av.getShowJVSuffix()); + + out.println(""); + + if (av.getScaleLeftWrapped()) + { + if (startPos > seq.getEnd() || endPos == 0) + { + out.println(""); + } + else + { + out.println(""); + } + } + + for (int res = startRes; res < endRes; res++) + { + if (!jalview.util.Comparison.isGap(seq.getCharAt(res))) + { + color = sr.getResidueBoxColour(seq, res); + + color = fr.findFeatureColour(color, seq, res); + } + else + { + color = Color.white; + } + + if (color.getRGB() < -1) + { + out.println(""); + } + else + { + out.println(""); + } + + } + + if (av.getScaleRightWrapped() + && endRes < startRes + av.getWrappedWidth()) + { + out.println(""); + } + + if (av.getScaleRightWrapped() && startPos < endPos) + { + out.println(""); + } + + out.println(""); + } + + if (endRes < al.getWidth()) + { + out.println(""); + } + } + + out.println("
  " + i + "
|
" + id + "   " + startPos + "  " + + seq.getCharAt(res) + "" + seq.getCharAt(res) + "" + + "   " + endPos + "  
"); + out.println("
"); + } + + public static String getImageMapHTML() + { + return new String( + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "
\n" + + "\n"); + + } +}