private ObservableListBase<AlbumDirectory> getAlbumObservableList(String searchSequence) { return new ObservableListBase<AlbumDirectory>() { private List<AlbumDirectory> list = getAlbumDirectories(); private List<AlbumDirectory> getAlbumDirectories() { if (StringUtils.isNotBlank(searchSequence)) { return getFilteredAlbumList(); } else { return albumList.stream().map(AlbumDirectory::new).collect(Collectors.toList()); } } private List<AlbumDirectory> getFilteredAlbumList() { return albumList.stream() .filter(file -> file.getAbsolutePath().toLowerCase().contains(searchSequence)) .map(AlbumDirectory::new) .sorted(Comparator.comparing(o -> o.getFile().getAbsolutePath())) .collect(Collectors.toList()); } @Override public AlbumDirectory get(int index) { try { return list.get(index); } catch (Exception e) { e.printStackTrace(); return null; } } @Override public int size() { return list.size(); } }; }
@Override public void initialize(URL location, ResourceBundle resources) { mediaConverterService = new MediaConverterService(); mediaConverterService.valueProperty().addListener((observable, oldValue, newValue) -> { if (newValue != null) { conversionProcessLabel.setText(String.format("Processing \"%s\" ...", newValue.getName())); } }); mediaConverterService.setOnSucceeded(event -> { conversionProcessLabel.setText("Conversion finished"); exportButton.setDisable(false); }); mediaConverterService.setOnFailed(event -> { conversionProcessLabel.setText("Conversion failed!"); exportButton.setDisable(false); LOGGER.error(event.getSource().exceptionProperty().getValue().toString()); }); final List<JadbDevice> devices = getJadbDevices(); LOGGER.info("Devices [{}]", devices); devicesComboBox.setItems(new ObservableListBase<JadbDevice>() { @Override public JadbDevice get(int index) { return devices.get(index); } @Override public int size() { return devices.size(); } }); devicesComboBox.setConverter(new StringConverter<JadbDevice>() { @Override public String toString(JadbDevice device) { return device.getSerial(); } @Override public JadbDevice fromString(String string) { return null; } }); if (!devicesComboBox.getItems().isEmpty()) { devicesComboBox.setValue(devices.get(0)); exportButton.setDisable(false); } loadAlbumList(); }