X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fgui%2FJalview2XML.java;h=ce421742f1be8c9910fd1a08bdfd4462fc3a808a;hb=dfa04e77181fccfa6229ffef1591fc9c622d9b39;hp=4533b2565af9fba8146a8c8061f896afdf2b796a;hpb=90655a5726c6f7b82048438cf66c737a6999866d;p=jalview.git
diff --git a/src/jalview/gui/Jalview2XML.java b/src/jalview/gui/Jalview2XML.java
index 4533b25..ce42174 100644
--- a/src/jalview/gui/Jalview2XML.java
+++ b/src/jalview/gui/Jalview2XML.java
@@ -1,19 +1,20 @@
/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
- * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
- *
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1)
+ * Copyright (C) 2014 The Jalview Authors
+ *
* This file is part of Jalview.
- *
+ *
* Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
+ * modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- *
- * Jalview is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License along with Jalview. If not, see .
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
*/
package jalview.gui;
@@ -38,7 +39,6 @@ import jalview.schemabinding.version2.*;
import jalview.schemes.*;
import jalview.util.Platform;
import jalview.util.jarInputStreamProvider;
-import jalview.ws.jws2.AAConClient;
import jalview.ws.jws2.Jws2Discoverer;
import jalview.ws.jws2.dm.AAConSettings;
import jalview.ws.jws2.jabaws2.Jws2Instance;
@@ -48,11 +48,11 @@ import jalview.ws.params.WsParamSetI;
/**
* Write out the current jalview desktop state as a Jalview XML stream.
- *
+ *
* Note: the vamsas objects referred to here are primitive versions of the
* VAMSAS project schema elements - they are not the same and most likely never
* will be :)
- *
+ *
* @author $author$
* @version $Revision: 1.134 $
*/
@@ -60,7 +60,7 @@ public class Jalview2XML
{
/**
* create/return unique hash string for sq
- *
+ *
* @param sq
* @return new or existing unique string for sq
*/
@@ -266,7 +266,7 @@ public class Jalview2XML
/**
* Writes a jalview project archive to the given Jar output stream.
- *
+ *
* @param jout
*/
public void SaveState(JarOutputStream jout)
@@ -407,7 +407,7 @@ public class Jalview2XML
/**
* create a JalviewModel from an algnment view and marshall it to a
* JarOutputStream
- *
+ *
* @param ap
* panel to create jalview model for
* @param fileName
@@ -430,7 +430,7 @@ public class Jalview2XML
object.setVamsasModel(new jalview.schemabinding.version2.VamsasModel());
object.setCreationDate(new java.util.Date(System.currentTimeMillis()));
- object.setVersion(jalview.bin.Cache.getProperty("VERSION"));
+ object.setVersion(jalview.bin.Cache.getDefault("VERSION","Development Build"));
jalview.datamodel.AlignmentI jal = av.getAlignment();
@@ -464,7 +464,7 @@ public class Jalview2XML
}
JSeq jseq;
- Set calcIdSet=new HashSet();
+ Set calcIdSet = new HashSet();
// SAVE SEQUENCES
String id = "";
@@ -1004,6 +1004,7 @@ public class Jalview2XML
groups[i].setIgnoreGapsinConsensus(sg.getIgnoreGapsConsensus());
groups[i].setShowConsensusHistogram(sg.isShowConsensusHistogram());
groups[i].setShowSequenceLogo(sg.isShowSequenceLogo());
+ groups[i].setNormaliseSequenceLogo(sg.isNormaliseSequenceLogo());
for (int s = 0; s < sg.getSize(); s++)
{
jalview.datamodel.Sequence seq = (jalview.datamodel.Sequence) sg
@@ -1069,6 +1070,8 @@ public class Jalview2XML
ac.setMaxColour(acg.getMaxColour().getRGB());
ac.setMinColour(acg.getMinColour().getRGB());
+ ac.setPerSequence(acg.isSeqAssociated());
+ ac.setPredefinedColours(acg.isPredefinedColours());
view.setAnnotationColours(ac);
view.setBgColour("AnnotationColourGradient");
}
@@ -1117,6 +1120,7 @@ public class Jalview2XML
view.setTextColThreshold(av.thresholdTextColour);
view.setShowConsensusHistogram(av.isShowConsensusHistogram());
view.setShowSequenceLogo(av.isShowSequenceLogo());
+ view.setNormaliseSequenceLogo(av.isNormaliseSequenceLogo());
view.setShowGroupConsensus(av.isShowGroupConsensus());
view.setShowGroupConservation(av.isShowGroupConservation());
view.setShowNPfeatureTooltip(av.isShowNpFeats());
@@ -1668,6 +1672,8 @@ public class Jalview2XML
try
{
+ // create list to store references for any new Jmol viewers created
+ newStructureViewers=new Vector();
// UNMARSHALLER SEEMS TO CLOSE JARINPUTSTREAM, MOST ANNOYING
// Workaround is to make sure caller implements the JarInputStreamProvider
// interface
@@ -1675,11 +1681,27 @@ public class Jalview2XML
jarInputStreamProvider jprovider = createjarInputStreamProvider(file);
af = LoadJalviewAlign(jprovider);
+
} catch (MalformedURLException e)
{
errorMessage = "Invalid URL format for '" + file + "'";
reportErrors();
}
+ finally {
+ try
+ {
+ SwingUtilities.invokeAndWait(new Runnable()
+ {
+ public void run()
+ {
+ setLoadingFinishedForNewStructureViewers();
+ };
+ });
+ } catch (Exception x)
+ {
+
+ }
+ }
return af;
}
@@ -2267,7 +2289,7 @@ public class Jalview2XML
// Construct new annotation from model.
AnnotationElement[] ae = an[i].getAnnotationElement();
jalview.datamodel.Annotation[] anot = null;
- java.awt.Color firstColour=null;
+ java.awt.Color firstColour = null;
int anpos;
if (!an[i].getScoreOnly())
{
@@ -2295,11 +2317,10 @@ public class Jalview2XML
// {
// anot[ae[aa].getPosition()].displayCharacter = "";
// }
- anot[anpos].colour = new java.awt.Color(
- ae[aa].getColour());
- if (firstColour==null)
+ anot[anpos].colour = new java.awt.Color(ae[aa].getColour());
+ if (firstColour == null)
{
- firstColour=anot[anpos].colour;
+ firstColour = anot[anpos].colour;
}
}
}
@@ -2316,7 +2337,7 @@ public class Jalview2XML
an[i].getGraphType());
jaa.graphGroup = an[i].getGraphGroup();
- jaa._linecolour=firstColour;
+ jaa._linecolour = firstColour;
if (an[i].getThresholdLine() != null)
{
jaa.setThreshold(new jalview.datamodel.GraphLine(an[i]
@@ -2336,7 +2357,7 @@ public class Jalview2XML
{
jaa = new jalview.datamodel.AlignmentAnnotation(an[i].getLabel(),
an[i].getDescription(), anot);
- jaa._linecolour=firstColour;
+ jaa._linecolour = firstColour;
}
// register new annotation
if (an[i].getId() != null)
@@ -2480,6 +2501,10 @@ public class Jalview2XML
{
sg.setshowSequenceLogo(groups[i].isShowSequenceLogo());
}
+ if (groups[i].hasNormaliseSequenceLogo())
+ {
+ sg.setNormaliseSequenceLogo(groups[i].isNormaliseSequenceLogo());
+ }
if (groups[i].hasIgnoreGapsinConsensus())
{
sg.setIgnoreGapsConsensus(groups[i].getIgnoreGapsinConsensus());
@@ -2964,6 +2989,7 @@ public class Jalview2XML
sview = new AppJmol(pdbf, id, sq, alf.alignPanel,
useinJmolsuperpos, usetoColourbyseq,
jmolColouring, fileloc, rect, vid);
+ addNewStructureViewer(sview);
} catch (OutOfMemoryError ex)
{
new OOMWarning("restoring structure view for PDB id "
@@ -3033,6 +3059,27 @@ public class Jalview2XML
// and finally return.
return af;
}
+ Vector newStructureViewers=null;
+ protected void addNewStructureViewer(AppJmol sview)
+ {
+ if (newStructureViewers!=null)
+ {
+ sview.jmb.setFinishedLoadingFromArchive(false);
+ newStructureViewers.add(sview);
+ }
+ }
+ protected void setLoadingFinishedForNewStructureViewers()
+ {
+ if (newStructureViewers!=null)
+ {
+ for (AppJmol sview:newStructureViewers)
+ {
+ sview.jmb.setFinishedLoadingFromArchive(true);
+ }
+ newStructureViewers.clear();
+ newStructureViewers=null;
+ }
+ }
AlignFrame loadViewport(String file, JSeq[] JSEQ, Vector hiddenSeqs,
Alignment al, JalviewModelSequence jms, Viewport view,
@@ -3194,7 +3241,14 @@ public class Jalview2XML
.getAnnotationColours().getColourScheme()),
view.getAnnotationColours().getAboveThreshold());
}
-
+ if (view.getAnnotationColours().hasPerSequence())
+ {
+ ((AnnotationColourGradient)cs).setSeqAssociated(view.getAnnotationColours().isPerSequence());
+ }
+ if (view.getAnnotationColours().hasPredefinedColours())
+ {
+ ((AnnotationColourGradient)cs).setPredefinedColours(view.getAnnotationColours().isPredefinedColours());
+ }
// Also use these settings for all the groups
if (al.getGroups() != null)
{
@@ -3224,6 +3278,17 @@ public class Jalview2XML
.getAlignment().getAlignmentAnnotation()[i],
sg.cs, view.getAnnotationColours()
.getAboveThreshold());
+ if (cs instanceof AnnotationColourGradient)
+ {
+ if (view.getAnnotationColours().hasPerSequence())
+ {
+ ((AnnotationColourGradient)cs).setSeqAssociated(view.getAnnotationColours().isPerSequence());
+ }
+ if (view.getAnnotationColours().hasPredefinedColours())
+ {
+ ((AnnotationColourGradient)cs).setPredefinedColours(view.getAnnotationColours().isPredefinedColours());
+ }
+ }
}
}
@@ -3297,6 +3362,10 @@ public class Jalview2XML
{
af.viewport.setShowSequenceLogo(false);
}
+ if (view.hasNormaliseSequenceLogo())
+ {
+ af.viewport.setNormaliseSequenceLogo(view.getNormaliseSequenceLogo());
+ }
if (view.hasShowDbRefTooltip())
{
af.viewport.setShowDbRefs(view.getShowDbRefTooltip());
@@ -3417,8 +3486,9 @@ public class Jalview2XML
// TODO: we don't need to do this if the viewport is aready visible.
Desktop.addInternalFrame(af, view.getTitle(), view.getWidth(),
view.getHeight());
- af.alignPanel.updateAnnotation(false); // recompute any autoannotation
+ af.alignPanel.updateAnnotation(false, true); // recompute any autoannotation
reorderAutoannotation(af, al, autoAlan);
+ af.alignPanel.alignmentChanged();
return af;
}
@@ -3525,7 +3595,7 @@ public class Jalview2XML
/**
* TODO remove this method
- *
+ *
* @param view
* @return AlignFrame bound to sequenceSetId from view, if one exists. private
* AlignFrame getSkippedFrame(Viewport view) { if (skipList==null) {
@@ -3536,7 +3606,7 @@ public class Jalview2XML
/**
* Check if the Jalview view contained in object should be skipped or not.
- *
+ *
* @param object
* @return true if view's sequenceSetId is a key in skipList
*/
@@ -3609,7 +3679,7 @@ public class Jalview2XML
}
/**
- *
+ *
* @param vamsasSeq
* sequence definition to create/merge dataset sequence for
* @param ds
@@ -3667,6 +3737,20 @@ public class Jalview2XML
if (sq != dsq)
{ // make this dataset sequence sq's dataset sequence
sq.setDatasetSequence(dsq);
+ // and update the current dataset alignment
+ if (ds==null) {
+ if (dseqs!=null) {
+ if (!dseqs.contains(dsq))
+ {
+ dseqs.add(dsq);
+ }
+ } else {
+ if (ds.findIndex(dsq)<0)
+ {
+ ds.addSequence(dsq);
+ }
+ }
+ }
}
}
}
@@ -3693,11 +3777,11 @@ public class Jalview2XML
* sb.append(newres.substring(newres.length() - sq.getEnd() -
* dsq.getEnd())); dsq.setEnd(sq.getEnd()); }
*/
- dsq.setSequence(sb.toString());
+ dsq.setSequence(newres);
}
// TODO: merges will never happen if we 'know' we have the real dataset
// sequence - this should be detected when id==dssid
- System.err.println("DEBUG Notice: Merged dataset sequence"); // ("
+ System.err.println("DEBUG Notice: Merged dataset sequence (if you see this often, post at http://issues.jalview.org/browse/JAL-1474)"); // ("
// + (pre ? "prepended" : "") + " "
// + (post ? "appended" : ""));
}
@@ -3733,7 +3817,7 @@ public class Jalview2XML
/**
* make a new dataset ID for this jalview dataset alignment
- *
+ *
* @param dataset
* @return
*/
@@ -3920,7 +4004,7 @@ public class Jalview2XML
/*
* (non-Javadoc)
- *
+ *
* @see java.lang.Object#finalize()
*/
@Override
@@ -3998,13 +4082,13 @@ public class Jalview2XML
* finalize and clearSeqRefs will not clear the tables when the Jalview2XML
* object goes out of scope. - also populates the datasetIds hashtable with
* alignment objects containing dataset sequences
- *
+ *
* @param vobj2jv
* Map from ID strings to jalview datamodel
* @param jv2vobj
* Map from jalview datamodel to ID strings
- *
- *
+ *
+ *
*/
public void setObjectMappingTables(Hashtable vobj2jv,
IdentityHashMap jv2vobj)
@@ -4076,7 +4160,7 @@ public class Jalview2XML
* set the uniqueSetSuffix used to prefix/suffix object IDs for jalview
* objects created from the project archive. If string is null (default for
* construction) then suffix will be set automatically.
- *
+ *
* @param string
*/
public void setUniqueSetSuffix(String string)
@@ -4088,7 +4172,7 @@ public class Jalview2XML
/**
* uses skipList2 as the skipList for skipping views on sequence sets
* associated with keys in the skipList
- *
+ *
* @param skipList2
*/
public void setSkipList(Hashtable skipList2)