X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FHTMLOutput.java;h=00c7364a9fbebae4df236c27001016d2a9354e99;hb=32ce9ddb7ce1a68add53dd81785ae428ca136a83;hp=54b9595c7f26effbe5c0ca7b8b61bef214246079;hpb=588042b69abf8e60bcc950b24c283933c7dd422f;p=jalview.git diff --git a/src/jalview/io/HTMLOutput.java b/src/jalview/io/HTMLOutput.java index 54b9595..00c7364 100755 --- a/src/jalview/io/HTMLOutput.java +++ b/src/jalview/io/HTMLOutput.java @@ -1,267 +1,391 @@ /* -* 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 -*/ + * 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.datamodel.*; +import java.io.*; -import jalview.gui.*; +import java.awt.*; +import jalview.datamodel.*; +import jalview.gui.*; import jalview.schemes.*; -import java.awt.*; - -import java.io.*; +public class HTMLOutput +{ + AlignViewport av; + SequenceRenderer sr; + FeatureRenderer fr; + Color color; + + public HTMLOutput(AlignViewport av, SequenceRenderer sr, FeatureRenderer fr) + { + this.av = av; + this.sr = sr; + this.fr = fr; + + 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(""); -public class HTMLOutput { - AlignViewport av; - SequenceRenderer sr; - Color color; + if (av.getWrapAlignment()) + { + drawWrappedAlignment(out); + } + else + { + drawUnwrappedAlignment(out); + } - public HTMLOutput(AlignViewport av) { - this.av = av; - sr = new SequenceRenderer(av); + out.println("\n\n"); + out.close(); + jalview.util.BrowserLauncher.openURL("file:///" + choice); + } + catch (Exception ex) + { + ex.printStackTrace(); + } + } + } - JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache.getProperty( - "LAST_DIRECTORY"), new String[] { "html" }, - new String[] { "HTML files" }, "HTML files"); + void drawUnwrappedAlignment(PrintWriter out) + { + out.println(""); + } } + + out.println("
\n"); + out.println( + "\n"); - chooser.setFileView(new JalviewFileView()); - chooser.setDialogTitle("Save as HTML"); - chooser.setToolTipText("Save"); + ////////////// + SequenceI seq; + AlignmentI alignment = av.getAlignment(); - int value = chooser.showSaveDialog(null); + // draws the top row, the measure rule + out.println(""); - if (value == JalviewFileChooser.APPROVE_OPTION) { - String choice = chooser.getSelectedFile().getPath(); - jalview.bin.Cache.setProperty("LAST_DIRECTORY", - chooser.getSelectedFile().getParent()); + int i = 0; - try { - PrintWriter out = new java.io.PrintWriter(new java.io.FileWriter( - choice)); - out.println(""); - 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(); - } - } - } + for (int res = 0; res < seq.getLength(); res++) + { - void drawUnwrappedAlignment(PrintWriter out) { - out.println("
" + id + + "  
\n"); - out.println( - "\n"); + color = sr.findSequenceColour(Color.white, seq, res); - ////////////// - SequenceGroup[] groups; - SequenceI seq; - ColourSchemeI cs = null; - AlignmentI alignment = av.getAlignment(); - String r; - String g; - String b; + color = fr.findFeatureColour(color, seq, res); - // draws the top row, the measure rule - out.println(""); + if (color.getRGB() < -1) + { + out.println(""); + } + else + { + out.println(""); + } + } - int i = 0; + out.println(""); + } - for (i = 10; i < (alignment.getWidth() - 10); i += 10) - out.println(""); + ////////////// + out.println("
" + + seq.getCharAt(res) + "" + seq.getCharAt(res) + "
" + i + "
|
"); + 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(""); out.println(""); + } - for (i = 0; i < alignment.getHeight(); i++) { - seq = alignment.getSequenceAt(i); - groups = alignment.findAllGroups(seq); + int startPos, endPos; + for (int s = 0; s < al.getHeight(); s++) + { + out.println(""); + seq = al.getSequenceAt(s); - if (av.getShowFullId()) { - out.println(""); - } else { - out.println(""); - } + startPos = seq.findPosition( startRes ); + endPos = seq.findPosition( endRes )-1; - for (int res = 0; res < seq.getLength(); res++) { - cs = av.getGlobalColourScheme(); + String id = seq.getDisplayId(av.getShowJVSuffix()); - if (groups != null) { - for (int k = 0; k < groups.length; k++) - if ((groups[k].getStartRes() <= res) && - (groups[k].getEndRes() >= res)) { - cs = groups[k].cs; + out.println(""); - break; - } - } - - color = sr.getResidueBoxColour(cs, seq, res); - - if (color.getRGB() < -1) { - out.println(""); - } else { - out.println(""); - } - } - out.println(""); + if(av.getScaleLeftWrapped()) + { + if(startPos > seq.getEnd() || endPos==0) + out.println(""); + else + out.println(""); } - ////////////// - out.println("
  " + i + "
|
" + i + - "
|
" + seq.getDisplayId() + - "  
" + seq.getName() + - "  " + id + + "  " + - seq.getCharAt(res) + "" + seq.getCharAt(res) + "
 " + startPos + + "  
"); - out.println("
"); - } - - 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; - - 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 res = startRes; res < endRes; res++) + { + color = sr.findSequenceColour(Color.white, seq, res); - for (int s = 0; s < al.getHeight(); s++) { - out.println(""); - seq = al.getSequenceAt(s); - groups = al.findAllGroups(seq); + color = fr.findFeatureColour(color, seq, res); - if (av.getShowFullId()) { - out.println(""); - } else { - out.println(""); - } + if (color.getRGB() < -1) + { + r = Integer.toHexString(color.getRed()); - for (int res = startRes; res < endRes; res++) { - cs = av.getGlobalColourScheme(); + if (r.length() < 2) + { + r = "0" + r; + } - if (groups != null) { - for (int k = 0; k < groups.length; k++) - if ((groups[k].getStartRes() <= res) && - (groups[k].getEndRes() >= res)) { - cs = groups[k].cs; + g = Integer.toHexString(color.getGreen()); - break; - } - } + if (g.length() < 2) + { + g = "0" + g; + } - color = sr.getResidueBoxColour(cs, seq, res); + b = Integer.toHexString(color.getBlue()); - if (color.getRGB() < -1) { - r = Integer.toHexString(color.getRed()); + if (b.length() < 2) + { + b = "0" + b; + } - if (r.length() < 2) { - r = "0" + r; - } + out.println(""); + } + else + { + out.println(""); + } - g = Integer.toHexString(color.getGreen()); - if (g.length() < 2) { - g = "0" + g; - } + } - b = Integer.toHexString(color.getBlue()); + if(av.getScaleRightWrapped() && + endRes < startRes + av.getWrappedWidth()) + { + out.println(""); + } - if (b.length() < 2) { - b = "0" + b; - } - out.println(""); - } else { - out.println(""); - } - } + if(av.getScaleRightWrapped() && startPos " + endPos + + "  "); + } - out.println(""); - } - if (endRes < al.getWidth()) { - out.println(""); - } - } + out.println(""); + } - out.println("
 " + i + "
|
" + i + - // "
|
" + seq.getDisplayId() + - "  " + seq.getName() + - "  " + + seq.getCharAt(res) + "" + seq.getCharAt(res) + "" + +"  " + - seq.getCharAt(res) + "" + seq.getCharAt(res) + "
"); - out.println("
"); + if (endRes < al.getWidth()) + { + out.println("
"); + out.println(""); + } + + public static String getImageMapHTML() + { + return new String( + "\n" + +"\n" + +"\n" + +"\n" + +"\n" + +"
\n" + +"\n"); + + } }