/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6)
- * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
+ * Copyright (C) 2011 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
*
* This file is part of Jalview.
*
import jalview.schemabinding.version2.*;
import jalview.schemes.*;
import jalview.structure.StructureSelectionManager;
+import jalview.util.Platform;
import jalview.util.jarInputStreamProvider;
/**
for (int smap = 0; smap < jmol.jmb.sequence[peid].length; smap++)
{
- if (jal.findIndex(jmol.jmb.sequence[peid][smap]) > -1)
+// if (jal.findIndex(jmol.jmb.sequence[peid][smap]) > -1)
+ if (jds==jmol.jmb.sequence[peid][smap])
{
StructureState state = new StructureState();
state.setVisible(true);
an.setCentreColLabels(aa[i].centreColLabels);
an.setScaleColLabels(aa[i].scaleColLabel);
an.setShowAllColLabels(aa[i].showAllColLabels);
-
+
if (aa[i].graph > 0)
{
an.setGraph(true);
an.addAnnotationElement(ae);
if (aa[i].autoCalculated)
{
- // only write one non-null entry into the annotation row - sufficient to get the visualization attributes necessary to display data
+ // only write one non-null entry into the annotation row -
+ // sufficient to get the visualization attributes necessary to
+ // display data
continue;
}
}
Vector settingsAdded = new Vector();
Object gstyle = null;
GraduatedColor gcol = null;
- for (int ro = 0; ro < renderOrder.length; ro++)
+ if (renderOrder != null)
{
- gstyle = ap.seqPanel.seqCanvas.getFeatureRenderer()
- .getFeatureStyle(renderOrder[ro]);
- Setting setting = new Setting();
- setting.setType(renderOrder[ro]);
- if (gstyle instanceof GraduatedColor)
- {
- gcol = (GraduatedColor) gstyle;
- setting.setColour(gcol.getMaxColor().getRGB());
- setting.setMincolour(gcol.getMinColor().getRGB());
- setting.setMin(gcol.getMin());
- setting.setMax(gcol.getMax());
- setting.setColourByLabel(gcol.isColourByLabel());
- setting.setAutoScale(gcol.isAutoScale());
- setting.setThreshold(gcol.getThresh());
- setting.setThreshstate(gcol.getThreshType());
- }
- else
+ for (int ro = 0; ro < renderOrder.length; ro++)
{
- setting.setColour(ap.seqPanel.seqCanvas.getFeatureRenderer()
- .getColour(renderOrder[ro]).getRGB());
- }
+ gstyle = ap.seqPanel.seqCanvas.getFeatureRenderer()
+ .getFeatureStyle(renderOrder[ro]);
+ Setting setting = new Setting();
+ setting.setType(renderOrder[ro]);
+ if (gstyle instanceof GraduatedColor)
+ {
+ gcol = (GraduatedColor) gstyle;
+ setting.setColour(gcol.getMaxColor().getRGB());
+ setting.setMincolour(gcol.getMinColor().getRGB());
+ setting.setMin(gcol.getMin());
+ setting.setMax(gcol.getMax());
+ setting.setColourByLabel(gcol.isColourByLabel());
+ setting.setAutoScale(gcol.isAutoScale());
+ setting.setThreshold(gcol.getThresh());
+ setting.setThreshstate(gcol.getThreshType());
+ }
+ else
+ {
+ setting.setColour(ap.seqPanel.seqCanvas.getFeatureRenderer()
+ .getColour(renderOrder[ro]).getRGB());
+ }
- setting.setDisplay(av.featuresDisplayed
- .containsKey(renderOrder[ro]));
- float rorder = ap.seqPanel.seqCanvas.getFeatureRenderer().getOrder(
- renderOrder[ro]);
- if (rorder > -1)
- {
- setting.setOrder(rorder);
+ setting.setDisplay(av.featuresDisplayed
+ .containsKey(renderOrder[ro]));
+ float rorder = ap.seqPanel.seqCanvas.getFeatureRenderer()
+ .getOrder(renderOrder[ro]);
+ if (rorder > -1)
+ {
+ setting.setOrder(rorder);
+ }
+ fs.addSetting(setting);
+ settingsAdded.addElement(renderOrder[ro]);
}
- fs.addSetting(setting);
- settingsAdded.addElement(renderOrder[ro]);
}
// Make sure we save none displayed feature settings
}
;
out.close();
-
- alreadyLoadedPDB.put(pdbId, outFile.getAbsolutePath());
- return outFile.getAbsolutePath();
+ String t=outFile.getAbsolutePath();
+ alreadyLoadedPDB.put(pdbId, t);
+ return t;
}
else
{
/**
* store any annotations which forward reference a group's ID
*/
- Hashtable<String,ArrayList<jalview.datamodel.AlignmentAnnotation>> groupAnnotRefs = new Hashtable<String,ArrayList<jalview.datamodel.AlignmentAnnotation>>();
+ Hashtable<String, ArrayList<jalview.datamodel.AlignmentAnnotation>> groupAnnotRefs = new Hashtable<String, ArrayList<jalview.datamodel.AlignmentAnnotation>>();
if (vamsasSet.getAnnotationCount() > 0)
{
an[i].setAutoCalculated(true);
}
}
- if (autoForView || (an[i].hasAutoCalculated() && an[i].isAutoCalculated())) {
+ if (autoForView
+ || (an[i].hasAutoCalculated() && an[i].isAutoCalculated()))
+ {
// remove ID - we don't recover annotation from other views for
// view-specific annotation
an[i].setId(null);
if (an[i].getGraph())
{
- float llim=0,hlim=0;
- // if (autoForView || an[i].isAutoCalculated()) {
- // hlim=11f;
- // }
+ float llim = 0, hlim = 0;
+ // if (autoForView || an[i].isAutoCalculated()) {
+ // hlim=11f;
+ // }
jaa = new jalview.datamodel.AlignmentAnnotation(an[i].getLabel(),
- an[i].getDescription(), anot, llim, hlim, an[i].getGraphType());
+ an[i].getDescription(), anot, llim, hlim,
+ an[i].getGraphType());
jaa.graphGroup = an[i].getGraphGroup();
an[i].getThresholdLine().getColour())));
}
- if (autoForView || an[i].isAutoCalculated()) {
- // Hardwire the symbol display line to ensure that labels for histograms are displayed
- jaa.hasText=true;
+ if (autoForView || an[i].isAutoCalculated())
+ {
+ // Hardwire the symbol display line to ensure that labels for
+ // histograms are displayed
+ jaa.hasText = true;
}
}
else
// and make a note of any group association
if (an[i].getGroupRef() != null && an[i].getGroupRef().length() > 0)
{
- ArrayList<jalview.datamodel.AlignmentAnnotation> aal=groupAnnotRefs.get(an[i].getGroupRef());
- if (aal==null) {
+ ArrayList<jalview.datamodel.AlignmentAnnotation> aal = groupAnnotRefs
+ .get(an[i].getGroupRef());
+ if (aal == null)
+ {
aal = new ArrayList<jalview.datamodel.AlignmentAnnotation>();
- groupAnnotRefs.put(an[i].getGroupRef(),aal);
+ groupAnnotRefs.put(an[i].getGroupRef(), aal);
}
aal.add(jaa);
}
if (jaa.autoCalculated)
{
autoAlan.add(new JvAnnotRow(i, jaa));
- } else
+ }
+ else
// if (!autoForView)
{
- // add autocalculated group annotation and any user created annotation for the view
+ // add autocalculated group annotation and any user created annotation
+ // for the view
al.addAnnotation(jaa);
}
}
.get(groups[i].getId());
if (jaal != null)
{
- for (jalview.datamodel.AlignmentAnnotation jaa:jaal) {
+ for (jalview.datamodel.AlignmentAnnotation jaa : jaal)
+ {
jaa.groupRef = sg;
if (jaa.autoCalculated)
{
- // match up and try to set group autocalc alignment row for this annotation
- if (jaa.label.startsWith("Consensus for ")) {
+ // match up and try to set group autocalc alignment row for this
+ // annotation
+ if (jaa.label.startsWith("Consensus for "))
+ {
sg.setConsensus(jaa);
}
- // match up and try to set group autocalc alignment row for this annotation
- if (jaa.label.startsWith("Conservation for ")) {
+ // match up and try to set group autocalc alignment row for this
+ // annotation
+ if (jaa.label.startsWith("Conservation for "))
+ {
sg.setConservationRow(jaa);
- }
}
+ }
}
}
}
{ x, y, width, height }, "",
new Hashtable<String, Object[]>(), new boolean[]
{ false, false, true } });
- // Legacy pre-2.7 conversion JAL-823 :
- // do not assume any view has to be linked for colour by sequence
+ // Legacy pre-2.7 conversion JAL-823 :
+ // do not assume any view has to be linked for colour by
+ // sequence
}
-
+
// assemble String[] { pdb files }, String[] { id for each
// file }, orig_fileloc, SequenceI[][] {{ seqs_file 1 }, {
// seqs_file 2}, boolean[] {
.getStructureState(s).getColourwithAlignPanel()
: false;
// default for pre-2.7 projects is that Jmol colouring is enabled
- ((boolean[])jmoldat[3])[2] &=ids[p].getStructureState(s).hasColourByJmol() ? ids[p].getStructureState(s).getColourByJmol() : true;
+ ((boolean[]) jmoldat[3])[2] &= ids[p].getStructureState(s)
+ .hasColourByJmol() ? ids[p].getStructureState(s)
+ .getColourByJmol() : true;
if (((String) jmoldat[1]).length() < ids[p]
.getStructureState(s).getContent().length())
}
if (ids[p].getFile() != null)
{
+ File mapkey=new File(ids[p].getFile());
Object[] seqstrmaps = (Object[]) ((Hashtable) jmoldat[2])
- .get(ids[p].getFile());
+ .get(mapkey);
if (seqstrmaps == null)
{
((Hashtable) jmoldat[2]).put(
- new File(ids[p].getFile()).toString(),
+ mapkey,
seqstrmaps = new Object[]
{ pdbFile, ids[p].getId(), new Vector(),
new Vector() });
}
else
{
- errorMessage=("The Jmol views in the Jalview 2 project may\nnot be correctly bound to sequences in the alignment.\nIn the case of problems, see note at\nhttp://issues.jalview.org/browse/JAL-747");
+ errorMessage = ("The Jmol views in this project were imported\nfrom an older version of Jalview.\nPlease review the sequence colour associations\nin the Colour by section of the Jmol View menu.\n\nIn the case of problems, see note at\nhttp://issues.jalview.org/browse/JAL-747");
warn(errorMessage);
}
}
Object[] svattrib = entry.getValue();
int[] geom = (int[]) svattrib[0];
String state = (String) svattrib[1];
- Hashtable<String, Object[]> oldFiles = (Hashtable<String, Object[]>) svattrib[2];
- final boolean useinJmolsuperpos = ((boolean[]) svattrib[3])[0], usetoColourbyseq = ((boolean[]) svattrib[3])[1], jmolColouring=((boolean[])svattrib[3])[2];
+ Hashtable<File, Object[]> oldFiles = (Hashtable<File, Object[]>) svattrib[2];
+ final boolean useinJmolsuperpos = ((boolean[]) svattrib[3])[0], usetoColourbyseq = ((boolean[]) svattrib[3])[1], jmolColouring = ((boolean[]) svattrib[3])[2];
int x = geom[0], y = geom[1], width = geom[2], height = geom[3];
// collate the pdbfile -> sequence mappings from this view
Vector<String> pdbfilenames = new Vector<String>();
{
newFileLoc = new StringBuffer();
}
+ do {
+ // look for next filename in load statement
newFileLoc.append(state.substring(cp,
ncp = (state.indexOf("\"", ncp + 1) + 1)));
String oldfilenam = state.substring(ncp,
// recover the new mapping data for this old filename
// have to normalize filename - since Jmol and jalview do filename
// translation differently.
- Object[] filedat = oldFiles.get(new File(oldfilenam)
- .toString());
- newFileLoc.append(((String) filedat[0]));
+ Object[] filedat = oldFiles.get(new File(oldfilenam));
+ newFileLoc.append(Platform.escapeString((String) filedat[0]));
pdbfilenames.addElement((String) filedat[0]);
pdbids.addElement((String) filedat[1]);
seqmaps.addElement((SequenceI[]) ((Vector<SequenceI>) filedat[2])
newFileLoc.append("\"");
cp = ecp + 1; // advance beyond last \" and set cursor so we can
// look for next file statement.
+ } while ((ncp=state.indexOf("/*file*/",cp))>-1);
}
if (cp > 0)
{
.print("Ignoring incomplete Jmol state for PDB ids: ");
newFileLoc = new StringBuffer(state);
newFileLoc.append("; load append ");
- for (String id : oldFiles.keySet())
+ for (File id : oldFiles.keySet())
{
// add this and any other pdb files that should be present in
// the viewer
try
{
sview = new AppJmol(pdbf, id, sq, alf.alignPanel,
- useinJmolsuperpos, usetoColourbyseq, jmolColouring, fileloc,
- rect, vid);
+ useinJmolsuperpos, usetoColourbyseq,
+ jmolColouring, fileloc, rect, vid);
} catch (OutOfMemoryError ex)
{
new OOMWarning("restoring structure view for PDB id "
// add mapping for sequences in this view to an already open Jmol
// instance
- for (String id : oldFiles.keySet())
+ for (File id : oldFiles.keySet())
{
// add this and any other pdb files that should be present in the
// viewer
SequenceI[] seq = (SequenceI[]) ((Vector<SequenceI>) filedat[2])
.toArray(new SequenceI[0]);
((AppJmol) comp).jmb.ssm.setMapping(seq, null, pdbFile,
- jalview.io.AppletFormatAdapter.FILE);
+ jalview.io.AppletFormatAdapter.FILE);
((AppJmol) comp).jmb.addSequenceForStructFile(pdbFile, seq);
}
// and add the AlignmentPanel's reference to the Jmol view
}
if (usetoColourbyseq)
{
- ((AppJmol) comp).useAlignmentPanelForColourbyseq(ap, !jmolColouring);
+ ((AppJmol) comp).useAlignmentPanelForColourbyseq(ap,
+ !jmolColouring);
}
else
{
Desktop.addInternalFrame(af, view.getTitle(), view.getWidth(),
view.getHeight());
af.alignPanel.updateAnnotation(false); // recompute any autoannotation
- reorderAutoannotation(af,al,autoAlan);
+ reorderAutoannotation(af, al, autoAlan);
return af;
}
private void reorderAutoannotation(AlignFrame af, Alignment al,
ArrayList<JvAnnotRow> autoAlan)
{
- // copy over visualization settings for autocalculated annotation in the
+ // copy over visualization settings for autocalculated annotation in the
// view
if (al.getAlignmentAnnotation() != null)
{
if (valan != null)
{
// delete the auto calculated row from the alignment
- al.deleteAnnotation(al.getAlignmentAnnotation()[h],false);
+ al.deleteAnnotation(al.getAlignmentAnnotation()[h], false);
hSize--;
h--;
if (valan != nullAnnot)
{
- if (jalan!=valan.template) {
+ if (jalan != valan.template)
+ {
// newly created autoannotation row instance
// so keep a reference to the visible annotation row
// and copy over all relevant attributes
- if (valan.template.graphHeight >= 0)
-
- {
- jalan.graphHeight = valan.template.graphHeight;
- }
- jalan.visible = valan.template.visible;
+ if (valan.template.graphHeight >= 0)
+
+ {
+ jalan.graphHeight = valan.template.graphHeight;
+ }
+ jalan.visible = valan.template.visible;
}
reorder.add(new JvAnnotRow(valan.order, jalan));
}
}
}
}
- int s=0,srt[] = new int[reorder.size()];
+ int s = 0, srt[] = new int[reorder.size()];
JvAnnotRow[] rws = new JvAnnotRow[reorder.size()];
- for (JvAnnotRow jvar:reorder) {
+ for (JvAnnotRow jvar : reorder)
+ {
rws[s] = jvar;
- srt[s++]=jvar.order;
+ srt[s++] = jvar.order;
}
reorder.clear();
jalview.util.QuickSort.sort(srt, rws);