package jalview.io;
+import jalview.api.AlignViewportI;
+import jalview.api.FeatureRenderer;
import jalview.api.FeaturesDisplayedI;
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.Annotation;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
import jalview.gui.AlignFrame;
-import jalview.gui.Desktop;
import jalview.json.binding.v1.AlignmentAnnotationPojo;
import jalview.json.binding.v1.AlignmentPojo;
import jalview.json.binding.v1.AnnotationPojo;
import jalview.json.binding.v1.SequencePojo;
import jalview.schemes.ColourSchemeI;
import jalview.schemes.ColourSchemeProperty;
-import jalview.viewmodel.AlignmentViewport;
+import java.awt.Color;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Hashtable;
public class JSONFile extends AlignFile
{
- private static ColourSchemeI colourScheme;
+ private ColourSchemeI colourScheme;
- private static boolean seqFeaturesEnabled;
+ // private static boolean seqFeaturesEnabled;
private String jalviewVersion;
- private String webStartLaunchServletUrl = "http://www.jalview.org/services/launchApp";
+ private String webStartLaunchServletUrl;
public static final String FILE_EXT = "json";
private FeaturesDisplayedI displayedFeatures;
- private AlignmentViewport av;
+ // private AlignViewportI viewport;
+
+ private FeatureRenderer fr;
private JSONExportSettings jsonExportSettings;
}
AlignmentPojo jsonAlignmentPojo = new AlignmentPojo();
- if (Desktop.getCurrentAlignFrame() != null)
+ if (getViewport() != null)
{
- globalColorScheme = ColourSchemeProperty.getColourName(Desktop
- .getCurrentAlignFrame().getViewport()
+ globalColorScheme = ColourSchemeProperty
+ .getColourName(getViewport()
.getGlobalColourScheme());
- this.av = Desktop.getCurrentAlignFrame().getCurrentView();
- setDisplayedFeatures(av.getFeaturesDisplayed());
- showSeqFeatures = Desktop.getCurrentAlignFrame().showSeqFeatures
- .isSelected();
+ setDisplayedFeatures(getViewport().getFeaturesDisplayed());
+ showSeqFeatures = getViewport().isShowSequenceFeatures();
+ fr = getViewport().getFeatureRenderer();
+ // setSeqFeaturesEnabled(viewport.isShowSequenceFeatures());
}
int count = 0;
if (jsonExportSettings.isExportJalviewSettings())
{
+ jalviewVersion = jalview.bin.Cache.getProperty("VERSION");
+ webStartLaunchServletUrl = jalview.bin.Cache.getDefault(
+ "www.jalview.org", "http://www.jalview.org")
+ + "/services/launchApp";
+
JalviewSettingsPojo jvSettings = new JalviewSettingsPojo();
jvSettings.setGlobalColorScheme(globalColorScheme);
jvSettings.setJalviewVersion(jalviewVersion);
if (jsonExportSettings.isExportSequenceFeatures())
{
- jsonAlignmentPojo.setSeqFeatures(sequenceFeatureToJsonPojo(seqs,
- getDisplayedFeatures()));
+ jsonAlignmentPojo
+ .setSeqFeatures(sequenceFeatureToJsonPojo(seqs, fr));
}
if (jsonExportSettings.isExportGroups() && seqGroups != null
}
public static List<SequenceFeaturesPojo> sequenceFeatureToJsonPojo(
- List<SequenceI> seqs, FeaturesDisplayedI displayedFeatures)
+ List<SequenceI> seqs, FeatureRenderer fr)
{
+ FeaturesDisplayedI displayedFeatures = (fr == null) ? null : fr
+ .getFeaturesDisplayed();
List<SequenceFeaturesPojo> sequenceFeaturesPojo = new ArrayList<SequenceFeaturesPojo>();
for (SequenceI seq : seqs)
{
{
SequenceFeaturesPojo jsonFeature = new SequenceFeaturesPojo(
seq.getName() + "_" + seq.hashCode());
+ String featureColour = (fr == null) ? null : jalview.util.Format
+ .getHexString(fr
+ .findFeatureColour(Color.white, seq,
+ seq.findIndex(sf.getBegin())));
jsonFeature.setXstart(seq.findIndex(sf.getBegin()) - 1);
jsonFeature.setXend(seq.findIndex(sf.getEnd()));
jsonFeature.setType(sf.getType());
jsonFeature.setLinks(sf.links);
jsonFeature.setOtherDetails(sf.otherDetails);
jsonFeature.setScore(sf.getScore());
+ jsonFeature.setFillColor(featureColour);
jsonFeature.setFeatureGroup(sf.getFeatureGroup());
sequenceFeaturesPojo.add(jsonFeature);
}
Boolean showFeatures = Boolean.valueOf(jvSettingsJsonObj.get(
"showSeqFeatures").toString());
setColourScheme(getJalviewColorScheme(jsColourScheme));
- JSONFile.setSeqFeaturesEnabled(showFeatures);
+ // JSONFile.setSeqFeaturesEnabled(showFeatures);
+ setShowSeqFeatures(showFeatures);
}
seqMap = new Hashtable<String, Sequence>();
}
}
- public ColourSchemeI getJalviewColorScheme(String bioJsColourSchemeName)
+ public static ColourSchemeI getJalviewColorScheme(
+ String bioJsColourSchemeName)
{
ColourSchemeI jalviewColor = null;
for (JalviewBioJsColorSchemeMapper cs : JalviewBioJsColorSchemeMapper
public void LoadAlignmentFeatures(AlignFrame af)
{
- af.setShowSeqFeatures(JSONFile.isSeqFeaturesEnabled());
+ af.setShowSeqFeatures(isShowSeqFeatures());
af.changeColour(getColourScheme());
af.setMenusForViewport();
}
this.globalColorScheme = globalColorScheme;
}
- public static ColourSchemeI getColourScheme()
+ public ColourSchemeI getColourScheme()
{
return colourScheme;
}
- public static void setColourScheme(ColourSchemeI colourScheme)
- {
- JSONFile.colourScheme = colourScheme;
- }
-
- public static boolean isSeqFeaturesEnabled()
- {
- return seqFeaturesEnabled;
- }
-
- public static void setSeqFeaturesEnabled(boolean seqFeaturesEnabled)
+ public void setColourScheme(ColourSchemeI colourScheme)
{
- JSONFile.seqFeaturesEnabled = seqFeaturesEnabled;
+ this.colourScheme = colourScheme;
}
public FeaturesDisplayedI getDisplayedFeatures()
this.jsonExportSettings = jsonExportSettings;
}
+ public static String getJSONData(AlignViewportI av)
+ {
+ JSONFile jsonFile = new JSONFile();
+ jsonFile.setViewport(av);
+ jsonFile.seqGroups = av.getAlignment().getGroups();
+ jsonFile.setDisplayedFeatures(av.getFeaturesDisplayed());
+
+ for (SequenceI seq : av.getAlignment().getSequences())
+ {
+ jsonFile.seqs.add(seq);
+ }
+
+ // Add non auto calculated annotation to AlignFile
+ for (AlignmentAnnotation annot : av.getAlignment()
+ .getAlignmentAnnotation())
+ {
+ if (annot != null && !annot.autoCalculated)
+ {
+ if (annot.label.equals("PDB.CATempFactor"))
+ {
+ continue;
+ }
+ jsonFile.annotations.add(annot);
+ }
+ }
+ String jsonString = jsonFile.print();
+ return jsonString;
+ }
+
+ public boolean isShowSeqFeatures()
+ {
+ return showSeqFeatures;
+ }
+
+ public void setShowSeqFeatures(boolean showSeqFeatures)
+ {
+ this.showSeqFeatures = showSeqFeatures;
+ }
+
public class JSONExportSettings
{
private boolean exportSequence;