X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FJalview2XML.java;h=14650a9d5d102a637091312b238822c6b43d4c2d;hb=e826112670b160df06adb4030835624248ac4a8a;hp=e63984425888244bcd1e1fe8debdf455a7efeeed;hpb=362f2db1b01f3562784864a1d6ac5f7b9be0a18a;p=jalview.git diff --git a/src/jalview/gui/Jalview2XML.java b/src/jalview/gui/Jalview2XML.java index e639844..14650a9 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.6) - * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle - * + * 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 + * * 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; @@ -29,7 +29,6 @@ import javax.swing.*; import org.exolab.castor.xml.*; -import uk.ac.vamsas.objects.utils.MapList; import jalview.bin.Cache; import jalview.datamodel.Alignment; import jalview.datamodel.AlignmentAnnotation; @@ -37,16 +36,16 @@ import jalview.datamodel.AlignmentI; import jalview.datamodel.SequenceI; import jalview.schemabinding.version2.*; import jalview.schemes.*; -import jalview.structure.StructureSelectionManager; +import jalview.util.Platform; import jalview.util.jarInputStreamProvider; /** * 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 $ */ @@ -54,7 +53,7 @@ public class Jalview2XML { /** * create/return unique hash string for sq - * + * * @param sq * @return new or existing unique string for sq */ @@ -260,7 +259,7 @@ public class Jalview2XML /** * Writes a jalview project archive to the given Jar output stream. - * + * * @param jout */ public void SaveState(JarOutputStream jout) @@ -401,7 +400,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 @@ -426,9 +425,9 @@ public class Jalview2XML object.setCreationDate(new java.util.Date(System.currentTimeMillis())); object.setVersion(jalview.bin.Cache.getProperty("VERSION")); - jalview.datamodel.AlignmentI jal = av.alignment; + jalview.datamodel.AlignmentI jal = av.getAlignment(); - if (av.hasHiddenRows) + if (av.hasHiddenRows()) { jal = jal.getHiddenSequences().getFullAlignment(); } @@ -497,15 +496,13 @@ public class Jalview2XML jseq.setId(id); // jseq id should be a string not a number - if (av.hasHiddenRows) + if (av.hasHiddenRows()) { - jseq.setHidden(av.alignment.getHiddenSequences().isHidden(jds)); + jseq.setHidden(av.getAlignment().getHiddenSequences().isHidden(jds)); - if (av.hiddenRepSequences != null - && av.hiddenRepSequences.containsKey(jal.getSequenceAt(i))) + if (av.isHiddenRepSequence(jal.getSequenceAt(i))) { - jalview.datamodel.SequenceI[] reps = ((jalview.datamodel.SequenceGroup) av.hiddenRepSequences - .get(jal.getSequenceAt(i))).getSequencesInOrder(jal); + jalview.datamodel.SequenceI[] reps = av.getRepresentedSequences(jal.getSequenceAt(i)).getSequencesInOrder(jal); for (int h = 0; h < reps.length; h++) { @@ -612,7 +609,8 @@ public class Jalview2XML for (int smap = 0; smap < jmol.jmb.sequence[peid].length; smap++) { - if (jal.findIndex(jmol.jmb.sequence[peid][smap]) > -1) +// if (jal.findIndex(jmol.jmb.sequence[peid][smap]) > -1) + if (jds==jmol.jmb.sequence[peid][smap]) { StructureState state = new StructureState(); state.setVisible(true); @@ -706,9 +704,9 @@ public class Jalview2XML jms.addJSeq(jseq); } - if (av.hasHiddenRows) + if (av.hasHiddenRows()) { - jal = av.alignment; + jal = av.getAlignment(); } // SAVE MAPPINGS if (jal.getCodonFrames() != null && jal.getCodonFrames().length > 0) @@ -764,7 +762,7 @@ public class Jalview2XML { TreePanel tp = (TreePanel) frames[t]; - if (tp.treeCanvas.av.alignment == jal) + if (tp.treeCanvas.av.getAlignment() == jal) { Tree tree = new Tree(); tree.setTitle(tp.getTitle()); @@ -842,7 +840,8 @@ public class Jalview2XML an.setCentreColLabels(aa[i].centreColLabels); an.setScaleColLabels(aa[i].scaleColLabel); an.setShowAllColLabels(aa[i].showAllColLabels); - + an.setBelowAlignment(aa[i].belowAlignment); + if (aa[i].graph > 0) { an.setGraph(true); @@ -864,8 +863,8 @@ public class Jalview2XML an.setLabel(aa[i].label); - if (aa[i] == av.quality || aa[i] == av.conservation - || aa[i] == av.consensus || aa[i].autoCalculated) + if (aa[i] == av.getAlignmentQualityAnnot() || aa[i] == av.getAlignmentConservationAnnotation() + || aa[i] == av.getAlignmentConsensusAnnotation() || aa[i].autoCalculated) { // new way of indicating autocalculated annotation - an.setAutoCalculated(aa[i].autoCalculated); @@ -874,6 +873,12 @@ public class Jalview2XML { an.setScore(aa[i].getScore()); } + + if (aa[i].getCalcId()!=null) + { + an.setCalcId(aa[i].getCalcId()); + } + AnnotationElement ae; if (aa[i].annotations != null) { @@ -909,7 +914,9 @@ public class Jalview2XML an.addAnnotationElement(ae); if (aa[i].autoCalculated) { - // only write one non-null entry into the annotation row - sufficient to get the visualization attributes necessary to display data + // only write one non-null entry into the annotation row - + // sufficient to get the visualization attributes necessary to + // display data continue; } } @@ -925,13 +932,11 @@ public class Jalview2XML if (jal.getGroups() != null) { JGroup[] groups = new JGroup[jal.getGroups().size()]; - - for (int i = 0; i < groups.length; i++) + int i = -1; + for (jalview.datamodel.SequenceGroup sg:jal.getGroups()) { - groups[i] = new JGroup(); + groups[++i] = new JGroup(); - jalview.datamodel.SequenceGroup sg = (jalview.datamodel.SequenceGroup) jal - .getGroups().elementAt(i); groups[i].setStart(sg.getStartRes()); groups[i].setEnd(sg.getEndRes()); groups[i].setName(sg.getName()); @@ -1117,40 +1122,43 @@ public class Jalview2XML Vector settingsAdded = new Vector(); Object gstyle = null; GraduatedColor gcol = null; - for (int ro = 0; ro < renderOrder.length; ro++) + if (renderOrder != null) { - gstyle = ap.seqPanel.seqCanvas.getFeatureRenderer() - .getFeatureStyle(renderOrder[ro]); - Setting setting = new Setting(); - setting.setType(renderOrder[ro]); - if (gstyle instanceof GraduatedColor) - { - gcol = (GraduatedColor) gstyle; - setting.setColour(gcol.getMaxColor().getRGB()); - setting.setMincolour(gcol.getMinColor().getRGB()); - setting.setMin(gcol.getMin()); - setting.setMax(gcol.getMax()); - setting.setColourByLabel(gcol.isColourByLabel()); - setting.setAutoScale(gcol.isAutoScale()); - setting.setThreshold(gcol.getThresh()); - setting.setThreshstate(gcol.getThreshType()); - } - else + for (int ro = 0; ro < renderOrder.length; ro++) { - setting.setColour(ap.seqPanel.seqCanvas.getFeatureRenderer() - .getColour(renderOrder[ro]).getRGB()); - } + gstyle = ap.seqPanel.seqCanvas.getFeatureRenderer() + .getFeatureStyle(renderOrder[ro]); + Setting setting = new Setting(); + setting.setType(renderOrder[ro]); + if (gstyle instanceof GraduatedColor) + { + gcol = (GraduatedColor) gstyle; + setting.setColour(gcol.getMaxColor().getRGB()); + setting.setMincolour(gcol.getMinColor().getRGB()); + setting.setMin(gcol.getMin()); + setting.setMax(gcol.getMax()); + setting.setColourByLabel(gcol.isColourByLabel()); + setting.setAutoScale(gcol.isAutoScale()); + setting.setThreshold(gcol.getThresh()); + setting.setThreshstate(gcol.getThreshType()); + } + else + { + setting.setColour(ap.seqPanel.seqCanvas.getFeatureRenderer() + .getColour(renderOrder[ro]).getRGB()); + } - setting.setDisplay(av.featuresDisplayed - .containsKey(renderOrder[ro])); - float rorder = ap.seqPanel.seqCanvas.getFeatureRenderer().getOrder( - renderOrder[ro]); - if (rorder > -1) - { - setting.setOrder(rorder); + setting.setDisplay(av.featuresDisplayed + .containsKey(renderOrder[ro])); + float rorder = ap.seqPanel.seqCanvas.getFeatureRenderer() + .getOrder(renderOrder[ro]); + if (rorder > -1) + { + setting.setOrder(rorder); + } + fs.addSetting(setting); + settingsAdded.addElement(renderOrder[ro]); } - fs.addSetting(setting); - settingsAdded.addElement(renderOrder[ro]); } // Make sure we save none displayed feature settings @@ -1199,7 +1207,7 @@ public class Jalview2XML } - if (av.hasHiddenColumns) + if (av.hasHiddenColumns()) { if (av.getColumnSelection() == null || av.getColumnSelection().getHiddenColumns() == null) @@ -1262,7 +1270,7 @@ public class Jalview2XML /** * Construct a unique ID for jvobj using either existing bindings or if none * exist, the result of the hashcode call for the object. - * + * * @param jvobj * jalview data object * @return unique ID for referring to jvobj @@ -1293,7 +1301,7 @@ public class Jalview2XML /** * return local jalview object mapped to ID, if it exists - * + * * @param idcode * (may be null) * @return null or object bound to idcode @@ -1529,7 +1537,7 @@ public class Jalview2XML /** * Load a jalview project archive from a jar file - * + * * @param file * - HTTP URL or filename */ @@ -1573,6 +1581,7 @@ public class Jalview2XML return new jarInputStreamProvider() { + @Override public JarInputStream getJarInputStream() throws IOException { if (_url != null) @@ -1585,6 +1594,7 @@ public class Jalview2XML } } + @Override public String getFilename() { return file; @@ -1597,7 +1607,7 @@ public class Jalview2XML * initialise uniqueSetSuffix, seqRefIds, viewportsAdded and frefedSequence * themselves. Any null fields will be initialised with default values, * non-null fields are left alone. - * + * * @param jprovider * @return */ @@ -1749,6 +1759,7 @@ public class Jalview2XML { javax.swing.SwingUtilities.invokeLater(new Runnable() { + @Override public void run() { JOptionPane.showInternalMessageDialog(Desktop.desktop, @@ -1773,7 +1784,7 @@ public class Jalview2XML * Currently (28th Sep 2008) things will go horribly wrong in vamsas document * sync if this is set to true. */ - private boolean updateLocalViews = false; + private final boolean updateLocalViews = false; String loadPDBFile(jarInputStreamProvider jprovider, String pdbId) { @@ -1817,9 +1828,9 @@ public class Jalview2XML } ; out.close(); - - alreadyLoadedPDB.put(pdbId, outFile.getAbsolutePath()); - return outFile.getAbsolutePath(); + String t=outFile.getAbsolutePath(); + alreadyLoadedPDB.put(pdbId, t); + return t; } else { @@ -1854,7 +1865,7 @@ public class Jalview2XML /** * Load alignment frame from jalview XML DOM object - * + * * @param object * DOM * @param file @@ -1892,7 +1903,7 @@ public class Jalview2XML if (seqRefIds.get(seqId) != null) { - tmpseqs.add((jalview.datamodel.Sequence) seqRefIds.get(seqId)); + tmpseqs.add(seqRefIds.get(seqId)); multipleView = true; } else @@ -1915,7 +1926,7 @@ public class Jalview2XML hiddenSeqs = new Vector(); } - hiddenSeqs.addElement((jalview.datamodel.Sequence) seqRefIds + hiddenSeqs.addElement(seqRefIds .get(seqId)); } @@ -2088,7 +2099,7 @@ public class Jalview2XML /** * store any annotations which forward reference a group's ID */ - Hashtable> groupAnnotRefs = new Hashtable>(); + Hashtable> groupAnnotRefs = new Hashtable>(); if (vamsasSet.getAnnotationCount() > 0) { @@ -2111,7 +2122,9 @@ public class Jalview2XML an[i].setAutoCalculated(true); } } - if (autoForView || (an[i].hasAutoCalculated() && an[i].isAutoCalculated())) { + if (autoForView + || (an[i].hasAutoCalculated() && an[i].isAutoCalculated())) + { // remove ID - we don't recover annotation from other views for // view-specific annotation an[i].setId(null); @@ -2168,12 +2181,13 @@ public class Jalview2XML if (an[i].getGraph()) { - float llim=0,hlim=0; - // if (autoForView || an[i].isAutoCalculated()) { - // hlim=11f; - // } + float llim = 0, hlim = 0; + // if (autoForView || an[i].isAutoCalculated()) { + // hlim=11f; + // } jaa = new jalview.datamodel.AlignmentAnnotation(an[i].getLabel(), - an[i].getDescription(), anot, llim, hlim, an[i].getGraphType()); + an[i].getDescription(), anot, llim, hlim, + an[i].getGraphType()); jaa.graphGroup = an[i].getGraphGroup(); @@ -2185,9 +2199,11 @@ public class Jalview2XML an[i].getThresholdLine().getColour()))); } - if (autoForView || an[i].isAutoCalculated()) { - // Hardwire the symbol display line to ensure that labels for histograms are displayed - jaa.hasText=true; + if (autoForView || an[i].isAutoCalculated()) + { + // Hardwire the symbol display line to ensure that labels for + // histograms are displayed + jaa.hasText = true; } } else @@ -2218,10 +2234,12 @@ public class Jalview2XML // and make a note of any group association if (an[i].getGroupRef() != null && an[i].getGroupRef().length() > 0) { - ArrayList aal=groupAnnotRefs.get(an[i].getGroupRef()); - if (aal==null) { + ArrayList aal = groupAnnotRefs + .get(an[i].getGroupRef()); + if (aal == null) + { aal = new ArrayList(); - groupAnnotRefs.put(an[i].getGroupRef(),aal); + groupAnnotRefs.put(an[i].getGroupRef(), aal); } aal.add(jaa); } @@ -2251,13 +2269,21 @@ public class Jalview2XML { jaa.graphHeight = an[i].getGraphHeight(); } + if (an[i].hasBelowAlignment()) + { + jaa.belowAlignment=an[i].isBelowAlignment(); + } + jaa.setCalcId(an[i].getCalcId()); + if (jaa.autoCalculated) { autoAlan.add(new JvAnnotRow(i, jaa)); - } else + } + else // if (!autoForView) { - // add autocalculated group annotation and any user created annotation for the view + // add autocalculated group annotation and any user created annotation + // for the view al.addAnnotation(jaa); } } @@ -2352,19 +2378,24 @@ public class Jalview2XML .get(groups[i].getId()); if (jaal != null) { - for (jalview.datamodel.AlignmentAnnotation jaa:jaal) { + for (jalview.datamodel.AlignmentAnnotation jaa : jaal) + { jaa.groupRef = sg; if (jaa.autoCalculated) { - // match up and try to set group autocalc alignment row for this annotation - if (jaa.label.startsWith("Consensus for ")) { + // match up and try to set group autocalc alignment row for this + // annotation + if (jaa.label.startsWith("Consensus for ")) + { sg.setConsensus(jaa); } - // match up and try to set group autocalc alignment row for this annotation - if (jaa.label.startsWith("Conservation for ")) { + // match up and try to set group autocalc alignment row for this + // annotation + if (jaa.label.startsWith("Conservation for ")) + { sg.setConservationRow(jaa); - } } + } } } } @@ -2575,15 +2606,16 @@ public class Jalview2XML { x, y, width, height }, "", new Hashtable(), new boolean[] { false, false, true } }); - // Legacy pre-2.7 conversion JAL-823 : - // do not assume any view has to be linked for colour by sequence + // Legacy pre-2.7 conversion JAL-823 : + // do not assume any view has to be linked for colour by + // sequence } - + // assemble String[] { pdb files }, String[] { id for each // file }, orig_fileloc, SequenceI[][] {{ seqs_file 1 }, { // seqs_file 2}, boolean[] { // linkAlignPanel,superposeWithAlignpanel}} from hash - Object[] jmoldat = (Object[]) jmolViewIds.get(sviewid); + Object[] jmoldat = jmolViewIds.get(sviewid); ((boolean[]) jmoldat[3])[0] |= ids[p].getStructureState(s) .hasAlignwithAlignPanel() ? ids[p].getStructureState( s).getAlignwithAlignPanel() : false; @@ -2593,7 +2625,9 @@ public class Jalview2XML .getStructureState(s).getColourwithAlignPanel() : false; // default for pre-2.7 projects is that Jmol colouring is enabled - ((boolean[])jmoldat[3])[2] &=ids[p].getStructureState(s).hasColourByJmol() ? ids[p].getStructureState(s).getColourByJmol() : true; + ((boolean[]) jmoldat[3])[2] &= ids[p].getStructureState(s) + .hasColourByJmol() ? ids[p].getStructureState(s) + .getColourByJmol() : true; if (((String) jmoldat[1]).length() < ids[p] .getStructureState(s).getContent().length()) @@ -2602,22 +2636,33 @@ public class Jalview2XML jmoldat[1] = ids[p].getStructureState(s).getContent(); } } - Object[] seqstrmaps = (Object[]) ((Hashtable) jmoldat[2]) - .get(ids[p].getFile()); - if (seqstrmaps == null) + if (ids[p].getFile() != null) { - ((Hashtable) jmoldat[2]).put( - new File(ids[p].getFile()).toString(), - seqstrmaps = new Object[] - { pdbFile, ids[p].getId(), new Vector(), - new Vector() }); + File mapkey=new File(ids[p].getFile()); + Object[] seqstrmaps = (Object[]) ((Hashtable) jmoldat[2]) + .get(mapkey); + if (seqstrmaps == null) + { + ((Hashtable) jmoldat[2]).put( + mapkey, + seqstrmaps = new Object[] + { pdbFile, ids[p].getId(), new Vector(), + new Vector() }); + } + if (!((Vector) seqstrmaps[2]).contains(seq)) + { + ((Vector) seqstrmaps[2]).addElement(seq); + // ((Vector)seqstrmaps[3]).addElement(n) : + // in principle, chains + // should be stored here : do we need to + // TODO: store and recover seq/pdb_id : + // chain mappings + } } - if (!((Vector) seqstrmaps[2]).contains(seq)) + else { - ((Vector) seqstrmaps[2]).addElement(seq); - // ((Vector)seqstrmaps[3]).addElement(n) : in principle, chains - // should be stored here : do we need to - // TODO: store and recover seq/pdb_id : chain mappings + errorMessage = ("The Jmol views in this project were imported\nfrom an older version of Jalview.\nPlease review the sequence colour associations\nin the Colour by section of the Jmol View menu.\n\nIn the case of problems, see note at\nhttp://issues.jalview.org/browse/JAL-747"); + warn(errorMessage); } } } @@ -2632,8 +2677,8 @@ public class Jalview2XML Object[] svattrib = entry.getValue(); int[] geom = (int[]) svattrib[0]; String state = (String) svattrib[1]; - Hashtable oldFiles = (Hashtable) svattrib[2]; - final boolean useinJmolsuperpos = ((boolean[]) svattrib[3])[0], usetoColourbyseq = ((boolean[]) svattrib[3])[1], jmolColouring=((boolean[])svattrib[3])[2]; + Hashtable oldFiles = (Hashtable) svattrib[2]; + final boolean useinJmolsuperpos = ((boolean[]) svattrib[3])[0], usetoColourbyseq = ((boolean[]) svattrib[3])[1], jmolColouring = ((boolean[]) svattrib[3])[2]; int x = geom[0], y = geom[1], width = geom[2], height = geom[3]; // collate the pdbfile -> sequence mappings from this view Vector pdbfilenames = new Vector(); @@ -2696,6 +2741,8 @@ public class Jalview2XML { newFileLoc = new StringBuffer(); } + do { + // look for next filename in load statement newFileLoc.append(state.substring(cp, ncp = (state.indexOf("\"", ncp + 1) + 1))); String oldfilenam = state.substring(ncp, @@ -2703,16 +2750,16 @@ public class Jalview2XML // recover the new mapping data for this old filename // have to normalize filename - since Jmol and jalview do filename // translation differently. - Object[] filedat = oldFiles.get(new File(oldfilenam) - .toString()); - newFileLoc.append(((String) filedat[0])); + Object[] filedat = oldFiles.get(new File(oldfilenam)); + newFileLoc.append(Platform.escapeString((String) filedat[0])); pdbfilenames.addElement((String) filedat[0]); pdbids.addElement((String) filedat[1]); - seqmaps.addElement((SequenceI[]) ((Vector) filedat[2]) + seqmaps.addElement(((Vector) filedat[2]) .toArray(new SequenceI[0])); newFileLoc.append("\""); cp = ecp + 1; // advance beyond last \" and set cursor so we can // look for next file statement. + } while ((ncp=state.indexOf("/*file*/",cp))>-1); } if (cp > 0) { @@ -2725,7 +2772,7 @@ public class Jalview2XML .print("Ignoring incomplete Jmol state for PDB ids: "); newFileLoc = new StringBuffer(state); newFileLoc.append("; load append "); - for (String id : oldFiles.keySet()) + for (File id : oldFiles.keySet()) { // add this and any other pdb files that should be present in // the viewer @@ -2734,7 +2781,7 @@ public class Jalview2XML newFileLoc.append(((String) filedat[0])); pdbfilenames.addElement((String) filedat[0]); pdbids.addElement((String) filedat[1]); - seqmaps.addElement((SequenceI[]) ((Vector) filedat[2]) + seqmaps.addElement(((Vector) filedat[2]) .toArray(new SequenceI[0])); newFileLoc.append(" \""); newFileLoc.append((String) filedat[0]); @@ -2770,10 +2817,10 @@ public class Jalview2XML // TODO: assemble String[] { pdb files }, String[] { id for each // file }, orig_fileloc, SequenceI[][] {{ seqs_file 1 }, { // seqs_file 2}} from hash - final String[] pdbf = (String[]) pdbfilenames - .toArray(new String[pdbfilenames.size()]), id = (String[]) pdbids + final String[] pdbf = pdbfilenames + .toArray(new String[pdbfilenames.size()]), id = pdbids .toArray(new String[pdbids.size()]); - final SequenceI[][] sq = (SequenceI[][]) seqmaps + final SequenceI[][] sq = seqmaps .toArray(new SequenceI[seqmaps.size()][]); final String fileloc = newFileLoc.toString(), vid = sviewid; final AlignFrame alf = af; @@ -2783,14 +2830,15 @@ public class Jalview2XML { javax.swing.SwingUtilities.invokeAndWait(new Runnable() { + @Override public void run() { AppJmol sview = null; try { sview = new AppJmol(pdbf, id, sq, alf.alignPanel, - useinJmolsuperpos, usetoColourbyseq, jmolColouring, fileloc, - rect, vid); + useinJmolsuperpos, usetoColourbyseq, + jmolColouring, fileloc, rect, vid); } catch (OutOfMemoryError ex) { new OOMWarning("restoring structure view for PDB id " @@ -2823,35 +2871,36 @@ public class Jalview2XML // add mapping for sequences in this view to an already open Jmol // instance - for (String id : oldFiles.keySet()) + for (File id : oldFiles.keySet()) { // add this and any other pdb files that should be present in the // viewer Object[] filedat = oldFiles.get(id); String pdbFile = (String) filedat[0]; - SequenceI[] seq = (SequenceI[]) ((Vector) filedat[2]) + SequenceI[] seq = ((Vector) filedat[2]) .toArray(new SequenceI[0]); - ((AppJmol) comp).jmb.ssm.setMapping(seq, null, pdbFile, - jalview.io.AppletFormatAdapter.FILE); - ((AppJmol) comp).jmb.addSequenceForStructFile(pdbFile, seq); + comp.jmb.ssm.setMapping(seq, null, pdbFile, + jalview.io.AppletFormatAdapter.FILE); + comp.jmb.addSequenceForStructFile(pdbFile, seq); } // and add the AlignmentPanel's reference to the Jmol view - ((AppJmol) comp).addAlignmentPanel(ap); + comp.addAlignmentPanel(ap); if (useinJmolsuperpos) { - ((AppJmol) comp).useAlignmentPanelForSuperposition(ap); + comp.useAlignmentPanelForSuperposition(ap); } else { - ((AppJmol) comp).excludeAlignmentPanelForSuperposition(ap); + comp.excludeAlignmentPanelForSuperposition(ap); } if (usetoColourbyseq) { - ((AppJmol) comp).useAlignmentPanelForColourbyseq(ap, !jmolColouring); + comp.useAlignmentPanelForColourbyseq(ap, + !jmolColouring); } else { - ((AppJmol) comp).excludeAlignmentPanelForColourbyseq(ap); + comp.excludeAlignmentPanelForColourbyseq(ap); } } } @@ -2874,7 +2923,7 @@ public class Jalview2XML for (int i = 0; i < JSEQ.length; i++) { - af.viewport.setSequenceColour(af.viewport.alignment.getSequenceAt(i), + af.viewport.setSequenceColour(af.viewport.getAlignment().getSequenceAt(i), new java.awt.Color(JSEQ[i].getColour())); } @@ -2885,7 +2934,7 @@ public class Jalview2XML jalview.gui.AlignViewport av = (jalview.gui.AlignViewport) viewportsAdded .get(uniqueSeqSetId); - af.viewport.sequenceSetID = uniqueSeqSetId; + af.viewport.setSequenceSetId(uniqueSeqSetId); if (av != null) { // propagate shared settings to this new view @@ -2975,18 +3024,18 @@ public class Jalview2XML else if (view.getBgColour().startsWith("Annotation")) { // int find annotation - if (af.viewport.alignment.getAlignmentAnnotation() != null) + if (af.viewport.getAlignment().getAlignmentAnnotation() != null) { - for (int i = 0; i < af.viewport.alignment + for (int i = 0; i < af.viewport.getAlignment() .getAlignmentAnnotation().length; i++) { - if (af.viewport.alignment.getAlignmentAnnotation()[i].label + if (af.viewport.getAlignment().getAlignmentAnnotation()[i].label .equals(view.getAnnotationColours().getAnnotation())) { - if (af.viewport.alignment.getAlignmentAnnotation()[i] + if (af.viewport.getAlignment().getAlignmentAnnotation()[i] .getThreshold() == null) { - af.viewport.alignment.getAlignmentAnnotation()[i] + af.viewport.getAlignment().getAlignmentAnnotation()[i] .setThreshold(new jalview.datamodel.GraphLine(view .getAnnotationColours().getThreshold(), "Threshold", java.awt.Color.black) @@ -2998,7 +3047,7 @@ public class Jalview2XML .equals("None")) { cs = new AnnotationColourGradient( - af.viewport.alignment.getAlignmentAnnotation()[i], + af.viewport.getAlignment().getAlignmentAnnotation()[i], new java.awt.Color(view.getAnnotationColours() .getMinColour()), new java.awt.Color(view .getAnnotationColours().getMaxColour()), @@ -3008,7 +3057,7 @@ public class Jalview2XML .startsWith("ucs")) { cs = new AnnotationColourGradient( - af.viewport.alignment.getAlignmentAnnotation()[i], + af.viewport.getAlignment().getAlignmentAnnotation()[i], GetUserColourScheme(jms, view .getAnnotationColours().getColourScheme()), view.getAnnotationColours().getAboveThreshold()); @@ -3016,7 +3065,7 @@ public class Jalview2XML else { cs = new AnnotationColourGradient( - af.viewport.alignment.getAlignmentAnnotation()[i], + af.viewport.getAlignment().getAlignmentAnnotation()[i], ColourSchemeProperty.getColour(al, view .getAnnotationColours().getColourScheme()), view.getAnnotationColours().getAboveThreshold()); @@ -3027,8 +3076,8 @@ public class Jalview2XML { for (int g = 0; g < al.getGroups().size(); g++) { - jalview.datamodel.SequenceGroup sg = (jalview.datamodel.SequenceGroup) al - .getGroups().elementAt(g); + jalview.datamodel.SequenceGroup sg = al + .getGroups().get(g); if (sg.cs == null) { @@ -3039,7 +3088,7 @@ public class Jalview2XML * if * (view.getAnnotationColours().getColourScheme().equals("None" * )) { sg.cs = new AnnotationColourGradient( - * af.viewport.alignment.getAlignmentAnnotation()[i], new + * af.viewport.getAlignment().getAlignmentAnnotation()[i], new * java.awt.Color(view.getAnnotationColours(). * getMinColour()), new * java.awt.Color(view.getAnnotationColours(). @@ -3048,7 +3097,7 @@ public class Jalview2XML */ { sg.cs = new AnnotationColourGradient( - af.viewport.alignment.getAlignmentAnnotation()[i], + af.viewport.getAlignment().getAlignmentAnnotation()[i], sg.cs, view.getAnnotationColours() .getAboveThreshold()); } @@ -3070,7 +3119,7 @@ public class Jalview2XML if (cs != null) { cs.setThreshold(view.getPidThreshold(), true); - cs.setConsensus(af.viewport.hconsensus); + cs.setConsensus(af.viewport.getSequenceConsensusHash()); } } @@ -3096,8 +3145,8 @@ public class Jalview2XML } if (view.hasIgnoreGapsinConsensus()) { - af.viewport.ignoreGapsInConsensusCalculation = view - .getIgnoreGapsinConsensus(); + af.viewport.setIgnoreGapsConsensus(view + .getIgnoreGapsinConsensus(), null); } if (view.hasFollowHighlight()) { @@ -3118,11 +3167,11 @@ public class Jalview2XML } if (view.hasShowSequenceLogo()) { - af.viewport.showSequenceLogo = view.getShowSequenceLogo(); + af.viewport.setShowSequenceLogo(view.getShowSequenceLogo()); } else { - af.viewport.showSequenceLogo = false; + af.viewport.setShowSequenceLogo(false); } if (view.hasShowDbRefTooltip()) { @@ -3229,14 +3278,14 @@ public class Jalview2XML Desktop.addInternalFrame(af, view.getTitle(), view.getWidth(), view.getHeight()); af.alignPanel.updateAnnotation(false); // recompute any autoannotation - reorderAutoannotation(af,al,autoAlan); + reorderAutoannotation(af, al, autoAlan); return af; } private void reorderAutoannotation(AlignFrame af, Alignment al, ArrayList autoAlan) { - // copy over visualization settings for autocalculated annotation in the + // copy over visualization settings for autocalculated annotation in the // view if (al.getAlignmentAnnotation() != null) { @@ -3267,32 +3316,34 @@ public class Jalview2XML if (valan != null) { // delete the auto calculated row from the alignment - al.deleteAnnotation(al.getAlignmentAnnotation()[h],false); + al.deleteAnnotation(al.getAlignmentAnnotation()[h], false); hSize--; h--; if (valan != nullAnnot) { - if (jalan!=valan.template) { + if (jalan != valan.template) + { // newly created autoannotation row instance // so keep a reference to the visible annotation row // and copy over all relevant attributes - if (valan.template.graphHeight >= 0) - - { - jalan.graphHeight = valan.template.graphHeight; - } - jalan.visible = valan.template.visible; + if (valan.template.graphHeight >= 0) + + { + jalan.graphHeight = valan.template.graphHeight; + } + jalan.visible = valan.template.visible; } reorder.add(new JvAnnotRow(valan.order, jalan)); } } } } - int s=0,srt[] = new int[reorder.size()]; + int s = 0, srt[] = new int[reorder.size()]; JvAnnotRow[] rws = new JvAnnotRow[reorder.size()]; - for (JvAnnotRow jvar:reorder) { + for (JvAnnotRow jvar : reorder) + { rws[s] = jvar; - srt[s++]=jvar.order; + srt[s++] = jvar.order; } reorder.clear(); jalview.util.QuickSort.sort(srt, rws); @@ -3309,7 +3360,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) { @@ -3320,7 +3371,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 */ @@ -3393,7 +3444,7 @@ public class Jalview2XML } /** - * + * * @param vamsasSeq * sequence definition to create/merge dataset sequence for * @param ds @@ -3411,7 +3462,7 @@ public class Jalview2XML jalview.datamodel.SequenceI dsq = null; if (sq != null && sq.getDatasetSequence() != null) { - dsq = (jalview.datamodel.SequenceI) sq.getDatasetSequence(); + dsq = sq.getDatasetSequence(); } String sqid = vamsasSeq.getDsseqid(); @@ -3517,7 +3568,7 @@ public class Jalview2XML /** * make a new dataset ID for this jalview dataset alignment - * + * * @param dataset * @return */ @@ -3684,11 +3735,11 @@ public class Jalview2XML af.closeMenuItem_actionPerformed(true); /* - * if(ap.av.alignment.getAlignmentAnnotation()!=null) { for(int i=0; - * i