X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fbin%2FCommands.java;h=a092cd697f9392ecf3a875f8db1542ac6a652d63;hb=cd669a0e8c7b91b379bca8fe6e702cf0fcbd1ce0;hp=1d65fc6e61ba187caa80e371f5fe2afa2c0d2060;hpb=809c044d96563eea97b00f2c55d2065480f6cac8;p=jalview.git diff --git a/src/jalview/bin/Commands.java b/src/jalview/bin/Commands.java index 1d65fc6..a092cd6 100644 --- a/src/jalview/bin/Commands.java +++ b/src/jalview/bin/Commands.java @@ -13,6 +13,8 @@ import java.util.List; import java.util.Locale; import java.util.Map; +import javax.swing.SwingUtilities; + import jalview.analysis.AlignmentUtils; import jalview.api.structures.JalviewStructureDisplayI; import jalview.bin.Jalview.ExitCode; @@ -361,28 +363,51 @@ public class Commands } } + // Show secondary structure annotations? boolean showSSAnnotations = avm.getFromSubValArgOrPref( Arg.SHOWSSANNOTATIONS, av.getSubVals(), null, "STRUCT_FROM_PDB", true); - af.setAnnotationsVisibility(showSSAnnotations, true, false); - + // Show sequence annotations? boolean showAnnotations = avm.getFromSubValArgOrPref( Arg.SHOWANNOTATIONS, av.getSubVals(), null, "SHOW_ANNOTATIONS", true); - af.setAnnotationsVisibility(showAnnotations, false, true); + + boolean hideTFrows = (avm.getBoolean(Arg.NOTEMPFAC)); + final AlignFrame _af = af; + // many of jalview's format/layout methods are only thread safe on the swingworker thread. + // all these methods should be on the alignViewController so it can coordinate such details + try + { + SwingUtilities.invokeAndWait(new Runnable() + { + @Override + public void run() + { + _af.setAnnotationsVisibility(showSSAnnotations, true, + false); - // show temperature factor annotations? - if (avm.getBoolean(Arg.NOTEMPFAC)) + _af.setAnnotationsVisibility(showAnnotations, false, true); + + // show temperature factor annotations? + if (hideTFrows) + { + // do this better (annotation types?) + List hideThese = new ArrayList<>(); + hideThese.add("Temperature Factor"); + hideThese.add(AlphaFoldAnnotationRowBuilder.LABEL); + AlignmentUtils.showOrHideSequenceAnnotations( + _af.getCurrentView().getAlignment(), hideThese, + null, false, false); + } + } + }); + } catch (Exception x) { - // do this better (annotation types?) - List hideThese = new ArrayList<>(); - hideThese.add("Temperature Factor"); - hideThese.add(AlphaFoldAnnotationRowBuilder.LABEL); - AlignmentUtils.showOrHideSequenceAnnotations( - af.getCurrentView().getAlignment(), hideThese, null, - false, false); + Console.warn( + "Unexpected exception adjusting annotation row visibility.", + x); } // wrap alignment? do this last for formatting reasons @@ -769,16 +794,17 @@ public class Commands AppJmol jmol = (AppJmol) sview; jmol.makePDBImage(structureImageFile, imageType, renderer, userBis); - Console.debug("Finished Rendering image to " + Console.info("Exported structure image to " + structureImageFile); // RESTORE SESSION AFTER EXPORT IF NEED BE if (sessionToRestore != null) { - Console.debug("Restoring session from " - + sessionToRestore); - - sview.getBinding().restoreSession(sessionToRestore.getAbsolutePath()); + Console.debug( + "Restoring session from " + sessionToRestore); + + sview.getBinding().restoreSession( + sessionToRestore.getAbsolutePath()); } } catch (ImageOutputException ioexec) @@ -789,11 +815,14 @@ public class Commands continue; } finally { - try { + try + { this.colourAlignFrame(af, originalColourScheme); } catch (Exception t) { - addError("Unexpected error when restoring colourscheme to alignment after temporary change for export.",t); + addError( + "Unexpected error when restoring colourscheme to alignment after temporary change for export.", + t); } } } @@ -838,21 +867,29 @@ public class Commands ArgValuesMap avm = argParser.getLinkedArgs(id); AlignFrame af = afMap.get(id); - if (af == null) + if (avm != null && !avm.containsArg(Arg.GROOVY)) { - addWarn("Did not have an alignment window for id=" + id); + // nothing to do return; } + if (af == null) + { + addWarn("Groovy script does not have an alignment window. Proceeding with caution!"); + } + if (avm.containsArg(Arg.GROOVY)) { - String groovyscript = avm.getValue(Arg.GROOVY); - if (groovyscript != null) + for (ArgValue groovyAv : avm.getArgValueList(Arg.GROOVY)) { - // Execute the groovy script after we've done all the rendering stuff - // and before any images or figures are generated. - Console.info("Executing script " + groovyscript); - Jalview.getInstance().executeGroovyScript(groovyscript, af); + String groovyscript = groovyAv.getValue(); + if (groovyscript != null) + { + // Execute the groovy script after we've done all the rendering stuff + // and before any images or figures are generated. + Console.info("Executing script " + groovyscript); + Jalview.getInstance().executeGroovyScript(groovyscript, af); + } } } } @@ -862,9 +899,16 @@ public class Commands ArgValuesMap avm = argParser.getLinkedArgs(id); AlignFrame af = afMap.get(id); + if (avm != null && !avm.containsArg(Arg.IMAGE)) + { + // nothing to do + return true; + } + if (af == null) { - addWarn("Did not have an alignment window for id=" + id); + addWarn("Do not have an alignment window to create image from (id=" + + id + "). Not proceeding."); return false; } @@ -991,9 +1035,16 @@ public class Commands ArgValuesMap avm = argParser.getLinkedArgs(id); AlignFrame af = afMap.get(id); + if (avm != null && !avm.containsArg(Arg.OUTPUT)) + { + // nothing to do + return true; + } + if (af == null) { - addWarn("Did not have an alignment window for id=" + id); + addWarn("Do not have an alignment window (id=" + id + + "). Not proceeding."); return false; }