X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAppVarna.java;h=dcb2a7ddea8ca0519fadc574e3e07400c0df4d55;hb=528dcd143968fc270232e4cec64a79b447aa5ec6;hp=beb4980cd87f4a582e910410056e8f7007b9658f;hpb=c54581c9ab50f031fe6400fa4f578a44f1f55798;p=jalview.git diff --git a/src/jalview/gui/AppVarna.java b/src/jalview/gui/AppVarna.java index beb4980..dcb2a7d 100644 --- a/src/jalview/gui/AppVarna.java +++ b/src/jalview/gui/AppVarna.java @@ -20,9 +20,24 @@ */ package jalview.gui; +import jalview.analysis.AlignSeq; +import jalview.datamodel.AlignmentAnnotation; +import jalview.datamodel.ColumnSelection; +import jalview.datamodel.RnaViewerModel; +import jalview.datamodel.SequenceGroup; +import jalview.datamodel.SequenceI; +import jalview.ext.varna.RnaModel; +import jalview.structure.SecondaryStructureListener; +import jalview.structure.SelectionListener; +import jalview.structure.SelectionSource; +import jalview.structure.StructureSelectionManager; +import jalview.structure.VamsasSource; +import jalview.util.Comparison; +import jalview.util.MessageManager; +import jalview.util.ShiftList; + import java.awt.BorderLayout; import java.awt.Color; -import java.lang.reflect.InvocationTargetException; import java.util.Collection; import java.util.Hashtable; import java.util.LinkedHashMap; @@ -47,22 +62,6 @@ import fr.orsay.lri.varna.models.annotations.HighlightRegionAnnotation; import fr.orsay.lri.varna.models.rna.ModeleBase; import fr.orsay.lri.varna.models.rna.RNA; -import jalview.analysis.AlignSeq; -import jalview.datamodel.AlignmentAnnotation; -import jalview.datamodel.ColumnSelection; -import jalview.datamodel.RnaViewerModel; -import jalview.datamodel.SequenceGroup; -import jalview.datamodel.SequenceI; -import jalview.ext.varna.RnaModel; -import jalview.structure.SecondaryStructureListener; -import jalview.structure.SelectionListener; -import jalview.structure.SelectionSource; -import jalview.structure.StructureSelectionManager; -import jalview.structure.VamsasSource; -import jalview.util.Comparison; -import jalview.util.MessageManager; -import jalview.util.ShiftList; - public class AppVarna extends JInternalFrame implements SelectionListener, SecondaryStructureListener, InterfaceVARNASelectionListener, VamsasSource @@ -189,17 +188,16 @@ public class AppVarna extends JInternalFrame implements SelectionListener, setTitle(theTitle); String gappedTitle = sname + " (with gaps)"; - RnaModel gappedModel = new RnaModel(gappedTitle, aa, seq, null, true, - null); + RnaModel gappedModel = new RnaModel(gappedTitle, aa, seq, null, true); addModel(gappedModel, gappedTitle); String trimmedTitle = "trimmed " + sname; - RnaModel trimmedModel = new RnaModel(trimmedTitle, aa, seq, null, - false, null); + RnaModel trimmedModel = new RnaModel(trimmedTitle, aa, seq, null, false); addModel(trimmedModel, trimmedTitle); vab.setSelectedIndex(0); } + /** * Constructor that links the viewer to a parent panel (but has no structures * yet - use addModel to add them) @@ -405,14 +403,6 @@ public class AppVarna extends JInternalFrame implements SelectionListener, if (rnaModel.seq == sequence) { int highlightPos = rnaModel.gapped ? index : position - 1; - // int highlightPos = index; - // ShiftList shift = offsets.get(rna); - // if (shift != null) - // { - // System.err.print("Orig pos:" + index); - // highlightPos = shift.shift(index); - // System.err.println("\nFinal pos:" + index); - // } mouseOverHighlighter.highlightRegion(rna, highlightPos, highlightPos); vab.updateSelectedRNA(rna); } @@ -600,34 +590,6 @@ public class AppVarna extends JInternalFrame implements SelectionListener, } /* - * loaded from project file with Varna session data - */ - if (model.varnaSession != null) - { - try - { - FullBackup fromSession = vab.vp.loadSession(model.varnaSession); - vab.addStructure(fromSession.rna, fromSession.config); - RNA rna = fromSession.rna; - // copy the model, but now including the RNA object - RnaModel newModel = new RnaModel(model.title, model.ann, model.seq, - rna, model.gapped, model.varnaSession); - if (!model.gapped) - { - registerOffset(rna, buildOffset(model.seq)); - } - models.put(rna, newModel); - // capture rna selection state when saved - selectionHighlighter = new VarnaHighlighter(rna); - return fromSession.rna; - } catch (ExceptionLoadingFailed e) - { - e.printStackTrace(); - return null; - } - } - - /* * opened on request in Jalview session */ RNA rna = new RNA(modelName); @@ -651,7 +613,7 @@ public class AppVarna extends JInternalFrame implements SelectionListener, rna = trimRNA(rna, modelName); } models.put(rna, new RnaModel(modelName, model.ann, model.seq, rna, - model.gapped, null)); + model.gapped)); vab.addStructure(rna); return rna; } @@ -701,10 +663,64 @@ public class AppVarna extends JInternalFrame implements SelectionListener, /** * Set the selected index in the model selection list * - * @param selectedR + * @param selectedIndex */ public void setInitialSelection(final int selectedIndex) { + /* + * empirically it needs a second for Varna/AWT to finish loading/drawing + * models for this to work; SwingUtilities.invokeLater _not_ a solution; + * explanation and/or better solution welcome! + */ + synchronized (this) + { + try + { + wait(1000); + } catch (InterruptedException e) + { + // meh + } + } vab.setSelectedIndex(selectedIndex); } + + + /** + * Add a model with associated Varna session file + * + * @param rna + * @param modelName + */ + public RNA addModelSession(RnaModel model, String modelName, + String sessionFile) + { + if (!model.ann.isValidStruc()) + { + throw new IllegalArgumentException("Invalid RNA structure annotation"); + } + + try + { + FullBackup fromSession = vab.vp.loadSession(sessionFile); + vab.addStructure(fromSession.rna, fromSession.config); + RNA rna = fromSession.rna; + // copy the model, but now including the RNA object + RnaModel newModel = new RnaModel(model.title, model.ann, model.seq, + rna, model.gapped); + if (!model.gapped) + { + registerOffset(rna, buildOffset(model.seq)); + } + models.put(rna, newModel); + // capture rna selection state when saved + selectionHighlighter = new VarnaHighlighter(rna); + return fromSession.rna; + } catch (ExceptionLoadingFailed e) + { + System.err + .println("Error restoring Varna session: " + e.getMessage()); + return null; + } + } }