X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fbin%2FCommands.java;h=26ce8c32c1709ebfa7d81a923b8d4271947392a0;hb=a5928e2c1b9e2cea8d9c43f3d03f9cce2604f3b2;hp=af8bf65cf1d26cde2d7d49849b7c6eb2d26f93ef;hpb=156ab6ab1046c02dc327c2ac986afa336f0bbf3b;p=jalview.git diff --git a/src/jalview/bin/Commands.java b/src/jalview/bin/Commands.java index af8bf65..26ce8c3 100644 --- a/src/jalview/bin/Commands.java +++ b/src/jalview/bin/Commands.java @@ -50,39 +50,65 @@ public class Commands { Desktop desktop; - private static boolean headless; + private boolean headless; - private static ArgParser argParser; + private ArgParser argParser; private Map afMap; - public static boolean processArgs(ArgParser ap, boolean h) + private boolean commandArgsProvided = false; + + private boolean argsWereParsed = false; + + public Commands(ArgParser argparser, boolean headless) { - argParser = ap; + this(Desktop.instance, argparser, headless); + } + + public Commands(Desktop d, ArgParser argparser, boolean h) + { + argParser = argparser; headless = h; - boolean argsWereParsed = true; - if (headless) + desktop = d; + afMap = new HashMap(); + if (argparser != null) { - System.setProperty("java.awt.headless", "true"); + processArgs(argparser, headless); } + } + + private boolean processArgs(ArgParser argparser, boolean h) + { + argParser = argparser; + headless = h; + boolean theseArgsWereParsed = false; if (argParser != null && argParser.linkedIds() != null) { for (String id : argParser.linkedIds()) { - Commands cmds = new Commands(); + ArgValuesMap avm = argParser.linkedArgs(id); + theseArgsWereParsed = true; if (id == null) { - cmds.processUnlinked(id); - argsWereParsed &= cmds.wereParsed(); + theseArgsWereParsed &= processUnlinked(id); } else { - cmds.processLinked(id); - argsWereParsed &= cmds.wereParsed(); + theseArgsWereParsed &= processLinked(id); + } + theseArgsWereParsed &= processImages(id); + + // close ap + if (avm.getBoolean(Arg.CLOSE)) + { + AlignFrame af = afMap.get(id); + if (af != null) + { + af.closeMenuItem_actionPerformed(true); + } } - cmds.processImages(id); - argsWereParsed &= cmds.wereParsed(); + } } @@ -92,39 +118,31 @@ public class Commands return true; } // carry on with jalview.bin.Jalview + argsWereParsed = theseArgsWereParsed; return argsWereParsed; } - boolean argsWereParsed = true; // set false as soon as an arg is found - - private boolean wereParsed() - { - return argsWereParsed; - } - - public Commands() + public boolean commandArgsProvided() { - this(Desktop.instance); + return commandArgsProvided; } - public Commands(Desktop d) + public boolean argsWereParsed() { - this.desktop = d; - afMap = new HashMap(); + return argsWereParsed; } - protected void processUnlinked(String id) + protected boolean processUnlinked(String id) { - processLinked(id); + return processLinked(id); } - protected void processLinked(String id) + protected boolean processLinked(String id) { - ArgValuesMap avm = new ArgValuesMap(argParser.linkedArgs(id)); + boolean theseArgsWereParsed = false; + ArgValuesMap avm = argParser.linkedArgs(id); if (avm == null) - return; - else - argsWereParsed = false; + return true; /* // script to execute after all loading is completed one way or another @@ -136,11 +154,13 @@ public class Commands FileFormatI format = null; DataSourceType protocol = null; */ - if (avm.hasValue(Arg.OPEN)) + if (avm.containsArg(Arg.OPEN)) { + commandArgsProvided = true; long progress = -1; boolean first = true; + boolean progressBarSet = false; AlignFrame af; for (ArgValue av : avm.getArgValueList(Arg.OPEN)) { @@ -148,7 +168,7 @@ public class Commands if (openFile == null) continue; - argsWereParsed = true; + theseArgsWereParsed = true; if (first) { first = false; @@ -158,6 +178,7 @@ public class Commands MessageManager.getString( "status.processing_commandline_args"), progress = System.currentTimeMillis()); + progressBarSet = true; } } @@ -224,7 +245,8 @@ public class Commands // get kind of temperature factor annotation StructureImportSettings.TFType tempfacType = TFType.DEFAULT; - if ((!avm.getBoolean(Arg.NOTEMPFAC)) && avm.hasValue(Arg.TEMPFAC)) + if ((!avm.getBoolean(Arg.NOTEMPFAC)) + && avm.containsArg(Arg.TEMPFAC)) { try { @@ -269,13 +291,13 @@ public class Commands } // colour aligment? - if (avm.hasValue(Arg.COLOUR)) + if (avm.containsArg(Arg.COLOUR)) { af.changeColour_actionPerformed(avm.getValue(Arg.COLOUR)); } // change alignment frame title - if (avm.hasValue(Arg.TITLE)) + if (avm.containsArg(Arg.TITLE)) af.setTitle(avm.getValue(Arg.TITLE)); /* hacky approach to hiding the annotations */ @@ -305,7 +327,7 @@ public class Commands if (showTemperatureFactor) */ { - if (avm.hasValue(Arg.TEMPFAC_LABEL)) + if (avm.containsArg(Arg.TEMPFAC_LABEL)) { AlignmentAnnotation aa = AlignmentUtils .getFirstSequenceAnnotationOfType( @@ -335,14 +357,14 @@ public class Commands .getStructureSelectionManager(Desktop.instance); SequenceI seq = af.alignPanel.getAlignment().getSequenceAt(0); ssm.computeMapping(false, new SequenceI[] { seq }, null, - openFile, DataSourceType.FILE, null); + openFile, DataSourceType.FILE, null, null, null); } } else { Console.debug( "Opening '" + openFile + "' in existing alignment frame"); - af.getCurrentView().addFile(new File(openFile), format); + af.getCurrentView().addFile(new File(openFile), format, false); } Console.debug("Command " + Arg.OPEN + " executed successfully!"); @@ -358,10 +380,10 @@ public class Commands else { Console.warn("No more files to open"); - if (desktop != null) - desktop.setProgressBar(null, progress); } } + if (progressBarSet && desktop != null) + desktop.setProgressBar(null, progress); } @@ -369,8 +391,9 @@ public class Commands if (!avm.getBoolean(Arg.NOSTRUCTURE)) { AlignFrame af = afMap.get(id); - if (avm.hasValue(Arg.STRUCTURE)) + if (avm.containsArg(Arg.STRUCTURE)) { + commandArgsProvided = true; for (ArgValue av : avm.getArgValueList(Arg.STRUCTURE)) { String val = av.getValue(); @@ -443,14 +466,21 @@ public class Commands Cache.setProperty(Preferences.STRUCTURE_DISPLAY, StructureViewer.ViewerType.JMOL.toString()); } - StructureChooser.openStructureFileForSequence(ap, seq, - structureFile); + + // get tft, paeFilename, label? + /* + ArgValue tftAv = avm.getArgValuesReferringTo("structid", structId, + Arg.TEMPFAC); + */ + StructureChooser.openStructureFileForSequence(null, null, ap, seq, + false, structureFile.getAbsolutePath(), null, null); // tft, + // paeFilename); } } } // load a pAE file if given - if (avm.hasValue(Arg.PAEMATRIX)) + if (avm.containsArg(Arg.PAEMATRIX)) { AlignFrame af = afMap.get(id); if (af != null) @@ -479,25 +509,24 @@ public class Commands { Console.info("***** Attaching paeFile '" + paePath + "' to " + "structfile=" + subVals.get("structfile")); - EBIAlfaFold.addAlphaFoldPAEToStructure( - af.getCurrentView().getAlignment(), paeFile, - subVals.getIndex(), subVals.get("structfile"), false); + EBIAlfaFold.addAlphaFoldPAE(af.getCurrentView().getAlignment(), + paeFile, subVals.getIndex(), subVals.get("structfile"), + true, false); } else if (subVals.has("structid")) { Console.info("***** Attaching paeFile '" + paePath + "' to " + "structid=" + subVals.get("structid")); - EBIAlfaFold.addAlphaFoldPAEToStructure( - af.getCurrentView().getAlignment(), paeFile, - subVals.getIndex(), subVals.get("structid"), true); + EBIAlfaFold.addAlphaFoldPAE(af.getCurrentView().getAlignment(), + paeFile, subVals.getIndex(), subVals.get("structid"), + true, true); } else { Console.debug("***** Attaching paeFile '" + paePath + "' to sequence index " + subVals.getIndex()); - EBIAlfaFold.addAlphaFoldPAEToSequence( - af.getCurrentView().getAlignment(), paeFile, - subVals.getIndex(), null); + EBIAlfaFold.addAlphaFoldPAE(af.getCurrentView().getAlignment(), + paeFile, subVals.getIndex(), null, false, false); // required to readjust the height and position of the pAE // annotation } @@ -523,20 +552,22 @@ public class Commands Console.info("Changed colour " + acg.toString()); } } + + return theseArgsWereParsed; } - protected void processImages(String id) + protected boolean processImages(String id) { - ArgValuesMap avm = new ArgValuesMap(argParser.linkedArgs(id)); + ArgValuesMap avm = argParser.linkedArgs(id); AlignFrame af = afMap.get(id); if (af == null) { Console.warn("Did not have an alignment window for id=" + id); - return; + return false; } - if (avm.hasValue(Arg.IMAGE)) + if (avm.containsArg(Arg.IMAGE)) { for (ArgValue av : avm.getArgValueList(Arg.IMAGE)) { @@ -584,6 +615,7 @@ public class Commands } } } + return true; } private SequenceI getSpecifiedSequence(AlignFrame af, SubVals subId)