X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FJalview2XML.java;h=9a9c7b318b7e0456b095da884c3e81660fd7c5b1;hb=0b1c761dfaa8242f122cf868e8897a06ec6eb727;hp=3b90bf6a9068cba2f963f14092d022d2229ad3cd;hpb=5247711ab4a6453614e2a9fb9307e6bae6a7b4a9;p=jalview.git diff --git a/src/jalview/gui/Jalview2XML.java b/src/jalview/gui/Jalview2XML.java index 3b90bf6..9a9c7b3 100644 --- a/src/jalview/gui/Jalview2XML.java +++ b/src/jalview/gui/Jalview2XML.java @@ -20,6 +20,8 @@ */ package jalview.gui; +import jalview.api.FeatureColourI; +import jalview.api.ViewStyleI; import jalview.api.structures.JalviewStructureDisplayI; import jalview.bin.Cache; import jalview.datamodel.AlignedCodonFrame; @@ -70,7 +72,7 @@ import jalview.schemabinding.version2.Viewport; import jalview.schemes.AnnotationColourGradient; import jalview.schemes.ColourSchemeI; import jalview.schemes.ColourSchemeProperty; -import jalview.schemes.GraduatedColor; +import jalview.schemes.FeatureColour; import jalview.schemes.ResidueColourScheme; import jalview.schemes.ResidueProperties; import jalview.schemes.UserColourScheme; @@ -89,6 +91,7 @@ import jalview.ws.params.ArgumentI; import jalview.ws.params.AutoCalcSetting; import jalview.ws.params.WsParamSetI; +import java.awt.Color; import java.awt.Rectangle; import java.io.BufferedReader; import java.io.DataInputStream; @@ -776,9 +779,9 @@ public class Jalview2XML } } - if (jdatasq.getPDBId() != null) + if (jdatasq.getAllPDBEntries() != null) { - Enumeration en = jdatasq.getPDBId().elements(); + Enumeration en = jdatasq.getAllPDBEntries().elements(); while (en.hasMoreElements()) { Pdbids pdb = new Pdbids(); @@ -1091,15 +1094,26 @@ public class Jalview2XML view.setViewName(av.viewName); view.setGatheredViews(av.isGatherViewsHere()); - Rectangle position = ap.av.getExplodedGeometry(); - if (position == null) + Rectangle size = ap.av.getExplodedGeometry(); + Rectangle position = size; + if (size == null) { - position = ap.alignFrame.getBounds(); + size = ap.alignFrame.getBounds(); + if (av.getCodingComplement() != null) + { + position = ((SplitFrame) ap.alignFrame.getSplitViewContainer()) + .getBounds(); + } + else + { + position = size; + } } view.setXpos(position.x); view.setYpos(position.y); - view.setWidth(position.width); - view.setHeight(position.height); + + view.setWidth(size.width); + view.setHeight(size.height); view.setStartRes(av.startRes); view.setStartSeq(av.startSeq); @@ -1149,6 +1163,7 @@ public class Jalview2XML view.setFontName(av.font.getName()); view.setFontSize(av.font.getSize()); view.setFontStyle(av.font.getStyle()); + view.setScaleProteinAsCdna(av.getViewStyle().isScaleProteinAsCdna()); view.setRenderGaps(av.isRenderGaps()); view.setShowAnnotation(av.isShowAnnotation()); view.setShowBoxes(av.getShowBoxes()); @@ -1180,34 +1195,32 @@ public class Jalview2XML .getFeatureRenderer().getRenderOrder() .toArray(new String[0]); - Vector settingsAdded = new Vector(); - Object gstyle = null; - GraduatedColor gcol = null; + Vector settingsAdded = new Vector(); if (renderOrder != null) { for (int ro = 0; ro < renderOrder.length; ro++) { - gstyle = ap.getSeqPanel().seqCanvas.getFeatureRenderer() + FeatureColourI gstyle = ap.getSeqPanel().seqCanvas + .getFeatureRenderer() .getFeatureStyle(renderOrder[ro]); Setting setting = new Setting(); setting.setType(renderOrder[ro]); - if (gstyle instanceof GraduatedColor) + if (!gstyle.isSimpleColour()) { - 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()); + setting.setColour(gstyle.getMaxColour().getRGB()); + setting.setMincolour(gstyle.getMinColour().getRGB()); + setting.setMin(gstyle.getMin()); + setting.setMax(gstyle.getMax()); + setting.setColourByLabel(gstyle.isColourByLabel()); + setting.setAutoScale(gstyle.isAutoScaled()); + setting.setThreshold(gstyle.getThreshold()); + // -1 = No threshold, 0 = Below, 1 = Above + setting.setThreshstate(gstyle.isAboveThreshold() ? 1 + : (gstyle.isBelowThreshold() ? 0 : -1)); } else { - setting.setColour(ap.getSeqPanel().seqCanvas - .getFeatureRenderer().getColour(renderOrder[ro]) - .getRGB()); + setting.setColour(gstyle.getColour().getRGB()); } setting.setDisplay(av.getFeaturesDisplayed().isVisible( @@ -1223,36 +1236,11 @@ public class Jalview2XML } } - // Make sure we save none displayed feature settings - Iterator en = ap.getSeqPanel().seqCanvas.getFeatureRenderer() - .getFeatureColours().keySet().iterator(); - while (en.hasNext()) - { - String key = en.next().toString(); - if (settingsAdded.contains(key)) - { - continue; - } - - Setting setting = new Setting(); - setting.setType(key); - setting.setColour(ap.getSeqPanel().seqCanvas.getFeatureRenderer() - .getColour(key).getRGB()); - - setting.setDisplay(false); - float rorder = ap.getSeqPanel().seqCanvas.getFeatureRenderer() - .getOrder(key); - if (rorder > -1) - { - setting.setOrder(rorder); - } - fs.addSetting(setting); - settingsAdded.addElement(key); - } // is groups actually supposed to be a map here ? - en = ap.getSeqPanel().seqCanvas.getFeatureRenderer() + Iterator en = ap.getSeqPanel().seqCanvas + .getFeatureRenderer() .getFeatureGroups().iterator(); - Vector groupsAdded = new Vector(); + Vector groupsAdded = new Vector(); while (en.hasNext()) { String grp = en.next().toString(); @@ -1269,7 +1257,6 @@ public class Jalview2XML groupsAdded.addElement(grp); } jms.setFeatureSettings(fs); - } if (av.hasHiddenColumns()) @@ -1852,8 +1839,8 @@ public class Jalview2XML } } throw new Error(MessageManager.formatMessage( - "error.unsupported_version_calcIdparam", new Object[] - { calcIdParam.toString() })); + "error.unsupported_version_calcIdparam", + new Object[] { calcIdParam.toString() })); } /** @@ -1935,16 +1922,16 @@ public class Jalview2XML if (jds.getDatasetSequence() != null) { vamsasSeq.setDsseqid(seqHash(jds.getDatasetSequence())); - if (jds.getDatasetSequence().getDBRef() != null) + if (jds.getDatasetSequence().getDBRefs() != null) { - dbrefs = jds.getDatasetSequence().getDBRef(); + dbrefs = jds.getDatasetSequence().getDBRefs(); } } else { vamsasSeq.setDsseqid(id); // so we can tell which sequences really are // dataset sequences only - dbrefs = jds.getDBRef(); + dbrefs = jds.getDBRefs(); } if (dbrefs != null) { @@ -2165,6 +2152,7 @@ public class Jalview2XML { SwingUtilities.invokeAndWait(new Runnable() { + @Override public void run() { setLoadingFinishedForNewStructureViewers(); @@ -2451,6 +2439,11 @@ public class Jalview2XML int width = (int) dnaFrame.getBounds().getWidth(); int height = (int) (dnaFrame.getBounds().getHeight() + proteinFrame.getBounds().getHeight() + 50); + + /* + * SplitFrame location is saved to both enclosed frames + */ + splitFrame.setLocation(dnaFrame.getX(), dnaFrame.getY()); Desktop.addInternalFrame(splitFrame, title, width, height); /* @@ -2837,8 +2830,8 @@ public class Jalview2XML else { // defer to later - frefedSequence.add(new Object[] - { maps[m].getDnasq(), cf, mapping }); + frefedSequence.add(new Object[] { maps[m].getDnasq(), cf, + mapping }); } } } @@ -3248,8 +3241,8 @@ public class Jalview2XML * indicate that annotation colours are applied across all groups (pre * Jalview 2.8.1 behaviour) */ - boolean doGroupAnnColour = isVersionStringLaterThan("2.8.1", - object.getVersion()); + boolean doGroupAnnColour = Jalview2XML.isVersionStringLaterThan( + "2.8.1", object.getVersion()); AlignmentPanel ap = null; boolean isnewview = true; @@ -4035,7 +4028,7 @@ public class Jalview2XML * @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]*) */ - protected boolean isVersionStringLaterThan(String supported, + public static boolean isVersionStringLaterThan(String supported, String version) { if (version == null || version.equalsIgnoreCase("DEVELOPMENT BUILD") @@ -4058,11 +4051,18 @@ public class Jalview2XML String fileT = fileV.nextToken().toLowerCase().replace('b', '.'); try { - if (Float.valueOf(curT) > Float.valueOf(fileT)) + float supportedVersionToken = Float.parseFloat(curT); + float myVersiontoken = Float.parseFloat(fileT); + if (supportedVersionToken > myVersiontoken) { // current version is newer than the version that wrote the file return false; } + if (supportedVersionToken < myVersiontoken) + { + // current version is older than the version that wrote the file + return true; + } } catch (NumberFormatException nfe) { System.err @@ -4194,6 +4194,9 @@ public class Jalview2XML af.viewport.setFont( new java.awt.Font(view.getFontName(), view.getFontStyle(), view .getFontSize()), true); + ViewStyleI vs = af.viewport.getViewStyle(); + vs.setScaleProteinAsCdna(view.isScaleProteinAsCdna()); + af.viewport.setViewStyle(vs); // TODO: allow custom charWidth/Heights to be restored by updating them // after setting font - which means set above to false af.viewport.setRenderGaps(view.getRenderGaps()); @@ -4324,25 +4327,33 @@ public class Jalview2XML af.viewport.setFeaturesDisplayed(fdi = new FeaturesDisplayed()); String[] renderOrder = new String[jms.getFeatureSettings() .getSettingCount()]; - Hashtable featureGroups = new Hashtable(); - Hashtable featureColours = new Hashtable(); - Hashtable featureOrder = new Hashtable(); + Map featureColours = new Hashtable(); + Map featureOrder = new Hashtable(); for (int fs = 0; fs < jms.getFeatureSettings().getSettingCount(); fs++) { Setting setting = jms.getFeatureSettings().getSetting(fs); if (setting.hasMincolour()) { - GraduatedColor gc = setting.hasMin() ? new GraduatedColor( - new java.awt.Color(setting.getMincolour()), - new java.awt.Color(setting.getColour()), - setting.getMin(), setting.getMax()) : new GraduatedColor( - new java.awt.Color(setting.getMincolour()), - new java.awt.Color(setting.getColour()), 0, 1); + FeatureColourI gc = setting.hasMin() ? new FeatureColour( + new Color(setting.getMincolour()), new Color( + setting.getColour()), setting.getMin(), + setting.getMax()) : new FeatureColour(new Color( + setting.getMincolour()), new Color(setting.getColour()), + 0, 1); if (setting.hasThreshold()) { - gc.setThresh(setting.getThreshold()); - gc.setThreshType(setting.getThreshstate()); + gc.setThreshold(setting.getThreshold()); + int threshstate = setting.getThreshstate(); + // -1 = None, 0 = Below, 1 = Above threshold + if (threshstate == 0) + { + gc.setBelowThreshold(true); + } + else if (threshstate == 1) + { + gc.setAboveThreshold(true); + } } gc.setAutoScaled(true); // default if (setting.hasAutoScale()) @@ -4358,8 +4369,8 @@ public class Jalview2XML } else { - featureColours.put(setting.getType(), - new java.awt.Color(setting.getColour())); + featureColours.put(setting.getType(), new FeatureColour( + new Color(setting.getColour()))); } renderOrder[fs] = setting.getType(); if (setting.hasOrder()) @@ -4376,7 +4387,7 @@ public class Jalview2XML fdi.setVisible(setting.getType()); } } - Hashtable fgtable = new Hashtable(); + Map fgtable = new Hashtable(); for (int gs = 0; gs < jms.getFeatureSettings().getGroupCount(); gs++) { Group grp = jms.getFeatureSettings().getGroup(gs); @@ -4578,8 +4589,8 @@ public class Jalview2XML /** * Kludge for magic autoannotation names (see JAL-811) */ - String[] magicNames = new String[] - { "Consensus", "Quality", "Conservation" }; + String[] magicNames = new String[] { "Consensus", "Quality", + "Conservation" }; JvAnnotRow nullAnnot = new JvAnnotRow(-1, null); Hashtable visan = new Hashtable(); for (String nm : magicNames) @@ -4989,8 +5000,7 @@ public class Jalview2XML } else { - frefedSequence.add(new Object[] - { dsfor, jmap }); + frefedSequence.add(new Object[] { dsfor, jmap }); } } else