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;
import jalview.schemes.ColourSchemeI;
import jalview.schemes.ColourSchemeProperty;
-public class JSONFile extends AlignFile
+public class JSONFile extends AlignFile implements ComplexAlignFile
{
private ColourSchemeI colourScheme;
private List<int[]> hiddenColumns;
+ private ColumnSelection columnSelection;
+
private List<String> hiddenSeqRefs;
+ private ArrayList<SequenceI> hiddenSequences;
+
public JSONFile()
{
super();
return null;
}
- System.out.println("--- Hidden Sections ---");
// hidden column business
if (getViewport().hasHiddenColumns())
{
- System.out.print("Hidden Cols : ");
List<int[]> hiddenCols = getViewport().getColumnSelection()
.getHiddenColumns();
StringBuilder hiddenColsBuilder = new StringBuilder();
hiddenColsBuilder.deleteCharAt(0);
hiddenSections[0] = hiddenColsBuilder.toString();
- System.out.println(hiddenSections[0]);
}
// hidden rows/seqs business
parseHiddenCols(jvSettingsJsonObj);
}
+ hiddenSequences = new ArrayList<SequenceI>();
seqMap = new Hashtable<String, Sequence>();
for (Iterator<JSONObject> sequenceIter = seqJsonArray.iterator(); sequenceIter
.hasNext();)
end);
if (hiddenSeqRefs != null && hiddenSeqRefs.contains(seqUniqueId))
{
- seq.setHidden(true);
+ hiddenSequences.add(seq);
}
seqs.add(seq);
seqMap.put(seqUniqueId, seq);
public void parseHiddenCols(JSONObject jvSettingsJson)
{
- hiddenColumns = new ArrayList<int[]>();
+ // hiddenColumns = new ArrayList<int[]>();
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]));
}
}
}
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()
this.jsonExportSettings = jsonExportSettings;
}
+
public static String getJSONData(AlignViewportI av)
{
JSONFile jsonFile = new JSONFile();
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<SequenceI> hiddenSequences)
+ {
+ this.hiddenSequences = hiddenSequences;
+ }
+
public class JSONExportSettings
{
private boolean exportSequence;