/* * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) * Copyright (C) $$Year-Rel$$ 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 java.io.IOException; import java.util.List; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import jalview.api.AlignViewControllerGuiI; import jalview.schemes.ColourSchemeI; public class HtmlFile extends AlignFile { public static final String FILE_EXT = "html"; public static final String FILE_DESC = "HTML"; private ColourSchemeI colourScheme; private boolean showSeqFeatures; private List hiddenColumns; public HtmlFile() { super(); } public HtmlFile(FileParse source) throws IOException { super(source); } public HtmlFile(String inFile, String type) throws IOException { super(inFile, type); } @Override public void parse() throws IOException { try { StringBuilder htmlData = new StringBuilder(); String currentLine; while ((currentLine = nextLine()) != null) { htmlData.append(currentLine); } Document doc = Jsoup.parse(htmlData.toString()); Element content = doc.getElementById("seqData"); String alignmentJsonString = content.val(); JSONFile jsonFile = new JSONFile().parse(alignmentJsonString); this.seqs = jsonFile.getSeqs(); this.seqGroups = jsonFile.getSeqGroups(); this.annotations = jsonFile.getAnnotations(); this.showSeqFeatures = jsonFile.isShowSeqFeatures(); this.colourScheme = jsonFile.getColourScheme(); this.hiddenColumns = jsonFile.getHiddenColumns(); } catch (Exception e) { e.printStackTrace(); } } public void applySettingsToAlignmentView(AlignViewControllerGuiI avc) { avc.setShowSeqFeatures(isShowSeqFeatures()); avc.changeColour(getColourScheme()); avc.setMenusForViewport(); avc.hideColumns(hiddenColumns); avc.syncHiddenSequences(); } @Override public String print() { throw new UnsupportedOperationException( "Print method of HtmlFile is not supported!"); } public boolean isShowSeqFeatures() { return showSeqFeatures; } public void setShowSeqFeatures(boolean showSeqFeatures) { this.showSeqFeatures = showSeqFeatures; } public ColourSchemeI getColourScheme() { return colourScheme; } public void setColourScheme(ColourSchemeI colourScheme) { this.colourScheme = colourScheme; } }