+
+ private void setDescription(String d)
+ {
+ description = d;
+ }
+
+ protected String getDescription()
+ {
+ return description;
+ }
+
+ public static final String usage()
+ {
+ StringBuilder sb = new StringBuilder();
+
+ sb.append("Usage: jalview [args]");
+ sb.append(System.lineSeparator());
+
+ int maxArgLength = 0;
+ for (Arg a : EnumSet.allOf(Arg.class))
+ {
+ StringBuilder argSb = new StringBuilder();
+ argSb.append(a.hasOption(Opt.BOOLEAN) ? booleanArgString(a)
+ : a.argString());
+ if (a.hasOption(Opt.STRING))
+ argSb.append("=value");
+ if (argSb.length() > maxArgLength)
+ maxArgLength = argSb.length();
+ }
+
+ // might want to order these
+ for (Arg a : EnumSet.allOf(Arg.class))
+ {
+ StringBuilder argSb = new StringBuilder();
+ argSb.append(a.hasOption(Opt.BOOLEAN) ? booleanArgString(a)
+ : a.argString());
+ if (a.hasOption(Opt.STRING))
+ argSb.append("=value");
+ sb.append(String.format("%-" + maxArgLength + "s - %s",
+ argSb.toString(), a.getDescription()));
+ if (a.hasOption(Opt.BOOLEAN))
+ {
+ sb.append(" (default ");
+ sb.append(a.getDefaultBoolValue() ? a.argString()
+ : a.negateArgString());
+ sb.append(')');
+ }
+ sb.append(System.lineSeparator());
+ }
+ return sb.toString();
+ }
+
+ public static String booleanArgString(Arg a)
+ {
+ StringBuilder sb = new StringBuilder(a.argString());
+ if (a.hasOption(Opt.BOOLEAN))
+ {
+ sb.append('/');
+ sb.append(a.negateArgString());
+ }
+ return sb.toString();
+ }
+}
\ No newline at end of file