import java.util.logging.ConsoleHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
+import java.util.stream.Collectors;
import javax.swing.JDialog;
import javax.swing.JFrame;
import groovy.util.GroovyScriptEngine;
import jalview.bin.argparser.Arg;
import jalview.bin.argparser.Arg.Opt;
+import jalview.bin.argparser.Arg.Type;
import jalview.bin.argparser.ArgParser;
import jalview.bin.argparser.BootstrapArgs;
import jalview.ext.so.SequenceOntology;
System.setSecurityManager(null);
}
- if (args == null)
+ if (args == null || args.length == 0 || (args.length == 1
+ && (args[0] == null || args[0].length() == 0)))
+ {
args = new String[] {};
+ }
// get args needed before proper ArgParser
bootstrapArgs = BootstrapArgs.getBootstrapArgs(args);
}
}
- if (bootstrapArgs.contains(Arg.HELP))
+ if (bootstrapArgs.contains(Arg.HELP)
+ || bootstrapArgs.contains(Arg.VERSION))
{
QUIET = true;
}
final File appdir = new File(appdirString);
new Thread()
{
+
@Override
public void run()
{
}.start();
}
- if (!quiet())
+ if (!quiet() || bootstrapArgs.contains(Arg.VERSION))
{
System.out.println(
"Java version: " + System.getProperty("java.version"));
- System.out.println("Java Home: " + System.getProperty("java.home"));
- System.out.println(System.getProperty("os.arch") + " "
+ System.out.println("Java home: " + System.getProperty("java.home"));
+ System.out.println("Java arch: " + System.getProperty("os.arch") + " "
+ System.getProperty("os.name") + " "
+ System.getProperty("os.version"));
.bootstrapProperties(bootstrapArgs.get(Arg.PROPS));
// report Jalview version
- Cache.loadBuildProperties(true);
+ Cache.loadBuildProperties(
+ !quiet() || bootstrapArgs.contains(Arg.VERSION));
+
+ // stop now if only after --version
+ if (bootstrapArgs.contains(Arg.VERSION))
+ {
+ Jalview.exit(null, 0);
+ }
// old ArgsParser
ArgsParser aparser = new ArgsParser(args);
if (bootstrapArgs.contains(Arg.ARGFILE))
{
argparser = ArgParser.parseArgFiles(
- bootstrapArgs.getList(Arg.ARGFILE),
+ bootstrapArgs.getValueList(Arg.ARGFILE),
bootstrapArgs.getBoolean(Arg.INITSUBSTITUTIONS),
bootstrapArgs);
}
{
if (bootstrapArgs.contains(Arg.HELP))
{
- System.out.println(Arg.usage());
+ List<Map.Entry<Type, String>> helpArgs = bootstrapArgs
+ .getList(Arg.HELP);
+ System.out.println(Arg.usage(helpArgs.stream().map(e -> e.getKey())
+ .collect(Collectors.toList())));
Jalview.exit(null, 0);
}
if (aparser.contains("help") || aparser.contains("h"))
List<String> setprops = new ArrayList<>();
if (bootstrapArgs.contains(Arg.SETPROP))
{
- setprops = bootstrapArgs.getList(Arg.SETPROP);
+ setprops = bootstrapArgs.getValueList(Arg.SETPROP);
}
else
{
{
if (headlessArg)
{
- Jalview.exit("Successfully completed commands in headless mode", 0);
+ if (argparser.getBoolean(Arg.NOQUIT))
+ {
+ Console.warn(
+ "Completed " + Arg.HEADLESS.getName() + " commands, but "
+ + Arg.NOQUIT + " is set so not quitting!");
+ }
+ else
+ {
+ Jalview.exit("Successfully completed commands in headless mode",
+ 0);
+ }
}
Console.info("Successfully completed commands");
}
}
if (!lafSet)
{
- setSystemLookAndFeel();
+ // Flatlaf default for everyone!
+ lafSet = setFlatLookAndFeel();
+ if (!lafSet)
+ {
+ setSystemLookAndFeel();
+ }
if (Platform.isLinux())
{
setLinuxLookAndFeel();
UIManager.put("TabbedPane.smoothScrolling", true);
UIManager.put("TabbedPane.tabWidthMode", "compact");
UIManager.put("TabbedPane.selectedBackground", Color.white);
+ UIManager.put("TabbedPane.background", new Color(236, 236, 236));
+ UIManager.put("TabbedPane.hoverColor", Color.lightGray);
}
Desktop.setLiveDragMode(Cache.getDefault("FLAT_LIVE_DRAG_MODE", true));
return set;
}
+ /*
private static void showUsage()
{
System.out.println(
+ "-jvmmemmax=MAXMEMORY\tOnly available with standalone executable jar or jalview.bin.Launcher. Limit maximum heap size (memory) to MAXMEMORY. MAXMEMORY can be specified in bytes, kilobytes(k), megabytes(m), gigabytes(g) or if you're lucky enough, terabytes(t). This defaults to 32g if total physical memory can be detected, or to 8g if total physical memory cannot be detected. See https://www.jalview.org/help/html/memory.html for more details.\n"
+ "\n~Read documentation in Application or visit https://www.jalview.org for description of Features and Annotations file~\n\n");
}
+ */
private static void startUsageStats(final Desktop desktop)
{
public static void exit(String message, int exitcode)
{
- Console.debug("Using Jalview.exit");
- if (message != null)
- if (exitcode == 0)
- Console.info(message);
- else
- Console.error(message);
+ if (Console.log == null)
+ {
+ // Don't start the logger just to exit!
+ if (message != null)
+ {
+ if (exitcode == 0)
+ {
+ System.out.println(message);
+ }
+ else
+ {
+ System.err.println(message);
+ }
+ }
+ }
+ else
+ {
+ Console.debug("Using Jalview.exit");
+ if (message != null)
+ {
+ if (exitcode == 0)
+ {
+ Console.info(message);
+ }
+ else
+ {
+ Console.error(message);
+ }
+ }
+ }
if (exitcode > -1)
+ {
System.exit(exitcode);
+ }
}
/*