X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FJalview2XML.java;h=41dd71dcfe16126e760f780f3a8a7a1f26041793;hb=02783b1d0f22e82e7854777646e39df0fc77de74;hp=8872be09fd169defbed5299f37bea00a64570e00;hpb=6d981e3a3cac0e7f487d2b3d40e45cfd6ca8435c;p=jalview.git diff --git a/src/jalview/gui/Jalview2XML.java b/src/jalview/gui/Jalview2XML.java index 8872be0..41dd71d 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,9 +38,9 @@ import jalview.schemabinding.version2.*; import jalview.schemes.*; import jalview.util.Platform; import jalview.util.jarInputStreamProvider; -import jalview.ws.jws2.AAConsClient; +import jalview.ws.jws2.AAConClient; import jalview.ws.jws2.Jws2Discoverer; -import jalview.ws.jws2.dm.AAConsSettings; +import jalview.ws.jws2.dm.AAConSettings; import jalview.ws.jws2.jabaws2.Jws2Instance; import jalview.ws.params.ArgumentI; import jalview.ws.params.AutoCalcSetting; @@ -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 @@ -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 @@ -1117,6 +1118,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()); @@ -1354,7 +1356,7 @@ public class Jalview2XML .getPreset(calcIdParam.getName()); if (parmSet != null) { - // TODO : check we have a good match with settings in AACons - + // TODO : check we have a good match with settings in AACon - // otherwise we'll need to create a new preset } } @@ -1363,7 +1365,7 @@ public class Jalview2XML argList = parmSet.getArguments(); parmSet = null; } - AAConsSettings settings = new AAConsSettings( + AAConSettings settings = new AAConSettings( calcIdParam.isAutoUpdate(), service, parmSet, argList); av.setCalcIdSettingsFor(calcIdParam.getCalcId(), settings, calcIdParam.isNeedsUpdate()); @@ -1668,6 +1670,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,6 +1679,7 @@ public class Jalview2XML jarInputStreamProvider jprovider = createjarInputStreamProvider(file); af = LoadJalviewAlign(jprovider); + setLoadingFinishedForNewStructureViewers(); } catch (MalformedURLException e) { errorMessage = "Invalid URL format for '" + file + "'"; @@ -2267,16 +2272,19 @@ public class Jalview2XML // Construct new annotation from model. AnnotationElement[] ae = an[i].getAnnotationElement(); jalview.datamodel.Annotation[] anot = null; - + java.awt.Color firstColour = null; + int anpos; if (!an[i].getScoreOnly()) { anot = new jalview.datamodel.Annotation[al.getWidth()]; for (int aa = 0; aa < ae.length && aa < anot.length; aa++) { - if (ae[aa].getPosition() >= anot.length) + anpos = ae[aa].getPosition(); + + if (anpos >= anot.length) continue; - anot[ae[aa].getPosition()] = new jalview.datamodel.Annotation( + anot[anpos] = new jalview.datamodel.Annotation( ae[aa].getDisplayCharacter(), ae[aa].getDescription(), (ae[aa].getSecondaryStructure() == null || ae[aa] @@ -2292,8 +2300,11 @@ public class Jalview2XML // { // anot[ae[aa].getPosition()].displayCharacter = ""; // } - anot[ae[aa].getPosition()].colour = new java.awt.Color( - ae[aa].getColour()); + anot[anpos].colour = new java.awt.Color(ae[aa].getColour()); + if (firstColour == null) + { + firstColour = anot[anpos].colour; + } } } jalview.datamodel.AlignmentAnnotation jaa = null; @@ -2309,7 +2320,7 @@ public class Jalview2XML an[i].getGraphType()); jaa.graphGroup = an[i].getGraphGroup(); - + jaa._linecolour = firstColour; if (an[i].getThresholdLine() != null) { jaa.setThreshold(new jalview.datamodel.GraphLine(an[i] @@ -2329,6 +2340,7 @@ public class Jalview2XML { jaa = new jalview.datamodel.AlignmentAnnotation(an[i].getLabel(), an[i].getDescription(), anot); + jaa._linecolour = firstColour; } // register new annotation if (an[i].getId() != null) @@ -2472,6 +2484,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()); @@ -2956,6 +2972,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 " @@ -3025,6 +3042,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, @@ -3289,6 +3327,10 @@ public class Jalview2XML { af.viewport.setShowSequenceLogo(false); } + if (view.hasNormaliseSequenceLogo()) + { + af.viewport.setNormaliseSequenceLogo(view.getNormaliseSequenceLogo()); + } if (view.hasShowDbRefTooltip()) { af.viewport.setShowDbRefs(view.getShowDbRefTooltip()); @@ -3409,7 +3451,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; } @@ -3517,7 +3559,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) { @@ -3528,7 +3570,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 */ @@ -3601,7 +3643,7 @@ public class Jalview2XML } /** - * + * * @param vamsasSeq * sequence definition to create/merge dataset sequence for * @param ds @@ -3725,7 +3767,7 @@ public class Jalview2XML /** * make a new dataset ID for this jalview dataset alignment - * + * * @param dataset * @return */ @@ -3912,7 +3954,7 @@ public class Jalview2XML /* * (non-Javadoc) - * + * * @see java.lang.Object#finalize() */ @Override @@ -3990,13 +4032,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) @@ -4068,7 +4110,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) @@ -4080,7 +4122,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)