Search in sources :

Example 1 with EngineSubCategoryPanel

use of org.phoenicis.javafx.components.engine.control.EngineSubCategoryPanel in project POL-POM-5 by PlayOnLinux.

the class EnginesView method createEngineSubCategoryTabs.

private ObservableList<Tab> createEngineSubCategoryTabs(EngineSidebar sidebar) {
    // initialize the engines sub category panels
    final MappedList<List<EngineSubCategoryPanel>, EngineCategoryDTO> engineSubCategoryPanelGroups = new MappedList<>(this.engineCategories, engineCategory -> engineCategory.getSubCategories().stream().map(engineSubCategory -> {
        final EngineSubCategoryPanel engineSubCategoryPanel = new EngineSubCategoryPanel();
        engineSubCategoryPanel.setEngineCategory(engineCategory);
        engineSubCategoryPanel.setEngineSubCategory(engineSubCategory);
        engineSubCategoryPanel.setEnginesPath(this.enginesPath);
        engineSubCategoryPanel.setFilter(this.filter);
        engineSubCategoryPanel.setEngine(this.engines.get(engineCategory.getName().toLowerCase()));
        engineSubCategoryPanel.selectedListWidgetProperty().bind(sidebar.selectedListWidgetProperty());
        engineSubCategoryPanel.setOnEngineSelect(this::showEngineDetails);
        return engineSubCategoryPanel;
    }).collect(Collectors.toList()));
    final ConcatenatedList<EngineSubCategoryPanel> engineSubCategoryPanels = ConcatenatedList.create(engineSubCategoryPanelGroups);
    final FilteredList<EngineSubCategoryPanel> filteredEngineSubCategoryPanels = engineSubCategoryPanels.sorted(Comparator.comparing(engineSubCategoryPanel -> engineSubCategoryPanel.getEngineSubCategory().getName())).filtered(this.filter::filter);
    filteredEngineSubCategoryPanels.predicateProperty().bind(Bindings.createObjectBinding(() -> this.filter::filter, this.filter.searchTermProperty(), this.filter.showInstalledProperty(), this.filter.showNotInstalledProperty()));
    // map the panels to tabs
    return new MappedList<>(filteredEngineSubCategoryPanels, engineSubCategoryPanel -> new Tab(engineSubCategoryPanel.getEngineSubCategory().getDescription(), engineSubCategoryPanel));
}
Also used : MappedList(org.phoenicis.javafx.collections.MappedList) Tab(javafx.scene.control.Tab) EngineCategoryDTO(org.phoenicis.engines.dto.EngineCategoryDTO) MappedList(org.phoenicis.javafx.collections.MappedList) FilteredList(javafx.collections.transformation.FilteredList) ObservableList(javafx.collections.ObservableList) ConcatenatedList(org.phoenicis.javafx.collections.ConcatenatedList) EngineSubCategoryPanel(org.phoenicis.javafx.components.engine.control.EngineSubCategoryPanel)

Aggregations

ObservableList (javafx.collections.ObservableList)1 FilteredList (javafx.collections.transformation.FilteredList)1 Tab (javafx.scene.control.Tab)1 EngineCategoryDTO (org.phoenicis.engines.dto.EngineCategoryDTO)1 ConcatenatedList (org.phoenicis.javafx.collections.ConcatenatedList)1 MappedList (org.phoenicis.javafx.collections.MappedList)1 EngineSubCategoryPanel (org.phoenicis.javafx.components.engine.control.EngineSubCategoryPanel)1