X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FJSONFile.java;h=b079a3c68ece5427ea872b54763e5598499e2319;hb=58399507cc82e8c7940a8500af73c3ed1bdd720d;hp=ce70ea5f94d27ab6b91b63b4bcf40c17c2928e7e;hpb=6dd554fdbf34db6b79595d5027159d20225f4894;p=jalview.git diff --git a/src/jalview/io/JSONFile.java b/src/jalview/io/JSONFile.java index ce70ea5..b079a3c 100644 --- a/src/jalview/io/JSONFile.java +++ b/src/jalview/io/JSONFile.java @@ -21,11 +21,14 @@ package jalview.io; +import jalview.api.AlignExportSettingI; +import jalview.api.AlignViewportI; import jalview.api.AlignmentViewPanel; import jalview.api.ComplexAlignFile; import jalview.api.FeatureRenderer; import jalview.api.FeaturesDisplayedI; import jalview.datamodel.AlignmentAnnotation; +import jalview.datamodel.AlignmentI; import jalview.datamodel.Annotation; import jalview.datamodel.ColumnSelection; import jalview.datamodel.HiddenSequences; @@ -42,6 +45,7 @@ import jalview.json.binding.v1.SequenceGrpPojo; import jalview.json.binding.v1.SequencePojo; import jalview.schemes.ColourSchemeI; import jalview.schemes.ColourSchemeProperty; +import jalview.viewmodel.seqfeatures.FeaturesDisplayed; import java.awt.Color; import java.io.IOException; @@ -88,6 +92,7 @@ public class JSONFile extends AlignFile implements ComplexAlignFile private ArrayList hiddenSequences; + public JSONFile() { super(); @@ -116,6 +121,45 @@ public class JSONFile extends AlignFile implements ComplexAlignFile try { AlignmentPojo jsonAlignmentPojo = new AlignmentPojo(); + AlignExportSettingI exportSettings = getExportSettings(); + + // if no export settings were supplied use the following with all values + // defaulting to true + if (exportSettings == null) + { + exportSettings = new AlignExportSettingI() + { + @Override + public boolean isExportHiddenSequences() + { + return true; + } + + @Override + public boolean isExportHiddenColumns() + { + return true; + } + + @Override + public boolean isExportGroups() + { + return true; + } + + @Override + public boolean isExportFeatures() + { + return true; + } + + @Override + public boolean isExportAnnotations() + { + return true; + } + }; + } int count = 0; for (SequenceI seq : seqs) @@ -144,14 +188,14 @@ public class JSONFile extends AlignFile implements ComplexAlignFile if (hiddenSections != null) { if (hiddenSections[0] != null - && getExportSettings() + && exportSettings .isExportHiddenColumns()) { jsonAlignmentPojo.getAppSettings().put("hiddenCols", String.valueOf(hiddenSections[0])); } if (hiddenSections[1] != null - && getExportSettings() + && exportSettings .isExportHiddenSequences()) { jsonAlignmentPojo.getAppSettings().put("hiddenSeqs", @@ -159,19 +203,19 @@ public class JSONFile extends AlignFile implements ComplexAlignFile } } - if (getExportSettings().isExportAnnotations()) + if (exportSettings.isExportAnnotations()) { jsonAlignmentPojo .setAlignAnnotation(annotationToJsonPojo(annotations)); } - if (getExportSettings().isExportFeatures()) + if (exportSettings.isExportFeatures()) { jsonAlignmentPojo .setSeqFeatures(sequenceFeatureToJsonPojo(seqs, fr)); } - if (getExportSettings().isExportGroups() + if (exportSettings.isExportGroups() && seqGroups != null && seqGroups.size() > 0) { @@ -257,10 +301,10 @@ public class JSONFile extends AlignFile implements ComplexAlignFile return hiddenSections; } - public static List sequenceFeatureToJsonPojo( + public List sequenceFeatureToJsonPojo( List seqs, FeatureRenderer fr) { - FeaturesDisplayedI displayedFeatures = (fr == null) ? null : fr + displayedFeatures = (fr == null) ? null : fr .getFeaturesDisplayed(); List sequenceFeaturesPojo = new ArrayList(); for (SequenceI seq : seqs) @@ -283,6 +327,7 @@ public class JSONFile extends AlignFile implements ComplexAlignFile { SequenceFeaturesPojo jsonFeature = new SequenceFeaturesPojo( String.valueOf(seq.hashCode())); + String featureColour = (fr == null) ? null : jalview.util.Format .getHexString(fr .findFeatureColour(Color.white, seq, @@ -425,8 +470,9 @@ public class JSONFile extends AlignFile implements ComplexAlignFile } } } - ColourSchemeI scheme = getJalviewColorScheme(colourScheme); - SequenceGroup seqGrp = new SequenceGroup(grpSeqs, grpName, scheme, + ColourSchemeI grpColourScheme = getJalviewColorScheme(colourScheme); + SequenceGroup seqGrp = new SequenceGroup(grpSeqs, grpName, + grpColourScheme, displayBoxes, displayText, colourText, startRes, endRes); seqGrp.setShowNonconserved(showNonconserved); seqGrp.setDescription(description); @@ -509,6 +555,7 @@ public class JSONFile extends AlignFile implements ComplexAlignFile { if (jsonSeqFeatures != null) { + displayedFeatures = new FeaturesDisplayed(); for (Iterator seqFeatureItr = jsonSeqFeatures.iterator(); seqFeatureItr .hasNext();) { @@ -540,6 +587,7 @@ public class JSONFile extends AlignFile implements ComplexAlignFile sequenceFeature.setBegin(seq.findPosition(begin.intValue())); sequenceFeature.setEnd(seq.findPosition(end.intValue()) - 1); seq.addSequenceFeature(sequenceFeature); + displayedFeatures.setVisible(type); } } } @@ -580,6 +628,7 @@ public class JSONFile extends AlignFile implements ComplexAlignFile this.colourScheme = colourScheme; } + @Override public FeaturesDisplayedI getDisplayedFeatures() { return displayedFeatures; @@ -590,50 +639,34 @@ public class JSONFile extends AlignFile implements ComplexAlignFile this.displayedFeatures = displayedFeatures; } - @Override + public void configureForView(AlignmentViewPanel avpanel) { super.configureForView(avpanel); - if (isExporting()) - { - setViewport(avpanel.getAlignViewport()); - seqGroups = avpanel.getAlignment().getGroups(); - setDisplayedFeatures(getViewport().getFeaturesDisplayed()); - fr = avpanel.cloneFeatureRenderer(); + AlignViewportI viewport = avpanel.getAlignViewport(); + AlignmentI alignment = viewport.getAlignment(); + AlignmentAnnotation[] annots = alignment.getAlignmentAnnotation(); - for (SequenceI seq : getViewport().getAlignment().getSequences()) - { - seqs.add(seq); - } + seqGroups = alignment.getGroups(); + fr = avpanel.cloneFeatureRenderer(); - // Add non auto calculated annotation to AlignFile - for (AlignmentAnnotation annot : getViewport().getAlignment() - .getAlignmentAnnotation()) + // Add non auto calculated annotation to AlignFile + for (AlignmentAnnotation annot : annots) + { + if (annot != null && !annot.autoCalculated) { - if (annot != null && !annot.autoCalculated) + if (!annot.visible) { - if (annot.label.equals("PDB.CATempFactor")) - { - continue; - } - annotations.add(annot); + continue; } + annotations.add(annot); } - - globalColorScheme = ColourSchemeProperty.getColourName(getViewport() - .getGlobalColourScheme()); - setDisplayedFeatures(getViewport().getFeaturesDisplayed()); - showSeqFeatures = getViewport().isShowSequenceFeatures(); } - } + globalColorScheme = ColourSchemeProperty.getColourName(viewport + .getGlobalColourScheme()); + setDisplayedFeatures(viewport.getFeaturesDisplayed()); + showSeqFeatures = viewport.isShowSequenceFeatures(); - - public static String getJSONData(AlignmentViewPanel av) - { - JSONFile jsonFile = new JSONFile(); - jsonFile.configureForView(av); - String jsonString = jsonFile.print(); - return jsonString; } public boolean isShowSeqFeatures()