X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FJalview2XML.java;h=e88b190a79833cc354bbde21e6f1dd3114df8b14;hb=be7129c40859bc2434e59ad0a54149c99ea569ef;hp=4533b2565af9fba8146a8c8061f896afdf2b796a;hpb=90655a5726c6f7b82048438cf66c737a6999866d;p=jalview.git diff --git a/src/jalview/gui/Jalview2XML.java b/src/jalview/gui/Jalview2XML.java index 4533b25..e88b190 100644 --- a/src/jalview/gui/Jalview2XML.java +++ b/src/jalview/gui/Jalview2XML.java @@ -1,18 +1,18 @@ /* - * 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) + * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle + * * 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 . */ package jalview.gui; @@ -38,7 +38,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 +47,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 +59,7 @@ public class Jalview2XML { /** * create/return unique hash string for sq - * + * * @param sq * @return new or existing unique string for sq */ @@ -266,7 +265,7 @@ public class Jalview2XML /** * Writes a jalview project archive to the given Jar output stream. - * + * * @param jout */ public void SaveState(JarOutputStream jout) @@ -407,7 +406,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 @@ -464,7 +463,7 @@ public class Jalview2XML } JSeq jseq; - Set calcIdSet=new HashSet(); + Set calcIdSet = new HashSet(); // SAVE SEQUENCES String id = ""; @@ -1004,6 +1003,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 @@ -1117,6 +1117,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 +1669,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 +1678,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 +2286,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 +2314,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 +2334,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 +2354,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 +2498,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 +2986,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 +3056,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, @@ -3297,6 +3341,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,7 +3465,7 @@ 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); return af; } @@ -3525,7 +3573,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 +3584,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 +3657,7 @@ public class Jalview2XML } /** - * + * * @param vamsasSeq * sequence definition to create/merge dataset sequence for * @param ds @@ -3733,7 +3781,7 @@ public class Jalview2XML /** * make a new dataset ID for this jalview dataset alignment - * + * * @param dataset * @return */ @@ -3920,7 +3968,7 @@ public class Jalview2XML /* * (non-Javadoc) - * + * * @see java.lang.Object#finalize() */ @Override @@ -3998,13 +4046,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 +4124,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 +4136,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)