public FileRootsFinder(boolean hideFileSystem, boolean includeDataDir) { // build the roots roots = new ArrayList<File>(); if (!hideFileSystem) { roots.addAll(Arrays.asList(File.listRoots())); } Collections.sort(roots); // TODO: find a better way to deal with the data dir GeoServerResourceLoader loader = getLoader(); dataDirectory = loader.getBaseDirectory(); if (includeDataDir) { roots.add(0, dataDirectory); } // add the home directory as well if it was possible to determine it at all if (!hideFileSystem && GeoServerFileChooser.USER_HOME != null) { roots.add(1, GeoServerFileChooser.USER_HOME); } }
@Override protected Iterator<String> getChoices(String input) { try { // do we need to filter files? FileFilter fileFilter = FileParamPanel.this.fileFilter != null ? FileParamPanel.this.fileFilter.getObject() : null; return rootsFinder.getMatches(input, fileFilter).iterator(); } catch (Exception e) { // this is a helper, don't let it break the UI at runtime but log errors // instead LOGGER.log( Level.INFO, "Failed to provide autocomplete for path " + input, e); return Collections.emptyIterator(); } } };
FileRootsFinder fileRootsFinder = new FileRootsFinder(hideFileSystem, true); ArrayList<File> roots = fileRootsFinder.getRoots(); GeoServerResourceLoader loader = fileRootsFinder.getLoader(); File dataDirectory = fileRootsFinder.getDataDirectory();
FileRootsFinder rootsFinder = new FileRootsFinder(false); textField = new AutoCompleteTextField<String>("paramValue", new FileModel(paramValue)) {