X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FJSONFile.java;fp=src%2Fjalview%2Fio%2FJSONFile.java;h=dca59a3dd4d4a16ca246073aa68113c5006dbffd;hb=4660fcf0745dbc1f6f6e7241b398301f93edb548;hp=5e2139e5d3734722ae905925d27ca759a3618871;hpb=fd9ed8df6a98c86228100aa4e9d6698c87a61c08;p=jalview.git diff --git a/src/jalview/io/JSONFile.java b/src/jalview/io/JSONFile.java index 5e2139e..dca59a3 100644 --- a/src/jalview/io/JSONFile.java +++ b/src/jalview/io/JSONFile.java @@ -21,6 +21,18 @@ package jalview.io; +import java.awt.Color; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Hashtable; +import java.util.Iterator; +import java.util.List; +import java.util.Vector; + +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; +import org.json.simple.parser.JSONParser; + import jalview.api.AlignViewControllerGuiI; import jalview.api.AlignViewportI; import jalview.api.FeatureRenderer; @@ -42,18 +54,6 @@ import jalview.json.binding.v1.SequencePojo; import jalview.schemes.ColourSchemeI; import jalview.schemes.ColourSchemeProperty; -import java.awt.Color; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Hashtable; -import java.util.Iterator; -import java.util.List; -import java.util.Vector; - -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; -import org.json.simple.parser.JSONParser; - public class JSONFile extends AlignFile { private ColourSchemeI colourScheme; @@ -80,6 +80,10 @@ public class JSONFile extends AlignFile private JSONExportSettings jsonExportSettings; + private List hiddenColumns; + + private List hiddenSeqRefs; + public JSONFile() { super(); @@ -141,7 +145,7 @@ public class JSONFile extends AlignFile name.append(seq.getName()).append("/").append(seq.getStart()) .append("-").append(seq.getEnd()); SequencePojo jsonSeqPojo = new SequencePojo(); - jsonSeqPojo.setId(seq.getName() + "_" + seq.hashCode()); + jsonSeqPojo.setId(String.valueOf(seq.hashCode())); jsonSeqPojo.setOrder(++count); jsonSeqPojo.setEnd(seq.getEnd()); jsonSeqPojo.setStart(seq.getStart()); @@ -199,8 +203,7 @@ public class JSONFile extends AlignFile seqGrpPojo.setShowNonconserved(seqGrp.getShowNonconserved()); for (SequenceI seq : seqGrp.getSequences()) { - seqGrpPojo.getSeqsHash().add( - seq.getName() + "_" + seq.hashCode()); + seqGrpPojo.getSeqsHash().add(String.valueOf(seq.hashCode())); } jsonAlignmentPojo.getSeqGroups().add(seqGrpPojo); } @@ -294,7 +297,7 @@ public class JSONFile extends AlignFile && displayedFeatures.isVisible(sf.getType())) { SequenceFeaturesPojo jsonFeature = new SequenceFeaturesPojo( - seq.getName() + "_" + seq.hashCode()); + String.valueOf(seq.hashCode())); String featureColour = (fr == null) ? null : jalview.util.Format .getHexString(fr .findFeatureColour(Color.white, seq, @@ -376,6 +379,8 @@ public class JSONFile extends AlignFile "showSeqFeatures").toString()); setColourScheme(getJalviewColorScheme(jsColourScheme)); setShowSeqFeatures(showFeatures); + parseHiddenSeqRefsAsList(jvSettingsJsonObj); + parseHiddenCols(jvSettingsJsonObj); } seqMap = new Hashtable(); @@ -390,6 +395,10 @@ public class JSONFile extends AlignFile int end = Integer.valueOf(sequence.get("end").toString()); Sequence seq = new Sequence(sequenceName, sequcenceString, start, end); + if (hiddenSeqRefs.contains(seqUniqueId)) + { + seq.setHidden(true); + } seqs.add(seq); seqMap.put(seqUniqueId, seq); } @@ -483,6 +492,31 @@ public class JSONFile extends AlignFile return this; } + public void parseHiddenSeqRefsAsList(JSONObject jvSettingsJson) + { + hiddenSeqRefs = new ArrayList(); + String hiddenSeqs = (String) jvSettingsJson.get("hiddenSeqs"); + if(hiddenSeqs != null && !hiddenSeqs.isEmpty()){ + String[] seqRefs = hiddenSeqs.split(";"); + for(String seqRef : seqRefs){ + hiddenSeqRefs.add(seqRef); + } + } + } + + public void parseHiddenCols(JSONObject jvSettingsJson) + { + hiddenColumns = new ArrayList(); + String hiddenCols = (String) jvSettingsJson.get("hiddenCols"); + if(hiddenCols != null && !hiddenCols.isEmpty()){ + String[] rangeStrings = hiddenCols.split(";"); + for(String rangeString : rangeStrings){ + String[] range = rangeString.split("-"); + hiddenColumns.add(new int[] + { Integer.valueOf(range[0]), Integer.valueOf(range[1]) }); + } + } + } @SuppressWarnings("unchecked") private void parseFeatures(JSONArray jsonSeqFeatures) @@ -543,11 +577,13 @@ public class JSONFile extends AlignFile return jalviewColor; } - public void applySettingsToAlignFrame(AlignViewControllerGuiI af) + public void applySettingsToAlignmentView(AlignViewControllerGuiI avc) { - af.setShowSeqFeatures(isShowSeqFeatures()); - af.changeColour(getColourScheme()); - af.setMenusForViewport(); + avc.setShowSeqFeatures(isShowSeqFeatures()); + avc.changeColour(getColourScheme()); + avc.setMenusForViewport(); + avc.hideColumns(hiddenColumns); + avc.syncHiddenSequences(); } public String getGlobalColorScheme() @@ -634,6 +670,11 @@ public class JSONFile extends AlignFile return annotations; } + public List getHiddenColumns() + { + return hiddenColumns; + } + public class JSONExportSettings { private boolean exportSequence;