X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FJalview2XML.java;h=8ddd050371416a037be741bbaea3c0c0fd3e2313;hb=cca50cb3aee94f3ed1a5e504d45b8d8b665f8c5b;hp=f9e782fc97435114e0fe7dfaf94bbf61adb1c46f;hpb=47168f025aefdaa044802bd5f8f510ffe43a4808;p=jalview.git diff --git a/src/jalview/gui/Jalview2XML.java b/src/jalview/gui/Jalview2XML.java index f9e782f..8ddd050 100644 --- a/src/jalview/gui/Jalview2XML.java +++ b/src/jalview/gui/Jalview2XML.java @@ -20,25 +20,52 @@ */ package jalview.gui; -import java.awt.Rectangle; -import java.io.*; -import java.lang.reflect.InvocationTargetException; -import java.net.*; -import java.util.*; -import java.util.Map.Entry; -import java.util.jar.*; - -import javax.swing.*; - -import org.exolab.castor.xml.*; - +import jalview.api.structures.JalviewStructureDisplayI; import jalview.bin.Cache; import jalview.datamodel.Alignment; import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; import jalview.datamodel.SequenceI; -import jalview.schemabinding.version2.*; -import jalview.schemes.*; +import jalview.schemabinding.version2.AlcodMap; +import jalview.schemabinding.version2.Alcodon; +import jalview.schemabinding.version2.AlcodonFrame; +import jalview.schemabinding.version2.Annotation; +import jalview.schemabinding.version2.AnnotationColours; +import jalview.schemabinding.version2.AnnotationElement; +import jalview.schemabinding.version2.CalcIdParam; +import jalview.schemabinding.version2.DBRef; +import jalview.schemabinding.version2.Features; +import jalview.schemabinding.version2.Group; +import jalview.schemabinding.version2.HiddenColumns; +import jalview.schemabinding.version2.JGroup; +import jalview.schemabinding.version2.JSeq; +import jalview.schemabinding.version2.JalviewModel; +import jalview.schemabinding.version2.JalviewModelSequence; +import jalview.schemabinding.version2.MapListFrom; +import jalview.schemabinding.version2.MapListTo; +import jalview.schemabinding.version2.Mapping; +import jalview.schemabinding.version2.MappingChoice; +import jalview.schemabinding.version2.OtherData; +import jalview.schemabinding.version2.PdbentryItem; +import jalview.schemabinding.version2.Pdbids; +import jalview.schemabinding.version2.Property; +import jalview.schemabinding.version2.Sequence; +import jalview.schemabinding.version2.SequenceSet; +import jalview.schemabinding.version2.SequenceSetProperties; +import jalview.schemabinding.version2.Setting; +import jalview.schemabinding.version2.StructureState; +import jalview.schemabinding.version2.ThresholdLine; +import jalview.schemabinding.version2.Tree; +import jalview.schemabinding.version2.UserColours; +import jalview.schemabinding.version2.Viewport; +import jalview.schemes.AnnotationColourGradient; +import jalview.schemes.ColourSchemeI; +import jalview.schemes.ColourSchemeProperty; +import jalview.schemes.GraduatedColor; +import jalview.schemes.ResidueColourScheme; +import jalview.schemes.ResidueProperties; +import jalview.structure.StructureSelectionManager; +import jalview.util.MessageManager; import jalview.util.Platform; import jalview.util.jarInputStreamProvider; import jalview.viewmodel.AlignmentViewport; @@ -49,6 +76,41 @@ import jalview.ws.params.ArgumentI; import jalview.ws.params.AutoCalcSetting; import jalview.ws.params.WsParamSetI; +import java.awt.Rectangle; +import java.io.BufferedReader; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.io.PrintWriter; +import java.lang.reflect.InvocationTargetException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.HashSet; +import java.util.Hashtable; +import java.util.IdentityHashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map.Entry; +import java.util.Set; +import java.util.StringTokenizer; +import java.util.Vector; +import java.util.jar.JarEntry; +import java.util.jar.JarInputStream; +import java.util.jar.JarOutputStream; + +import javax.swing.JInternalFrame; +import javax.swing.JOptionPane; +import javax.swing.SwingUtilities; + +import org.exolab.castor.xml.Unmarshaller; + /** * Write out the current jalview desktop state as a Jalview XML stream. * @@ -436,7 +498,7 @@ public class Jalview2XML for (String dssids : dsses.keySet()) { AlignFrame _af = dsses.get(dssids); - String jfileName = fileName + " Dataset for " + _af.getTitle(); + String jfileName = MessageManager.formatMessage("label.dataset_for", new String[]{fileName,_af.getTitle()}); if (!jfileName.endsWith(".xml")) { jfileName = jfileName + ".xml"; @@ -676,7 +738,9 @@ public class Jalview2XML .startsWith( jmol.jmb.pdbentry[peid].getId() .toLowerCase()))) + { continue; + } if (matchedFile == null) { matchedFile = jmol.jmb.pdbentry[peid].getFile(); @@ -1063,7 +1127,7 @@ public class Jalview2XML view.setShowBoxes(av.getShowBoxes()); view.setShowColourText(av.getColourText()); view.setShowFullId(av.getShowJVSuffix()); - view.setRightAlignIds(av.rightAlignIds); + view.setRightAlignIds(av.isRightAlignIds()); view.setShowSequenceFeatures(av.showSequenceFeatures); view.setShowText(av.getShowText()); view.setShowUnconserved(av.getShowUnconserved()); @@ -1085,7 +1149,7 @@ public class Jalview2XML { jalview.schemabinding.version2.FeatureSettings fs = new jalview.schemabinding.version2.FeatureSettings(); - String[] renderOrder = ap.seqPanel.seqCanvas.getFeatureRenderer().renderOrder; + String[] renderOrder = ap.getSeqPanel().seqCanvas.getFeatureRenderer().renderOrder; Vector settingsAdded = new Vector(); Object gstyle = null; @@ -1094,7 +1158,7 @@ public class Jalview2XML { for (int ro = 0; ro < renderOrder.length; ro++) { - gstyle = ap.seqPanel.seqCanvas.getFeatureRenderer() + gstyle = ap.getSeqPanel().seqCanvas.getFeatureRenderer() .getFeatureStyle(renderOrder[ro]); Setting setting = new Setting(); setting.setType(renderOrder[ro]); @@ -1112,13 +1176,13 @@ public class Jalview2XML } else { - setting.setColour(ap.seqPanel.seqCanvas.getFeatureRenderer() + setting.setColour(ap.getSeqPanel().seqCanvas.getFeatureRenderer() .getColour(renderOrder[ro]).getRGB()); } setting.setDisplay(av.featuresDisplayed .containsKey(renderOrder[ro])); - float rorder = ap.seqPanel.seqCanvas.getFeatureRenderer() + float rorder = ap.getSeqPanel().seqCanvas.getFeatureRenderer() .getOrder(renderOrder[ro]); if (rorder > -1) { @@ -1130,7 +1194,7 @@ public class Jalview2XML } // Make sure we save none displayed feature settings - Iterator en = ap.seqPanel.seqCanvas.getFeatureRenderer().featureColours + Iterator en = ap.getSeqPanel().seqCanvas.getFeatureRenderer().featureColours .keySet().iterator(); while (en.hasNext()) { @@ -1142,11 +1206,11 @@ public class Jalview2XML Setting setting = new Setting(); setting.setType(key); - setting.setColour(ap.seqPanel.seqCanvas.getFeatureRenderer() + setting.setColour(ap.getSeqPanel().seqCanvas.getFeatureRenderer() .getColour(key).getRGB()); setting.setDisplay(false); - float rorder = ap.seqPanel.seqCanvas.getFeatureRenderer() + float rorder = ap.getSeqPanel().seqCanvas.getFeatureRenderer() .getOrder(key); if (rorder > -1) { @@ -1155,7 +1219,7 @@ public class Jalview2XML fs.addSetting(setting); settingsAdded.addElement(key); } - en = ap.seqPanel.seqCanvas.getFeatureRenderer().featureGroups + en = ap.getSeqPanel().seqCanvas.getFeatureRenderer().featureGroups .keySet().iterator(); Vector groupsAdded = new Vector(); while (en.hasNext()) @@ -1167,7 +1231,7 @@ public class Jalview2XML } Group g = new Group(); g.setName(grp); - g.setDisplay(((Boolean) ap.seqPanel.seqCanvas + g.setDisplay(((Boolean) ap.getSeqPanel().seqCanvas .getFeatureRenderer().featureGroups.get(grp)) .booleanValue()); fs.addGroup(g); @@ -1355,7 +1419,16 @@ public class Jalview2XML calcIdSet.add(aa[i].getCalcId()); an.setCalcId(aa[i].getCalcId()); } - + if (aa[i].hasProperties()) + { + for (String pr : aa[i].getProperties()) + { + Property prop = new Property(); + prop.setName(pr); + prop.setValue(aa[i].getProperty(pr)); + an.addProperty(prop); + } + } AnnotationElement ae; if (aa[i].annotations != null) { @@ -1369,18 +1442,26 @@ public class Jalview2XML ae = new AnnotationElement(); if (aa[i].annotations[a].description != null) + { ae.setDescription(aa[i].annotations[a].description); + } if (aa[i].annotations[a].displayCharacter != null) + { ae.setDisplayCharacter(aa[i].annotations[a].displayCharacter); + } if (!Float.isNaN(aa[i].annotations[a].value)) + { ae.setValue(aa[i].annotations[a].value); + } ae.setPosition(a); if (aa[i].annotations[a].secondaryStructure != ' ' && aa[i].annotations[a].secondaryStructure != '\0') + { ae.setSecondaryStructure(aa[i].annotations[a].secondaryStructure + ""); + } if (aa[i].annotations[a].colour != null && aa[i].annotations[a].colour != java.awt.Color.black) @@ -1501,8 +1582,7 @@ public class Jalview2XML return false; } } - throw new Error("Unsupported Version for calcIdparam " - + calcIdParam.toString()); + throw new Error(MessageManager.formatMessage("error.unsupported_version_calcIdparam", new String[]{calcIdParam.toString()})); } /** @@ -1795,7 +1875,7 @@ public class Jalview2XML try { // create list to store references for any new Jmol viewers created - newStructureViewers = new Vector(); + newStructureViewers = new Vector(); // UNMARSHALLER SEEMS TO CLOSE JARINPUTSTREAM, MOST ANNOYING // Workaround is to make sure caller implements the JarInputStreamProvider // interface @@ -2045,7 +2125,7 @@ public class Jalview2XML errorMessage = null; } - Hashtable alreadyLoadedPDB; + Hashtable alreadyLoadedPDB; /** * when set, local views will be updated from view stored in JalviewXML @@ -2057,10 +2137,14 @@ public class Jalview2XML String loadPDBFile(jarInputStreamProvider jprovider, String pdbId) { if (alreadyLoadedPDB == null) + { alreadyLoadedPDB = new Hashtable(); + } if (alreadyLoadedPDB.containsKey(pdbId)) + { return alreadyLoadedPDB.get(pdbId).toString(); + } try { @@ -2292,7 +2376,9 @@ public class Jalview2XML entry.setFile(pdbloaded.get(ids[p].getId()).toString()); } } - + StructureSelectionManager.getStructureSelectionManager( + Desktop.instance) + .registerPDBEntry(entry); al.getSequenceAt(i).getDatasetSequence().addPDBId(entry); } } @@ -2408,7 +2494,9 @@ public class Jalview2XML // in principle Visible should always be true for annotation displayed // in multiple views if (an[i].hasVisible()) + { jda.visible = an[i].getVisible(); + } al.addAnnotation(jda); @@ -2427,7 +2515,9 @@ public class Jalview2XML anpos = ae[aa].getPosition(); if (anpos >= anot.length) + { continue; + } anot[anpos] = new jalview.datamodel.Annotation( @@ -2521,10 +2611,14 @@ public class Jalview2XML jaa.setScore(an[i].getScore()); } if (an[i].hasVisible()) + { jaa.visible = an[i].getVisible(); + } if (an[i].hasCentreColLabels()) + { jaa.centreColLabels = an[i].getCentreColLabels(); + } if (an[i].hasScaleColLabels()) { @@ -2546,7 +2640,14 @@ public class Jalview2XML jaa.belowAlignment = an[i].isBelowAlignment(); } jaa.setCalcId(an[i].getCalcId()); - + if (an[i].getPropertyCount() > 0) + { + for (jalview.schemabinding.version2.Property prop : an[i] + .getProperty()) + { + jaa.setProperty(prop.getName(), prop.getValue()); + } + } if (jaa.autoCalculated) { autoAlan.add(new JvAnnotRow(i, jaa)); @@ -3132,10 +3233,11 @@ public class Jalview2XML @Override public void run() { - AppJmol sview = null; + JalviewStructureDisplayI sview = null; try { - sview = new AppJmol(pdbf, id, sq, alf.alignPanel, + // JAL-1333 note - we probably can't migrate Jmol views to UCSF Chimera! + sview = new StructureViewer(alf.alignPanel.getStructureSelectionManager()).createView(StructureViewer.Viewer.JMOL, pdbf, id, sq, alf.alignPanel, useinJmolsuperpos, usetoColourbyseq, jmolColouring, fileloc, rect, vid); addNewStructureViewer(sview); @@ -3211,15 +3313,18 @@ public class Jalview2XML /** * - * @param supported - minimum version we are comparing against - * @param version - version of data being processsed. + * @param supported + * - minimum version we are comparing against + * @param version + * - version of data being processsed. * @return true if version is development/null or evaluates to the same or * later X.Y.Z (where X,Y,Z are like [0-9]+b?[0-9]*) */ private boolean isVersionStringLaterThan(String supported, String version) { if (version == null || version.equalsIgnoreCase("DEVELOPMENT BUILD") - || version.equalsIgnoreCase("Test") || version.equalsIgnoreCase("AUTOMATED BUILD")) + || version.equalsIgnoreCase("Test") + || version.equalsIgnoreCase("AUTOMATED BUILD")) { System.err.println("Assuming project file with " + (version == null ? "null" : version) @@ -3262,13 +3367,13 @@ public class Jalview2XML return true; } - Vector newStructureViewers = null; + Vector newStructureViewers = null; - protected void addNewStructureViewer(AppJmol sview) + protected void addNewStructureViewer(JalviewStructureDisplayI sview) { if (newStructureViewers != null) { - sview.jmb.setFinishedLoadingFromArchive(false); + sview.getBinding().setFinishedLoadingFromArchive(false); newStructureViewers.add(sview); } } @@ -3277,9 +3382,9 @@ public class Jalview2XML { if (newStructureViewers != null) { - for (AppJmol sview : newStructureViewers) + for (JalviewStructureDisplayI sview : newStructureViewers) { - sview.jmb.setFinishedLoadingFromArchive(true); + sview.getBinding().setFinishedLoadingFromArchive(true); } newStructureViewers.clear(); newStructureViewers = null; @@ -3367,7 +3472,7 @@ public class Jalview2XML af.viewport.setConservationSelected(view.getConservationSelected()); af.viewport.setShowJVSuffix(view.getShowFullId()); - af.viewport.rightAlignIds = view.getRightAlignIds(); + af.viewport.setRightAlignIds(view.getRightAlignIds()); af.viewport.setFont(new java.awt.Font(view.getFontName(), view .getFontStyle(), view.getFontSize())); af.alignPanel.fontChanged(); @@ -3528,32 +3633,36 @@ public class Jalview2XML gc.setColourByLabel(setting.getColourByLabel()); } // and put in the feature colour table. - af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().setColour( + af.alignPanel.getSeqPanel().seqCanvas.getFeatureRenderer().setColour( setting.getType(), gc); } else { - af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().setColour( + af.alignPanel.getSeqPanel().seqCanvas.getFeatureRenderer().setColour( setting.getType(), new java.awt.Color(setting.getColour())); } renderOrder[fs] = setting.getType(); if (setting.hasOrder()) - af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().setOrder( + { + af.alignPanel.getSeqPanel().seqCanvas.getFeatureRenderer().setOrder( setting.getType(), setting.getOrder()); + } else - af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().setOrder( + { + af.alignPanel.getSeqPanel().seqCanvas.getFeatureRenderer().setOrder( setting.getType(), fs / jms.getFeatureSettings().getSettingCount()); + } if (setting.getDisplay()) { af.viewport.featuresDisplayed.put(setting.getType(), new Integer( setting.getColour())); } } - af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().renderOrder = renderOrder; + af.alignPanel.getSeqPanel().seqCanvas.getFeatureRenderer().renderOrder = renderOrder; Hashtable fgtable; - af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().featureGroups = fgtable = new Hashtable(); + af.alignPanel.getSeqPanel().seqCanvas.getFeatureRenderer().featureGroups = fgtable = new Hashtable(); for (int gs = 0; gs < jms.getFeatureSettings().getGroupCount(); gs++) { Group grp = jms.getFeatureSettings().getGroup(gs); @@ -4387,7 +4496,9 @@ public class Jalview2XML } } else + { Cache.log.debug("Ignoring " + jvobj.getClass() + " (ID = " + id); + } } }