X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FJSONFile.java;h=39d713d5cd75032dab7dc346a079bcb9430d19ff;hb=70f9c4700f20a8fa57ed7eb974277d8bad0723c2;hp=621604c79823ab5a6b394cb793c4067b32d09a76;hpb=2564f09af31f666b30fc23889deeff9cd49c68c4;p=jalview.git diff --git a/src/jalview/io/JSONFile.java b/src/jalview/io/JSONFile.java index 621604c..39d713d 100644 --- a/src/jalview/io/JSONFile.java +++ b/src/jalview/io/JSONFile.java @@ -33,17 +33,20 @@ 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.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; import jalview.datamodel.Sequence; import jalview.datamodel.SequenceFeature; import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; +import jalview.gui.AlignViewport; import jalview.json.binding.v1.AlignmentAnnotationPojo; import jalview.json.binding.v1.AlignmentPojo; import jalview.json.binding.v1.AlignmentPojo.JalviewBioJsColorSchemeMapper; @@ -54,7 +57,7 @@ import jalview.json.binding.v1.SequencePojo; import jalview.schemes.ColourSchemeI; import jalview.schemes.ColourSchemeProperty; -public class JSONFile extends AlignFile +public class JSONFile extends AlignFile implements ComplexAlignFile { private ColourSchemeI colourScheme; @@ -82,8 +85,12 @@ public class JSONFile extends AlignFile private List hiddenColumns; + private ColumnSelection columnSelection; + private List hiddenSeqRefs; + private ArrayList hiddenSequences; + public JSONFile() { super(); @@ -234,11 +241,9 @@ public class JSONFile extends AlignFile 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(); @@ -250,7 +255,6 @@ public class JSONFile extends AlignFile hiddenColsBuilder.deleteCharAt(0); hiddenSections[0] = hiddenColsBuilder.toString(); - System.out.println(hiddenSections[0]); } // hidden rows/seqs business @@ -390,6 +394,7 @@ public class JSONFile extends AlignFile parseHiddenCols(jvSettingsJsonObj); } + hiddenSequences = new ArrayList(); seqMap = new Hashtable(); for (Iterator sequenceIter = seqJsonArray.iterator(); sequenceIter .hasNext();) @@ -404,7 +409,7 @@ public class JSONFile extends AlignFile end); if (hiddenSeqRefs != null && hiddenSeqRefs.contains(seqUniqueId)) { - seq.setHidden(true); + hiddenSequences.add(seq); } seqs.add(seq); seqMap.put(seqUniqueId, seq); @@ -513,14 +518,17 @@ public class JSONFile extends AlignFile public void parseHiddenCols(JSONObject jvSettingsJson) { - hiddenColumns = new ArrayList(); + // hiddenColumns = new ArrayList(); String hiddenCols = (String) jvSettingsJson.get("hiddenCols"); if(hiddenCols != null && !hiddenCols.isEmpty()){ + columnSelection = new ColumnSelection(); String[] rangeStrings = hiddenCols.split(";"); for(String rangeString : rangeStrings){ String[] range = rangeString.split("-"); - hiddenColumns.add(new int[] - { Integer.valueOf(range[0]), Integer.valueOf(range[1]) }); + // hiddenColumns.add(new int[] + // { Integer.valueOf(range[0]), Integer.valueOf(range[1]) }); + columnSelection.hideColumns(Integer.valueOf(range[0]), + Integer.valueOf(range[1])); } } } @@ -584,13 +592,12 @@ public class JSONFile extends AlignFile return jalviewColor; } - public void applySettingsToAlignmentView(AlignViewControllerGuiI avc) + public AlignViewportI getViewport(AlignmentI al) { - avc.setShowSeqFeatures(isShowSeqFeatures()); - avc.changeColour(getColourScheme()); - avc.setMenusForViewport(); - avc.hideColumns(hiddenColumns); - avc.syncHiddenSequences(); + AlignViewportI viewport = new AlignViewport(al, getColumnSelection()); + viewport.setGlobalColourScheme(getColourScheme()); + viewport.setShowSequenceFeatures(isShowSeqFeatures()); + return viewport; } public String getGlobalColorScheme() @@ -633,6 +640,7 @@ public class JSONFile extends AlignFile this.jsonExportSettings = jsonExportSettings; } + public static String getJSONData(AlignViewportI av) { JSONFile jsonFile = new JSONFile(); @@ -682,6 +690,34 @@ public class JSONFile extends AlignFile return hiddenColumns; } + public ColumnSelection getColumnSelection() + { + return columnSelection; + } + + public void setColumnSelection(ColumnSelection columnSelection) + { + this.columnSelection = columnSelection; + } + + public SequenceI[] getHiddenSequences() + { + if (hiddenSequences == null || hiddenSequences.isEmpty()) + { + return new SequenceI[] + {}; + } + synchronized (hiddenSequences) + { + return hiddenSequences.toArray(new SequenceI[hiddenSequences.size()]); + } + } + + public void setHiddenSequences(ArrayList hiddenSequences) + { + this.hiddenSequences = hiddenSequences; + } + public class JSONExportSettings { private boolean exportSequence;