Updates checkboxes on load
[jalview.git] / src / jalview / gui / Jalview2XML.java
1 /*\r
2  * Jalview - A Sequence Alignment Editor and Viewer\r
3  * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
4  *\r
5  * This program is free software; you can redistribute it and/or\r
6  * modify it under the terms of the GNU General Public License\r
7  * as published by the Free Software Foundation; either version 2\r
8  * of the License, or (at your option) any later version.\r
9  *\r
10  * This program is distributed in the hope that it will be useful,\r
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13  * GNU General Public License for more details.\r
14  *\r
15  * You should have received a copy of the GNU General Public License\r
16  * along with this program; if not, write to the Free Software\r
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
18  */\r
19 package jalview.gui;\r
20 \r
21 import java.io.*;\r
22 import java.net.*;\r
23 import java.util.*;\r
24 import java.util.jar.*;\r
25 \r
26 import javax.swing.*;\r
27 \r
28 import jalview.binding.*;\r
29 import jalview.io.*;\r
30 import jalview.schemes.*;\r
31 \r
32 public class Jalview2XML\r
33 {\r
34   // SAVES SEVERAL ALIGNEMENT WINDOWS TO SAME JARFILE\r
35   public static void SaveState(File statefile)\r
36   {\r
37     long creation = System.currentTimeMillis();\r
38     JInternalFrame[] frames = Desktop.desktop.getAllFrames();\r
39 \r
40     if (frames == null)\r
41     {\r
42       return;\r
43     }\r
44 \r
45     try\r
46     {\r
47       FileOutputStream fos = new FileOutputStream(statefile);\r
48       JarOutputStream jout = new JarOutputStream(fos);\r
49 \r
50       //NOTE UTF-8 MUST BE USED FOR WRITING UNICODE CHARS\r
51       ////////////////////////////////////////////////////\r
52       PrintWriter out = new PrintWriter(new OutputStreamWriter(jout,\r
53           "UTF-8"));\r
54 \r
55       Vector shortNames = new Vector();\r
56 \r
57       //REVERSE ORDER\r
58       for (int i = frames.length - 1; i > -1; i--)\r
59       {\r
60         if (frames[i] instanceof AlignFrame)\r
61         {\r
62           AlignFrame af = (AlignFrame) frames[i];\r
63 \r
64           String shortName = af.getTitle();\r
65 \r
66           if (shortName.indexOf(File.separatorChar) > -1)\r
67           {\r
68             shortName = shortName.substring(shortName.lastIndexOf(\r
69                 File.separatorChar) + 1);\r
70           }\r
71 \r
72           int count = 1;\r
73 \r
74           while (shortNames.contains(shortName))\r
75           {\r
76             if (shortName.endsWith("_" + (count - 1)))\r
77             {\r
78               shortName = shortName.substring(0,\r
79                                               shortName.lastIndexOf("_"));\r
80             }\r
81 \r
82             shortName = shortName.concat("_" + count);\r
83             count++;\r
84           }\r
85 \r
86           shortNames.addElement(shortName);\r
87 \r
88           if (!shortName.endsWith(".xml"))\r
89           {\r
90             shortName = shortName + ".xml";\r
91           }\r
92 \r
93           SaveState(af, creation, shortName, jout, out);\r
94         }\r
95       }\r
96 \r
97       out.close();\r
98       jout.close();\r
99     }\r
100     catch (Exception ex)\r
101     {\r
102       ex.printStackTrace();\r
103     }\r
104   }\r
105 \r
106   // USE THIS METHOD TO SAVE A SINGLE ALIGNMENT WINDOW\r
107   public static void SaveState(AlignFrame af, String jarFile, String fileName)\r
108   {\r
109     try\r
110     {\r
111       FileOutputStream fos = new FileOutputStream(jarFile);\r
112       JarOutputStream jout = new JarOutputStream(fos);\r
113 \r
114       //NOTE UTF-8 MUST BE USED FOR WRITING UNICODE CHARS\r
115       ////////////////////////////////////////////////////\r
116       PrintWriter out = new PrintWriter(new OutputStreamWriter(jout,\r
117           "UTF-8"));\r
118 \r
119       SaveState(af, System.currentTimeMillis(), fileName, jout, out);\r
120       out.close();\r
121       jout.close();\r
122     }\r
123     catch (Exception ex)\r
124     {\r
125     }\r
126   }\r
127 \r
128   public static void SaveState(AlignFrame af, long timeStamp,\r
129                                String fileName, JarOutputStream jout,\r
130                                PrintWriter out)\r
131   {\r
132     Vector seqids = new Vector();\r
133     Vector userColours = new Vector();\r
134 \r
135     AlignViewport av = af.viewport;\r
136 \r
137     JalviewModel object = new JalviewModel();\r
138     object.setVamsasModel(new VamsasModel());\r
139 \r
140     object.setCreationDate(new java.util.Date(timeStamp));\r
141 \r
142     jalview.datamodel.AlignmentI jal = af.viewport.alignment;\r
143 \r
144     SequenceSet vamsasSet = new SequenceSet();\r
145     Sequence vamsasSeq;\r
146     JalviewModelSequence jms = new JalviewModelSequence();\r
147 \r
148     vamsasSet.setGapChar(jal.getGapCharacter() + "");\r
149 \r
150     JSeq jseq;\r
151 \r
152     //SAVE SEQUENCES\r
153     int id = 0;\r
154 \r
155     for (int i = 0; i < jal.getHeight(); i++)\r
156     {\r
157       seqids.add(jal.getSequenceAt(i));\r
158 \r
159       vamsasSeq = new Sequence();\r
160       vamsasSeq.setId(id + "");\r
161       vamsasSeq.setName(jal.getSequenceAt(i).getName());\r
162       vamsasSeq.setSequence(jal.getSequenceAt(i).getSequence());\r
163 \r
164       jseq = new JSeq();\r
165       jseq.setStart(jal.getSequenceAt(i).getStart());\r
166       jseq.setEnd(jal.getSequenceAt(i).getEnd());\r
167 \r
168       jseq.setColour(jal.getSequenceAt(i).getColor().getRGB());\r
169 \r
170       jseq.setId(id);\r
171 \r
172       jms.addJSeq(jseq);\r
173       vamsasSet.addSequence(vamsasSeq);\r
174       id++;\r
175     }\r
176 \r
177     //SAVE TREES\r
178     if (af.viewport.currentTree != null)\r
179     {\r
180       object.getVamsasModel().addTree(af.viewport.currentTree.toString());\r
181     }\r
182 \r
183     //SAVE ANNOTATIONS\r
184     if (jal.getAlignmentAnnotation() != null)\r
185     {\r
186       jalview.datamodel.AlignmentAnnotation[] aa = jal.getAlignmentAnnotation();\r
187 \r
188       for (int i = 0; i < aa.length; i++)\r
189       {\r
190         if (aa[i].label.equals("Quality") ||\r
191             aa[i].label.equals("Conservation") ||\r
192             aa[i].label.equals("Consensus"))\r
193         {\r
194           continue;\r
195         }\r
196 \r
197         Annotation an = new Annotation();\r
198         an.setDescription(aa[i].description);\r
199         an.setGraph(aa[i].isGraph);\r
200         an.setLabel(aa[i].label);\r
201 \r
202         AnnotationElement ae;\r
203 \r
204         for (int a = 0; a < aa[i].annotations.length; a++)\r
205         {\r
206           if ( (aa[i] == null) || (aa[i].annotations[a] == null))\r
207           {\r
208             continue;\r
209           }\r
210 \r
211           ae = new AnnotationElement();\r
212           ae.setDescription(aa[i].annotations[a].description);\r
213           ae.setDisplayCharacter(aa[i].annotations[a].displayCharacter);\r
214           ae.setValue(aa[i].annotations[a].value);\r
215           ae.setPosition(a);\r
216           ae.setSecondaryStructure(aa[i].annotations[a].secondaryStructure +\r
217                                    "");\r
218           an.addAnnotationElement(ae);\r
219         }\r
220 \r
221         vamsasSet.addAnnotation(an);\r
222       }\r
223     }\r
224 \r
225     //SAVE GROUPS\r
226     if (jal.getGroups() != null)\r
227     {\r
228       JGroup[] groups = new JGroup[jal.getGroups().size()];\r
229 \r
230       for (int i = 0; i < groups.length; i++)\r
231       {\r
232         groups[i] = new JGroup();\r
233 \r
234         jalview.datamodel.SequenceGroup sg = (jalview.datamodel.SequenceGroup)\r
235             jal.getGroups()\r
236             .elementAt(i);\r
237         groups[i].setStart(sg.getStartRes());\r
238         groups[i].setEnd(sg.getEndRes());\r
239         groups[i].setName(sg.getName());\r
240 \r
241         if (sg.cs instanceof ConservationColourScheme)\r
242         {\r
243           groups[i].setConsThreshold( ( (ConservationColourScheme) sg.cs).inc);\r
244         }\r
245 \r
246         if (sg.cs instanceof ResidueColourScheme)\r
247         {\r
248           groups[i].setPidThreshold( ( (ResidueColourScheme) sg.cs).\r
249                                     getThreshold());\r
250         }\r
251         else if (sg.cs instanceof ScoreColourScheme)\r
252         {\r
253           groups[i].setPidThreshold( ( (ScoreColourScheme) sg.cs).getThreshold());\r
254         }\r
255 \r
256         if (sg.cs instanceof jalview.schemes.UserColourScheme)\r
257         {\r
258           groups[i].setColour(SetUserColourScheme(sg.cs, userColours,\r
259                                                   jms));\r
260         }\r
261         else\r
262         {\r
263           groups[i].setColour(ColourSchemeProperty.getColourName(\r
264               sg.cs));\r
265         }\r
266 \r
267         groups[i].setOutlineColour(sg.getOutlineColour().getRGB());\r
268         groups[i].setDisplayBoxes(sg.getDisplayBoxes());\r
269         groups[i].setDisplayText(sg.getDisplayText());\r
270         groups[i].setColourText(sg.getColourText());\r
271 \r
272         for (int s = 0; s < sg.getSize(); s++)\r
273         {\r
274           jalview.datamodel.Sequence seq = (jalview.datamodel.Sequence) sg.\r
275               getSequenceAt(s);\r
276           int index = seqids.indexOf(seq);\r
277           groups[i].addSeq(index);\r
278         }\r
279       }\r
280 \r
281       jms.setJGroup(groups);\r
282     }\r
283 \r
284     ///////////SAVE VIEWPORT\r
285     Viewport view = new Viewport();\r
286     view.setTitle(af.getTitle());\r
287     view.setXpos(af.getX());\r
288     view.setYpos(af.getY());\r
289     view.setWidth(af.getWidth());\r
290     view.setHeight(af.getHeight());\r
291     view.setStartRes(av.startRes);\r
292     view.setStartSeq(av.startSeq);\r
293 \r
294     if (av.getGlobalColourScheme() instanceof jalview.schemes.UserColourScheme)\r
295     {\r
296       view.setBgColour(SetUserColourScheme(av.getGlobalColourScheme(),\r
297                                            userColours, jms));\r
298     }\r
299     else\r
300     {\r
301       view.setBgColour(ColourSchemeProperty.getColourName(\r
302           av.getGlobalColourScheme()));\r
303     }\r
304 \r
305     ColourSchemeI cs = av.getGlobalColourScheme();\r
306 \r
307     if (cs instanceof ConservationColourScheme)\r
308     {\r
309       view.setConsThreshold( ( (ConservationColourScheme) cs).inc);\r
310     }\r
311 \r
312     if (cs instanceof ResidueColourScheme)\r
313     {\r
314       view.setPidThreshold( ( (ResidueColourScheme) cs).getThreshold());\r
315     }\r
316     else if (cs instanceof ScoreColourScheme)\r
317     {\r
318       view.setPidThreshold( ( (ScoreColourScheme) cs).getThreshold());\r
319     }\r
320 \r
321     view.setConservationSelected(av.getConservationSelected());\r
322     view.setPidSelected(av.getAbovePIDThreshold());\r
323     view.setFontName(av.font.getFontName());\r
324     view.setFontSize(av.font.getSize());\r
325     view.setFontStyle(av.font.getStyle());\r
326     view.setRenderGaps(av.renderGaps);\r
327     view.setShowAnnotation(av.getShowAnnotation());\r
328     view.setShowBoxes(av.getShowBoxes());\r
329     view.setShowColourText(av.getColourText());\r
330     view.setShowConservation(av.showConservation);\r
331     view.setShowFullId(av.getShowFullId());\r
332     view.setShowIdentity(av.showIdentity);\r
333     view.setShowQuality(av.showQuality);\r
334     view.setShowSequenceFeatures(av.showSequenceFeatures);\r
335     view.setShowText(av.getShowText());\r
336     view.setWrapAlignment(av.getWrapAlignment());\r
337 \r
338     jms.addViewport(view);\r
339 \r
340     object.setJalviewModelSequence(jms);\r
341     object.getVamsasModel().addSequenceSet(vamsasSet);\r
342 \r
343     try\r
344     {\r
345       if (!fileName.endsWith(".xml"))\r
346       {\r
347         fileName = fileName + ".xml";\r
348       }\r
349 \r
350       JarEntry entry = new JarEntry(fileName);\r
351       jout.putNextEntry(entry);\r
352 \r
353       object.marshal(out);\r
354     }\r
355     catch (Exception ex)\r
356     {\r
357       ex.printStackTrace();\r
358     }\r
359   }\r
360 \r
361   static String SetUserColourScheme(jalview.schemes.ColourSchemeI cs,\r
362                                     Vector userColours,\r
363                                     JalviewModelSequence jms)\r
364   {\r
365     String id = null;\r
366     jalview.schemes.UserColourScheme ucs = (jalview.schemes.UserColourScheme)\r
367         cs;\r
368 \r
369     if (!userColours.contains(ucs))\r
370     {\r
371       userColours.add(ucs);\r
372 \r
373       java.awt.Color[] colours = ucs.getColours();\r
374       jalview.binding.UserColours uc = new jalview.binding.UserColours();\r
375       jalview.binding.UserColourScheme jbucs = new jalview.binding.\r
376           UserColourScheme();\r
377 \r
378       for (int i = 0; i < colours.length; i++)\r
379       {\r
380         jalview.binding.Colour col = new jalview.binding.Colour();\r
381         col.setRGB(jalview.util.Format.getHexString(colours[i]));\r
382         jbucs.addColour(col);\r
383       }\r
384 \r
385       id = "ucs" + userColours.indexOf(ucs);\r
386       uc.setId(id);\r
387       uc.setUserColourScheme(jbucs);\r
388       jms.addUserColours(uc);\r
389     }\r
390 \r
391     return id;\r
392   }\r
393 \r
394   static jalview.schemes.UserColourScheme GetUserColourScheme(\r
395       JalviewModelSequence jms, String id)\r
396   {\r
397     UserColours[] uc = jms.getUserColours();\r
398     UserColours colours = null;\r
399 \r
400     for (int i = 0; i < uc.length; i++)\r
401     {\r
402       if (uc[i].getId().equals(id))\r
403       {\r
404         colours = uc[i];\r
405 \r
406         break;\r
407       }\r
408     }\r
409 \r
410     int csize = colours.getUserColourScheme().getColourCount();\r
411     java.awt.Color[] newColours = new java.awt.Color[csize];\r
412 \r
413     for (int i = 0; i < csize; i++)\r
414     {\r
415       newColours[i] = new java.awt.Color(Integer.parseInt(\r
416           colours.getUserColourScheme().getColour(i).getRGB(), 16));\r
417     }\r
418 \r
419     return new jalview.schemes.UserColourScheme(newColours);\r
420   }\r
421 \r
422   public static void LoadJalviewAlign(String file)\r
423   {\r
424     JalviewModel object = new JalviewModel();\r
425 \r
426     try\r
427     {\r
428       //UNMARSHALLER SEEMS TO CLOSE JARINPUTSTREAM, MOST ANNOYING\r
429       URL url = null;\r
430 \r
431       if (file.startsWith("http://"))\r
432       {\r
433         url = new URL(file);\r
434       }\r
435 \r
436       JarInputStream jin = null;\r
437       JarEntry jarentry = null;\r
438       int entryCount = 1;\r
439 \r
440       do\r
441       {\r
442         if (url != null)\r
443         {\r
444           jin = new JarInputStream(url.openStream());\r
445         }\r
446         else\r
447         {\r
448           jin = new JarInputStream(new FileInputStream(file));\r
449         }\r
450 \r
451         for (int i = 0; i < entryCount; i++)\r
452         {\r
453           jarentry = jin.getNextJarEntry();\r
454         }\r
455 \r
456         if (jarentry != null)\r
457         {\r
458           InputStreamReader in = new InputStreamReader(jin, "UTF-8");\r
459           object = (JalviewModel) object.unmarshal(in);\r
460           LoadFromObject(object);\r
461           entryCount++;\r
462         }\r
463       }\r
464       while (jarentry != null);\r
465     }\r
466     catch (Exception ex)\r
467     {\r
468       System.err.println("Exception whilst loading jalview XML file : " +\r
469                          ex + "\n");\r
470       ex.printStackTrace();\r
471 \r
472       return;\r
473     }\r
474   }\r
475 \r
476   static void LoadFromObject(JalviewModel object)\r
477   {\r
478     Vector seqids = new Vector();\r
479     SequenceSet vamsasSet = object.getVamsasModel().getSequenceSet(0);\r
480     Sequence[] vamsasSeq = vamsasSet.getSequence();\r
481 \r
482     JalviewModelSequence jms = object.getJalviewModelSequence();\r
483 \r
484     //////////////////////////////////\r
485     //LOAD SEQUENCES\r
486     jalview.datamodel.Sequence[] jseqs = new jalview.datamodel.Sequence[\r
487         vamsasSeq.length];\r
488     JSeq[] JSEQ = object.getJalviewModelSequence().getJSeq();\r
489 \r
490     for (int i = 0; i < vamsasSeq.length; i++)\r
491     {\r
492       jseqs[i] = new jalview.datamodel.Sequence(vamsasSeq[i].getName(),\r
493                                                 vamsasSeq[i].getSequence());\r
494 \r
495       jseqs[i].setStart(JSEQ[i].getStart());\r
496       jseqs[i].setEnd(JSEQ[i].getEnd());\r
497       jseqs[i].setColor(new java.awt.Color(JSEQ[i].getColour()));\r
498       seqids.add(jseqs[i]);\r
499     }\r
500 \r
501     /////////////////////////////////\r
502     jalview.datamodel.Alignment al = new jalview.datamodel.Alignment(jseqs);\r
503 \r
504     /////////////////////////////////\r
505     //////////////////////////////////\r
506     //LOAD ANNOTATIONS\r
507     if (vamsasSet.getAnnotation() != null)\r
508     {\r
509       Annotation[] an = vamsasSet.getAnnotation();\r
510 \r
511       for (int i = 0; i < an.length; i++)\r
512       {\r
513         AnnotationElement[] ae = an[i].getAnnotationElement();\r
514         jalview.datamodel.Annotation[] anot = new jalview.datamodel.Annotation[\r
515             al.getWidth()];\r
516 \r
517         for (int aa = 0; aa < ae.length; aa++)\r
518         {\r
519           anot[ae[aa].getPosition()] = new jalview.datamodel.Annotation(ae[aa].\r
520               getDisplayCharacter(),\r
521               ae[aa].getDescription(),\r
522               ae[aa].getSecondaryStructure().charAt(0),\r
523               ae[aa].getValue());\r
524         }\r
525 \r
526         jalview.datamodel.AlignmentAnnotation jaa = null;\r
527 \r
528         if (an[i].getGraph())\r
529         {\r
530           jaa = new jalview.datamodel.AlignmentAnnotation(an[i].getLabel(),\r
531               an[i].getDescription(), anot, 0, 0, 1);\r
532         }\r
533         else\r
534         {\r
535           jaa = new jalview.datamodel.AlignmentAnnotation(an[i].getLabel(),\r
536               an[i].getDescription(), anot);\r
537         }\r
538 \r
539         al.addAnnotation(jaa);\r
540       }\r
541     }\r
542 \r
543     /////////////////////////////////\r
544     // LOAD VIEWPORT\r
545     Viewport[] views = jms.getViewport();\r
546     Viewport view = views[0]; // DEAL WITH MULTIPLE VIEWPORTS LATER\r
547 \r
548     AlignFrame af = new AlignFrame(al);\r
549 \r
550     //  af.changeColour() );\r
551     /////////////////////////\r
552     //LOAD GROUPS\r
553     if (jms.getJGroupCount() > 0)\r
554     {\r
555       JGroup[] groups = jms.getJGroup();\r
556 \r
557       for (int i = 0; i < groups.length; i++)\r
558       {\r
559         ColourSchemeI cs = null;\r
560 \r
561         if (groups[i].getColour() != null)\r
562         {\r
563           if (groups[i].getColour().startsWith("ucs"))\r
564           {\r
565             cs = GetUserColourScheme(jms, groups[i].getColour());\r
566           }\r
567           else\r
568           {\r
569             cs = ColourSchemeProperty.getColour(al,\r
570                                                 groups[i].getColour());\r
571           }\r
572 \r
573           if (cs instanceof ResidueColourScheme)\r
574           {\r
575             ( (ResidueColourScheme) cs).setThreshold(groups[i].getPidThreshold());\r
576           }\r
577           else if (cs instanceof ScoreColourScheme)\r
578           {\r
579             ( (ScoreColourScheme) cs).setThreshold(groups[i].getPidThreshold());\r
580           }\r
581         }\r
582 \r
583         Vector seqs = new Vector();\r
584         int[] ids = groups[i].getSeq();\r
585 \r
586         for (int s = 0; s < ids.length; s++)\r
587         {\r
588           seqs.addElement( (jalview.datamodel.SequenceI) seqids.elementAt(\r
589               ids[s]));\r
590         }\r
591 \r
592         jalview.datamodel.SequenceGroup sg = new jalview.datamodel.\r
593             SequenceGroup(seqs, groups[i].getName(),\r
594                           cs, groups[i].getDisplayBoxes(),\r
595                           groups[i].getDisplayText(), groups[i].getColourText(),\r
596                           groups[i].getStart(), groups[i].getEnd());\r
597 \r
598         sg.setOutlineColour(new java.awt.Color(\r
599             groups[i].getOutlineColour()));\r
600 \r
601 \r
602         if (groups[i].getConsThreshold() != 0)\r
603         {\r
604           jalview.analysis.Conservation c = new jalview.analysis.Conservation(\r
605               "All",\r
606               ResidueProperties.propHash, 3, sg.sequences, 0,\r
607               sg.getWidth() - 1);\r
608           c.calculate();\r
609           c.verdict(false, 25);\r
610           cs = new ConservationColourScheme(c, cs);\r
611           sg.cs = cs;\r
612         }\r
613 \r
614         al.addGroup(sg);\r
615       }\r
616     }\r
617 \r
618     Desktop.addInternalFrame(af, view.getTitle(),\r
619                              AlignFrame.NEW_WINDOW_WIDTH,\r
620                              AlignFrame.NEW_WINDOW_HEIGHT);\r
621     af.setBounds(view.getXpos(), view.getYpos(), view.getWidth(),\r
622                  view.getHeight());\r
623     af.viewport.setStartRes(view.getStartRes());\r
624     af.viewport.setStartSeq(view.getStartSeq());\r
625     af.viewport.showConservation = view.getShowConservation();\r
626     af.viewport.showQuality = view.getShowQuality();\r
627     af.viewport.showIdentity = view.getShowIdentity();\r
628     af.viewport.setAbovePIDThreshold(view.getPidSelected());\r
629     af.abovePIDThreshold.setSelected(view.getPidSelected());\r
630     af.viewport.setColourText(view.getShowColourText());\r
631     af.colourTextMenuItem.setSelected(view.getShowColourText());\r
632     af.viewport.setConservationSelected(view.getConservationSelected());\r
633     af.conservationMenuItem.setSelected(view.getConservationSelected());\r
634 \r
635     af.viewport.setShowFullId(view.getShowFullId());\r
636     af.fullSeqId.setSelected(view.getShowFullId());\r
637 \r
638     af.viewport.setFont(new java.awt.Font(view.getFontName(),\r
639                                           view.getFontStyle(), view.getFontSize()));\r
640     af.alignPanel.fontChanged();\r
641 \r
642     af.viewport.setRenderGaps(view.getRenderGaps());\r
643     af.renderGapsMenuItem.setSelected(view.getRenderGaps());\r
644 \r
645     af.viewport.setWrapAlignment(view.getWrapAlignment());\r
646     af.wrapMenuItem.setSelected(view.getWrapAlignment());\r
647 \r
648     if (view.getWrapAlignment())\r
649     {\r
650       af.alignPanel.setWrapAlignment(view.getWrapAlignment());\r
651     }\r
652     else\r
653     {\r
654       af.viewport.setShowAnnotation(view.getShowAnnotation());\r
655       af.alignPanel.setAnnotationVisible(view.getShowAnnotation());\r
656     }\r
657 \r
658     af.viewport.setShowBoxes(view.getShowBoxes());\r
659     af.viewBoxesMenuItem.setSelected(view.getShowBoxes());\r
660     af.viewport.setShowText(view.getShowText());\r
661     af.viewTextMenuItem.setSelected(view.getShowText());\r
662 \r
663     ColourSchemeI cs = null;\r
664 \r
665     if (view.getBgColour() != null)\r
666     {\r
667       if (view.getBgColour().startsWith("ucs"))\r
668       {\r
669         cs = GetUserColourScheme(jms, view.getBgColour());\r
670       }\r
671       else\r
672       {\r
673         cs = ColourSchemeProperty.getColour(al, view.getBgColour());\r
674       }\r
675 \r
676       if (cs instanceof ConservationColourScheme)\r
677       {\r
678         ( (ConservationColourScheme) cs).inc = view.getConsThreshold();\r
679       }\r
680 \r
681       if (cs instanceof ResidueColourScheme)\r
682       {\r
683         ( (ResidueColourScheme) cs).setThreshold(view.getPidThreshold());\r
684       }\r
685       else if (cs instanceof ScoreColourScheme)\r
686       {\r
687         ( (ScoreColourScheme) cs).setThreshold(view.getPidThreshold());\r
688       }\r
689     }\r
690 \r
691     af.viewport.setGlobalColourScheme(cs);\r
692 \r
693     af.viewport.setColourAppliesToAllGroups(false);\r
694     af.changeColour(af.viewport.getGlobalColourScheme());\r
695     af.viewport.setColourAppliesToAllGroups(true);\r
696 \r
697     if (view.getShowSequenceFeatures())\r
698     {\r
699       af.viewport.showSequenceFeatures = true;\r
700       af.sequenceFeatures.setSelected(true);\r
701       new SequenceFeatureFetcher(al, af.alignPanel);\r
702        al.featuresAdded = true;\r
703     }\r
704 \r
705     //LOAD TREES - THIS RELEASE ONLY ALLOWS 1 TREE\r
706     if (object.getVamsasModel().getTreeCount() > 0)\r
707     {\r
708       try\r
709       {\r
710         af.ShowNewickTree(new jalview.io.NewickFile(\r
711             (String) object.getVamsasModel().getTree(0)), "Tree");\r
712       }\r
713       catch (Exception ex)\r
714       {\r
715         ex.printStackTrace();\r
716       }\r
717     }\r
718   }\r
719 }\r