X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FJSONFile.java;h=5e2139e5d3734722ae905925d27ca759a3618871;hb=245733144fbe63d71454b0a00ebc21e84458bab2;hp=30383f3f1a5dc8500da5c797874a4b881a5737ed;hpb=4d046b841f14a5d743fb2de8d99ccee86ad4ef9d;p=jalview.git diff --git a/src/jalview/io/JSONFile.java b/src/jalview/io/JSONFile.java index 30383f3..5e2139e 100644 --- a/src/jalview/io/JSONFile.java +++ b/src/jalview/io/JSONFile.java @@ -27,15 +27,15 @@ import jalview.api.FeatureRenderer; import jalview.api.FeaturesDisplayedI; import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.Annotation; +import jalview.datamodel.HiddenSequences; import jalview.datamodel.Sequence; import jalview.datamodel.SequenceFeature; import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; import jalview.json.binding.v1.AlignmentAnnotationPojo; import jalview.json.binding.v1.AlignmentPojo; +import jalview.json.binding.v1.AlignmentPojo.JalviewBioJsColorSchemeMapper; import jalview.json.binding.v1.AnnotationPojo; -import jalview.json.binding.v1.JalviewSettingsPojo; -import jalview.json.binding.v1.JalviewSettingsPojo.JalviewBioJsColorSchemeMapper; import jalview.json.binding.v1.SequenceFeaturesPojo; import jalview.json.binding.v1.SequenceGrpPojo; import jalview.json.binding.v1.SequencePojo; @@ -58,9 +58,11 @@ public class JSONFile extends AlignFile { private ColourSchemeI colourScheme; - private String jalviewVersion; + private String version = "2.9"; - private String webStartLaunchServletUrl; + private String webstartUrl = "www.jalview.org/services/launchApp"; + + private String application = "Jalview"; public static final String FILE_EXT = "json"; @@ -150,15 +152,21 @@ public class JSONFile extends AlignFile if (jsonExportSettings.isExportJalviewSettings()) { - jalviewVersion = ""; - webStartLaunchServletUrl = "www.jalview.org/services/launchApp"; - - JalviewSettingsPojo jvSettings = new JalviewSettingsPojo(); - jvSettings.setGlobalColorScheme(globalColorScheme); - jvSettings.setJalviewVersion(jalviewVersion); - jvSettings.setWebStartUrl(webStartLaunchServletUrl); - jvSettings.setShowSeqFeatures(showSeqFeatures); - jsonAlignmentPojo.setJalviewSettings(jvSettings); + jsonAlignmentPojo.setGlobalColorScheme(globalColorScheme); + jsonAlignmentPojo.getAppSettings().put("application", application); + jsonAlignmentPojo.getAppSettings().put("version", version); + jsonAlignmentPojo.getAppSettings().put("webStartUrl", webstartUrl); + jsonAlignmentPojo.getAppSettings().put("showSeqFeatures", + String.valueOf(showSeqFeatures)); + + String[] hiddenSections = exportHiddenSections(); + if (hiddenSections != null) + { + jsonAlignmentPojo.getAppSettings().put("hiddenCols", + String.valueOf(hiddenSections[0])); + jsonAlignmentPojo.getAppSettings().put("hiddenSeqs", + String.valueOf(hiddenSections[1])); + } } if (jsonExportSettings.isExportAnnotations()) @@ -209,6 +217,60 @@ public class JSONFile extends AlignFile return jsonOutput; } + public String[] exportHiddenSections() + { + String[] hiddenSections = new String[2]; + if (getViewport() == null) + { + return null; + } + + System.out.println("--- Hidden Sections ---"); + // hidden column business + if (getViewport().hasHiddenColumns()) + { + System.out.print("Hidden Cols : "); + List hiddenCols = getViewport().getColumnSelection() + .getHiddenColumns(); + StringBuilder hiddenColsBuilder = new StringBuilder(); + for (int[] range : hiddenCols) + { + hiddenColsBuilder.append(";").append(range[0]).append("-") + .append(range[1]); + } + + hiddenColsBuilder.deleteCharAt(0); + hiddenSections[0] = hiddenColsBuilder.toString(); + System.out.println(hiddenSections[0]); + } + + // hidden rows/seqs business + HiddenSequences hiddenSeqsObj = getViewport().getAlignment() + .getHiddenSequences(); + if (hiddenSeqsObj == null) + { + return hiddenSections; + } + + SequenceI[] hiddenSeqs = hiddenSeqsObj.hiddenSequences; + System.out.print("Hidden Seqs : "); + StringBuilder hiddenSeqsBuilder = new StringBuilder(); + for (SequenceI hiddenSeq : hiddenSeqs) + { + if (hiddenSeq != null) + { + hiddenSeqsBuilder.append(";").append(hiddenSeq.hashCode()); + } + } + if (hiddenSeqsBuilder.length() > 0) + { + hiddenSeqsBuilder.deleteCharAt(0); + } + hiddenSections[1] = hiddenSeqsBuilder.toString(); + System.out.println(hiddenSections[1]); + return hiddenSections; + } + public static List sequenceFeatureToJsonPojo( List seqs, FeatureRenderer fr) { @@ -304,7 +366,7 @@ public class JSONFile extends AlignFile JSONArray seqGrpJsonArray = (JSONArray) alignmentJsonObj .get("seqGroups"); JSONObject jvSettingsJsonObj = (JSONObject) alignmentJsonObj - .get("jalviewSettings"); + .get("appSettings"); if (jvSettingsJsonObj != null) {