X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FJSONFile.java;fp=src%2Fjalview%2Fio%2FJSONFile.java;h=fcedb2b6abbfd84b739681c167042f6584fd13a5;hb=a4780f236ded1ae07824254bca59b2aa0ea539ba;hp=e38812c6d9e294206a0fbf2ff34369d5f3edbb16;hpb=922130f4f3b934b6df5fe62e2261099808e80f70;p=jalview.git diff --git a/src/jalview/io/JSONFile.java b/src/jalview/io/JSONFile.java index e38812c..fcedb2b 100644 --- a/src/jalview/io/JSONFile.java +++ b/src/jalview/io/JSONFile.java @@ -1,5 +1,7 @@ package jalview.io; +import jalview.api.AlignViewportI; +import jalview.api.FeatureRenderer; import jalview.api.FeaturesDisplayedI; import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.Annotation; @@ -8,7 +10,6 @@ import jalview.datamodel.SequenceFeature; import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; import jalview.gui.AlignFrame; -import jalview.gui.Desktop; import jalview.json.binding.v1.AlignmentAnnotationPojo; import jalview.json.binding.v1.AlignmentPojo; import jalview.json.binding.v1.AnnotationPojo; @@ -19,8 +20,8 @@ import jalview.json.binding.v1.SequenceGrpPojo; import jalview.json.binding.v1.SequencePojo; import jalview.schemes.ColourSchemeI; import jalview.schemes.ColourSchemeProperty; -import jalview.viewmodel.AlignmentViewport; +import java.awt.Color; import java.io.IOException; import java.util.ArrayList; import java.util.Hashtable; @@ -34,13 +35,13 @@ import org.json.simple.parser.JSONParser; public class JSONFile extends AlignFile { - private static ColourSchemeI colourScheme; + private ColourSchemeI colourScheme; - private static boolean seqFeaturesEnabled; + // private static boolean seqFeaturesEnabled; private String jalviewVersion; - private String webStartLaunchServletUrl = "http://www.jalview.org/services/launchApp"; + private String webStartLaunchServletUrl; public static final String FILE_EXT = "json"; @@ -54,7 +55,9 @@ public class JSONFile extends AlignFile private FeaturesDisplayedI displayedFeatures; - private AlignmentViewport av; + // private AlignViewportI viewport; + + private FeatureRenderer fr; private JSONExportSettings jsonExportSettings; @@ -101,15 +104,15 @@ public class JSONFile extends AlignFile } AlignmentPojo jsonAlignmentPojo = new AlignmentPojo(); - if (Desktop.getCurrentAlignFrame() != null) + if (getViewport() != null) { - globalColorScheme = ColourSchemeProperty.getColourName(Desktop - .getCurrentAlignFrame().getViewport() + globalColorScheme = ColourSchemeProperty + .getColourName(getViewport() .getGlobalColourScheme()); - this.av = Desktop.getCurrentAlignFrame().getCurrentView(); - setDisplayedFeatures(av.getFeaturesDisplayed()); - showSeqFeatures = Desktop.getCurrentAlignFrame().showSeqFeatures - .isSelected(); + setDisplayedFeatures(getViewport().getFeaturesDisplayed()); + showSeqFeatures = getViewport().isShowSequenceFeatures(); + fr = getViewport().getFeatureRenderer(); + // setSeqFeaturesEnabled(viewport.isShowSequenceFeatures()); } int count = 0; @@ -130,6 +133,11 @@ public class JSONFile extends AlignFile if (jsonExportSettings.isExportJalviewSettings()) { + jalviewVersion = jalview.bin.Cache.getProperty("VERSION"); + webStartLaunchServletUrl = jalview.bin.Cache.getDefault( + "www.jalview.org", "http://www.jalview.org") + + "/services/launchApp"; + JalviewSettingsPojo jvSettings = new JalviewSettingsPojo(); jvSettings.setGlobalColorScheme(globalColorScheme); jvSettings.setJalviewVersion(jalviewVersion); @@ -146,8 +154,8 @@ public class JSONFile extends AlignFile if (jsonExportSettings.isExportSequenceFeatures()) { - jsonAlignmentPojo.setSeqFeatures(sequenceFeatureToJsonPojo(seqs, - getDisplayedFeatures())); + jsonAlignmentPojo + .setSeqFeatures(sequenceFeatureToJsonPojo(seqs, fr)); } if (jsonExportSettings.isExportGroups() && seqGroups != null @@ -187,8 +195,10 @@ public class JSONFile extends AlignFile } public static List sequenceFeatureToJsonPojo( - List seqs, FeaturesDisplayedI displayedFeatures) + List seqs, FeatureRenderer fr) { + FeaturesDisplayedI displayedFeatures = (fr == null) ? null : fr + .getFeaturesDisplayed(); List sequenceFeaturesPojo = new ArrayList(); for (SequenceI seq : seqs) { @@ -208,6 +218,10 @@ public class JSONFile extends AlignFile { SequenceFeaturesPojo jsonFeature = new SequenceFeaturesPojo( seq.getName() + "_" + seq.hashCode()); + String featureColour = (fr == null) ? null : jalview.util.Format + .getHexString(fr + .findFeatureColour(Color.white, seq, + seq.findIndex(sf.getBegin()))); jsonFeature.setXstart(seq.findIndex(sf.getBegin()) - 1); jsonFeature.setXend(seq.findIndex(sf.getEnd())); jsonFeature.setType(sf.getType()); @@ -215,6 +229,7 @@ public class JSONFile extends AlignFile jsonFeature.setLinks(sf.links); jsonFeature.setOtherDetails(sf.otherDetails); jsonFeature.setScore(sf.getScore()); + jsonFeature.setFillColor(featureColour); jsonFeature.setFeatureGroup(sf.getFeatureGroup()); sequenceFeaturesPojo.add(jsonFeature); } @@ -283,7 +298,8 @@ public class JSONFile extends AlignFile Boolean showFeatures = Boolean.valueOf(jvSettingsJsonObj.get( "showSeqFeatures").toString()); setColourScheme(getJalviewColorScheme(jsColourScheme)); - JSONFile.setSeqFeaturesEnabled(showFeatures); + // JSONFile.setSeqFeaturesEnabled(showFeatures); + setShowSeqFeatures(showFeatures); } seqMap = new Hashtable(); @@ -435,7 +451,8 @@ public class JSONFile extends AlignFile } } - public ColourSchemeI getJalviewColorScheme(String bioJsColourSchemeName) + public static ColourSchemeI getJalviewColorScheme( + String bioJsColourSchemeName) { ColourSchemeI jalviewColor = null; for (JalviewBioJsColorSchemeMapper cs : JalviewBioJsColorSchemeMapper @@ -452,7 +469,7 @@ public class JSONFile extends AlignFile public void LoadAlignmentFeatures(AlignFrame af) { - af.setShowSeqFeatures(JSONFile.isSeqFeaturesEnabled()); + af.setShowSeqFeatures(isShowSeqFeatures()); af.changeColour(getColourScheme()); af.setMenusForViewport(); } @@ -467,24 +484,14 @@ public class JSONFile extends AlignFile this.globalColorScheme = globalColorScheme; } - public static ColourSchemeI getColourScheme() + public ColourSchemeI getColourScheme() { return colourScheme; } - public static void setColourScheme(ColourSchemeI colourScheme) - { - JSONFile.colourScheme = colourScheme; - } - - public static boolean isSeqFeaturesEnabled() - { - return seqFeaturesEnabled; - } - - public static void setSeqFeaturesEnabled(boolean seqFeaturesEnabled) + public void setColourScheme(ColourSchemeI colourScheme) { - JSONFile.seqFeaturesEnabled = seqFeaturesEnabled; + this.colourScheme = colourScheme; } public FeaturesDisplayedI getDisplayedFeatures() @@ -507,6 +514,45 @@ public class JSONFile extends AlignFile this.jsonExportSettings = jsonExportSettings; } + public static String getJSONData(AlignViewportI av) + { + JSONFile jsonFile = new JSONFile(); + jsonFile.setViewport(av); + jsonFile.seqGroups = av.getAlignment().getGroups(); + jsonFile.setDisplayedFeatures(av.getFeaturesDisplayed()); + + for (SequenceI seq : av.getAlignment().getSequences()) + { + jsonFile.seqs.add(seq); + } + + // Add non auto calculated annotation to AlignFile + for (AlignmentAnnotation annot : av.getAlignment() + .getAlignmentAnnotation()) + { + if (annot != null && !annot.autoCalculated) + { + if (annot.label.equals("PDB.CATempFactor")) + { + continue; + } + jsonFile.annotations.add(annot); + } + } + String jsonString = jsonFile.print(); + return jsonString; + } + + public boolean isShowSeqFeatures() + { + return showSeqFeatures; + } + + public void setShowSeqFeatures(boolean showSeqFeatures) + { + this.showSeqFeatures = showSeqFeatures; + } + public class JSONExportSettings { private boolean exportSequence;