private Completer getDefaultCompleter(Field field) { Completer completer = null; Class<?> type = field.getType(); if (type.isAssignableFrom(File.class)) { completer = new FileCompleter(null); } else if (type.isAssignableFrom(Boolean.class) || type.isAssignableFrom(boolean.class)) { completer = new StringsCompleter(new String[] {"false", "true"}, false); } else if (type.isAssignableFrom(Enum.class)) { Set<String> values = new HashSet<>(); for (Object o : EnumSet.allOf((Class<Enum>) type)) { values.add(o.toString()); } completer = new StringsCompleter(values, false); } else { // TODO any other completers we can add? } return completer; }
File homeDir = getUserHome(); if (translated.startsWith("~" + separator())) { translated = homeDir.getPath() + translated.substring(1); translated = homeDir.getParentFile().getAbsolutePath(); else if (!(translated.startsWith(separator()))) { String cwd = getUserDir().getAbsolutePath(); translated = cwd + separator() + translated; final File dir; if (translated.endsWith(separator())) { dir = file; return matchFiles(buffer, translated, entries, candidates);
protected int matchFiles(final String buffer, final String translated, final File[] files, final List<String> candidates) { if (files == null) { return -1; } int matches = 0; // first pass: just count the matches for (File file : files) { if (file.getAbsolutePath().startsWith(translated)) { matches++; } } for (File file : files) { if (file.getAbsolutePath().startsWith(translated)) { CharSequence name = file.getName() + (matches == 1 && file.isDirectory() ? separator() : " "); candidates.add(render(file, name).toString()); } } final int index = buffer.lastIndexOf(separator()); return index + separator().length(); }
private Completer getDefaultCompleter(CommandSession session, Field field) { Completer completer = null; Class<?> type = field.getType(); if (type.isAssignableFrom(File.class)) { completer = new FileCompleter(session); } else if (type.isAssignableFrom(Boolean.class) || type.isAssignableFrom(boolean.class)) { completer = new StringsCompleter(new String[] {"false", "true"}, false); } else if (type.isAssignableFrom(Enum.class)) { Set<String> values = new HashSet<>(); for (Object o : EnumSet.allOf((Class<Enum>) type)) { values.add(o.toString()); } completer = new StringsCompleter(values, false); } else { // TODO any other completers we can add? } return completer; }
Class<?> type = field.getType(); if (type.isAssignableFrom(File.class)) { argCompleter = new FileCompleter(null); } else if (type.isAssignableFrom(Boolean.class) || type.isAssignableFrom(boolean.class)) { argCompleter = new StringsCompleter(new String[] {"false", "true"}, false);
Class<?> type = field.getType(); if (type.isAssignableFrom(File.class)) { argCompleter = new FileCompleter(session); } else if (type.isAssignableFrom(Boolean.class) || type.isAssignableFrom(boolean.class)) { argCompleter = new StringsCompleter(new String[] {"false", "true"}, false);