Source:
public ViewInstallations(ThemeManager themeManager, JavaFxSettingsManager javaFxSettingsManager) { super(tr("Installations"), themeManager); this.getStyleClass().add("mainWindowScene"); activeInstallations = new CombinedListWidget<>(ListWidgetEntry::create, (selectedItem, event) -> { activeInstallations.deselectAll(); activeInstallations.select(selectedItem); onInstallationSelected.accept(selectedItem); showInstallationDetails(selectedItem); event.consume(); }); this.categories = FXCollections.observableArrayList(); this.sortedCategories = this.categories.sorted(Comparator.comparing(InstallationCategoryDTO::getName)); this.installations = new ExpandedList<>(this.sortedCategories, InstallationCategoryDTO::getInstallations); this.filteredInstallations = new FilteredList<>(this.installations); this.sortedInstallations = this.filteredInstallations.sorted(Comparator.comparing(InstallationDTO::getName)); this.filter = new InstallationsFilter<>(filteredInstallations, (filterText, installation) -> installation.getName().toLowerCase().contains(filterText)); this.activeInstallations.setOnMouseClicked(event -> { this.activeInstallations.deselectAll(); this.onInstallationSelected.accept(null); event.consume(); }); this.sidebar = new InstallationsSidebar(activeInstallations, javaFxSettingsManager); this.sidebar.bindCategories(this.sortedCategories); this.sidebar.setOnCategorySelection(category -> { filter.setFilters(category.getInstallations()::contains); this.closeDetailsView(); }); this.sidebar.setOnAllCategorySelection(() -> { filter.clearFilters(); this.closeDetailsView(); }); this.sidebar.setOnSearch(searchKeyword -> { final List<InstallationCategoryDTO> installationsCorrespondingToKeywords = this.categories.stream() .filter(installationDTO -> installationDTO.getName().toLowerCase() .contains(searchKeyword.toLowerCase().trim())) .collect(Collectors.toList()); Platform.runLater(() -> this.populate(installationsCorrespondingToKeywords)); }); this.setSidebar(this.sidebar); this.activeInstallations.bind(sortedInstallations); this.setCenter(this.activeInstallations); this.installationsPanel = new InstallationsPanel(); }

Target:
public ViewInstallations(ThemeManager themeManager, JavaFxSettingsManager javaFxSettingsManager) { super(tr("Installations"), themeManager); this.getStyleClass().add("mainWindowScene"); this.activeInstallations = new CombinedListWidget<>(ListWidgetEntry::create, (selectedItem, event) -> { this.activeInstallations.deselectAll(); this.activeInstallations.select(selectedItem); this.onInstallationSelected.accept(selectedItem); showInstallationDetails(selectedItem); event.consume(); }); this.categories = FXCollections.observableArrayList(); this.sortedCategories = this.categories.sorted(Comparator.comparing(InstallationCategoryDTO::getName)); this.installations = new ExpandedList<>(this.sortedCategories, InstallationCategoryDTO::getInstallations); this.filteredInstallations = new FilteredList<>(this.installations); this.sortedInstallations = this.filteredInstallations.sorted(Comparator.comparing(InstallationDTO::getName)); this.filter = new SimpleFilter<>(this.filteredInstallations, (filterText, installation) -> installation.getName().toLowerCase().contains(filterText)); this.activeInstallations.setOnMouseClicked(event -> { this.activeInstallations.deselectAll(); this.onInstallationSelected.accept(null); event.consume(); }); this.sidebar = new InstallationsSidebar(activeInstallations, javaFxSettingsManager); this.sidebar.bindCategories(this.sortedCategories); this.sidebar.setOnCategorySelection(category -> { filter.setFilters(category.getInstallations()::contains); this.closeDetailsView(); }); this.sidebar.setOnAllCategorySelection(() -> { filter.clearFilters(); this.closeDetailsView(); }); this.sidebar.setOnSearch(searchKeyword -> { final List<InstallationCategoryDTO> installationsCorrespondingToKeywords = this.categories.stream() .filter(installationDTO -> installationDTO.getName().toLowerCase() .contains(searchKeyword.toLowerCase().trim())) .collect(Collectors.toList()); Platform.runLater(() -> this.populate(installationsCorrespondingToKeywords)); }); this.setSidebar(this.sidebar); this.activeInstallations.bind(this.sortedInstallations); this.setCenter(this.activeInstallations); this.installationsPanel = new InstallationsPanel(); }