X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FHtmlFile.java;h=e31e78dcc2551fcf2c80df2059c05d0d10834b07;hb=e60cacff9260c47c12cf34a7e191678cfc97d265;hp=3dd937d5017a050edd6c2bd936ba8fce0e9a5287;hpb=4660fcf0745dbc1f6f6e7241b398301f93edb548;p=jalview.git diff --git a/src/jalview/io/HtmlFile.java b/src/jalview/io/HtmlFile.java index 3dd937d..e31e78d 100644 --- a/src/jalview/io/HtmlFile.java +++ b/src/jalview/io/HtmlFile.java @@ -21,27 +21,34 @@ package jalview.io; +import jalview.api.ComplexAlignFile; +import jalview.api.FeatureSettingsModelI; +import jalview.api.FeaturesDisplayedI; +import jalview.datamodel.ColumnSelection; +import jalview.datamodel.SequenceI; + import java.io.IOException; -import java.util.List; +import java.io.StringReader; 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 class HtmlFile extends AlignFile implements ComplexAlignFile { public static final String FILE_EXT = "html"; public static final String FILE_DESC = "HTML"; - private ColourSchemeI colourScheme; + private String globalColourScheme; private boolean showSeqFeatures; - private List hiddenColumns; + private ColumnSelection columnSelection; + + private SequenceI[] hiddenSequences; + + private FeaturesDisplayedI displayedFeatures; public HtmlFile() { @@ -61,6 +68,8 @@ public class HtmlFile extends AlignFile @Override public void parse() throws IOException { + Element content = null; + Document doc = null; try { StringBuilder htmlData = new StringBuilder(); @@ -69,33 +78,46 @@ public class HtmlFile extends AlignFile { htmlData.append(currentLine); } + doc = Jsoup.parse(htmlData.toString()); + } catch (OutOfMemoryError oom) + { + errormessage = "Not enough memory to process HTML document"; + throw new IOException(errormessage); + } - Document doc = Jsoup.parse(htmlData.toString()); - Element content = doc.getElementById("seqData"); - String alignmentJsonString = content.val(); + try + { + boolean contentFromDiv = true; + // search for BioJSON data in div element with id seqData + content = doc.select("div[id=seqData]").first(); + if (content == null) + { + contentFromDiv = false; + // search for BioJSON data in input element with id seqData + content = doc.getElementById("seqData"); + } - JSONFile jsonFile = new JSONFile().parse(alignmentJsonString); + if (content == null) + { + errormessage = "The html document is not embedded with BioJSON data"; + throw new IOException(errormessage); + } + JSONFile jsonFile = new JSONFile().parse(new StringReader( + contentFromDiv ? content.text() : content.val())); this.seqs = jsonFile.getSeqs(); this.seqGroups = jsonFile.getSeqGroups(); this.annotations = jsonFile.getAnnotations(); this.showSeqFeatures = jsonFile.isShowSeqFeatures(); - this.colourScheme = jsonFile.getColourScheme(); - this.hiddenColumns = jsonFile.getHiddenColumns(); + this.globalColourScheme = jsonFile.getGlobalColourScheme(); + this.hiddenSequences = jsonFile.getHiddenSequences(); + this.columnSelection = jsonFile.getColumnSelection(); + this.displayedFeatures = jsonFile.getDisplayedFeatures(); } catch (Exception e) { - e.printStackTrace(); + throw e; } } - public void applySettingsToAlignmentView(AlignViewControllerGuiI avc) - { - avc.setShowSeqFeatures(isShowSeqFeatures()); - avc.changeColour(getColourScheme()); - avc.setMenusForViewport(); - avc.hideColumns(hiddenColumns); - avc.syncHiddenSequences(); - } - @Override public String print() { @@ -103,6 +125,7 @@ public class HtmlFile extends AlignFile "Print method of HtmlFile is not supported!"); } + @Override public boolean isShowSeqFeatures() { return showSeqFeatures; @@ -113,14 +136,58 @@ public class HtmlFile extends AlignFile this.showSeqFeatures = showSeqFeatures; } - public ColourSchemeI getColourScheme() + @Override + public String getGlobalColourScheme() + { + return globalColourScheme; + } + + public void setColourScheme(String globalColourScheme) { - return colourScheme; + this.globalColourScheme = globalColourScheme; } - public void setColourScheme(ColourSchemeI colourScheme) + @Override + public ColumnSelection getColumnSelection() + { + return columnSelection; + } + + public void setColumnSelection(ColumnSelection columnSelection) + { + this.columnSelection = columnSelection; + } + + @Override + public SequenceI[] getHiddenSequences() + { + return hiddenSequences; + } + + public void setHiddenSequences(SequenceI[] hiddenSequences) + { + this.hiddenSequences = hiddenSequences; + } + + @Override + public FeaturesDisplayedI getDisplayedFeatures() + { + return displayedFeatures; + } + + /** + * Returns a descriptor for suitable feature display settings with + * + */ + @Override + public FeatureSettingsModelI getFeatureColourScheme() { - this.colourScheme = colourScheme; + return new PDBFeatureSettings(); } }