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;
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;
private JSONExportSettings jsonExportSettings;
+ private List<int[]> hiddenColumns;
+
+ private List<String> hiddenSeqRefs;
+
public JSONFile()
{
super();
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());
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);
}
&& 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,
"showSeqFeatures").toString());
setColourScheme(getJalviewColorScheme(jsColourScheme));
setShowSeqFeatures(showFeatures);
+ parseHiddenSeqRefsAsList(jvSettingsJsonObj);
+ parseHiddenCols(jvSettingsJsonObj);
}
seqMap = new Hashtable<String, Sequence>();
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);
}
return this;
}
+ public void parseHiddenSeqRefsAsList(JSONObject jvSettingsJson)
+ {
+ hiddenSeqRefs = new ArrayList<String>();
+ 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<int[]>();
+ 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)
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()
return annotations;
}
+ public List<int[]> getHiddenColumns()
+ {
+ return hiddenColumns;
+ }
+
public class JSONExportSettings
{
private boolean exportSequence;