Search in sources :

Example 1 with CombinedListWidget

use of org.phoenicis.javafx.components.common.widgets.control.CombinedListWidget in project POL-POM-5 by PlayOnLinux.

the class ApplicationsFeaturePanelSkin method createContent.

/**
 * {@inheritDoc}
 */
@Override
public ObjectExpression<Node> createContent() {
    /*
         * initialising the application lists by:
         * 1. sorting the applications by their name
         * 2. filtering them
         */
    final FilteredList<ApplicationDTO> filteredApplications = ConcatenatedList.create(new MappedList<>(getControl().getCategories().filtered(category -> category.getType() == CategoryDTO.CategoryType.INSTALLERS), CategoryDTO::getApplications)).sorted(Comparator.comparing(ApplicationDTO::getName)).filtered(getControl()::filterApplication);
    filteredApplications.predicateProperty().bind(Bindings.createObjectBinding(() -> getControl()::filterApplication, getControl().searchTermProperty(), getControl().fuzzySearchRatioProperty(), getControl().operatingSystemProperty(), getControl().filterCategoryProperty(), getControl().containAllOSCompatibleApplicationsProperty(), getControl().containCommercialApplicationsProperty(), getControl().containRequiresPatchApplicationsProperty(), getControl().containTestingApplicationsProperty()));
    final ObservableList<ListWidgetElement<ApplicationDTO>> listWidgetEntries = new MappedList<>(filteredApplications, ListWidgetElement::create);
    final CombinedListWidget<ApplicationDTO> combinedListWidget = new CombinedListWidget<>(listWidgetEntries, this.selectedListWidget);
    // bind direction: controller property -> skin property
    getControl().selectedApplicationProperty().addListener((observable, oldValue, newValue) -> {
        if (newValue != null) {
            combinedListWidget.select(newValue);
        } else {
            combinedListWidget.deselect();
        }
    });
    // bind direction: skin property -> controller properties
    combinedListWidget.selectedElementProperty().addListener((observable, oldValue, newValue) -> {
        if (newValue != null) {
            final ApplicationDTO selectedItem = newValue.getItem();
            getControl().setSelectedApplication(selectedItem);
            getControl().setOpenedDetailsPanel(new ApplicationInformation(selectedItem));
        } else {
            getControl().setSelectedApplication(null);
            getControl().setOpenedDetailsPanel(new None());
        }
    });
    return new SimpleObjectProperty<>(combinedListWidget);
}
Also used : MappedList(org.phoenicis.javafx.collections.MappedList) ApplicationDTO(org.phoenicis.repository.dto.ApplicationDTO) SimpleObjectProperty(javafx.beans.property.SimpleObjectProperty) CombinedListWidget(org.phoenicis.javafx.components.common.widgets.control.CombinedListWidget) ListWidgetElement(org.phoenicis.javafx.components.common.widgets.utils.ListWidgetElement) None(org.phoenicis.javafx.components.common.panelstates.None) ApplicationInformation(org.phoenicis.javafx.components.application.panelstates.ApplicationInformation)

Example 2 with CombinedListWidget

use of org.phoenicis.javafx.components.common.widgets.control.CombinedListWidget in project POL-POM-5 by PlayOnLinux.

the class EngineSubCategoryPanelSkin method createListWidget.

/**
 * Creates a new {@link CombinedListWidget} object containing all {@link EngineVersionDTO} objects in the given
 * {@link ObservableList filteredEngineVersions}
 *
 * @param filteredEngineVersions An {@link ObservableList} containing all to be shown {@link EngineVersionDTO}
 *            objects
 * @return A new {@link CombinedListWidget} object containing all {@link EngineVersionDTO} objects in the given
 *         {@link ObservableList filteredEngineVersions}
 */
private CombinedListWidget<EngineVersionDTO> createListWidget(ObservableList<EngineVersionDTO> filteredEngineVersions) {
    final ObservableList<ListWidgetElement<EngineVersionDTO>> listWidgetEntries = new MappedList<>(filteredEngineVersions, engineVersion -> ListWidgetElement.create(engineVersion, Files.exists(Paths.get(getControl().getEnginesPath(), getControl().getEngineCategory().getName().toLowerCase(), getControl().getEngineSubCategory().getName(), engineVersion.getVersion()))));
    final CombinedListWidget<EngineVersionDTO> listWidget = new CombinedListWidget<>(listWidgetEntries);
    listWidget.selectedListWidgetProperty().bind(getControl().selectedListWidgetProperty());
    listWidget.selectedElementProperty().addListener((observable, oldValue, newValue) -> {
        if (newValue != null) {
            final EngineVersionDTO engineItem = newValue.getItem();
            Map<String, String> userData = new HashMap<>();
            userData.put("Mono", engineItem.getMonoFile());
            userData.put("Gecko", engineItem.getGeckoFile());
            EngineDTO engineDTO = new EngineDTO.Builder().withCategory(getControl().getEngineCategory().getName()).withSubCategory(getControl().getEngineSubCategory().getName()).withVersion(engineItem.getVersion()).withUserData(userData).build();
            Optional.ofNullable(getControl().getOnEngineSelect()).ifPresent(onEngineSelect -> onEngineSelect.accept(engineDTO, getControl().getEngine()));
        }
    });
    return listWidget;
}
Also used : MappedList(org.phoenicis.javafx.collections.MappedList) CombinedListWidget(org.phoenicis.javafx.components.common.widgets.control.CombinedListWidget) EngineDTO(org.phoenicis.engines.dto.EngineDTO) EngineVersionDTO(org.phoenicis.engines.dto.EngineVersionDTO) HashMap(java.util.HashMap) ListWidgetElement(org.phoenicis.javafx.components.common.widgets.utils.ListWidgetElement)

Example 3 with CombinedListWidget

use of org.phoenicis.javafx.components.common.widgets.control.CombinedListWidget in project POL-POM-5 by PlayOnLinux.

the class LibraryFeaturePanelSkin method createCombinedListWidget.

private CombinedListWidget<ShortcutDTO> createCombinedListWidget() {
    final FilteredList<ShortcutDTO> filteredShortcuts = ConcatenatedList.create(new MappedList<>(getControl().getCategories().sorted(Comparator.comparing(ShortcutCategoryDTO::getName)), ShortcutCategoryDTO::getShortcuts)).filtered(getControl().getFilter()::filter);
    filteredShortcuts.predicateProperty().bind(Bindings.createObjectBinding(() -> getControl().getFilter()::filter, getControl().getFilter().searchTermProperty(), getControl().getFilter().selectedShortcutCategoryProperty()));
    final SortedList<ShortcutDTO> sortedShortcuts = filteredShortcuts.sorted(Comparator.comparing(shortcut -> shortcut.getInfo().getName()));
    final ObservableList<ListWidgetElement<ShortcutDTO>> listWidgetEntries = new MappedList<>(sortedShortcuts, ListWidgetElement::create);
    final CombinedListWidget<ShortcutDTO> combinedListWidget = new CombinedListWidget<>(listWidgetEntries, this.selectedListWidget);
    // bind direction: controller property -> skin property
    getControl().selectedShortcutProperty().addListener((observable, oldValue, newValue) -> {
        if (newValue != null) {
            combinedListWidget.select(newValue);
        } else {
            combinedListWidget.deselect();
        }
    });
    // bind direction: skin property -> controller properties
    combinedListWidget.selectedElementProperty().addListener((observable, oldValue, newValue) -> {
        if (newValue != null) {
            final ShortcutDTO selectedItem = newValue.getItem();
            final MouseEvent event = newValue.getEvent();
            getControl().setSelectedShortcut(selectedItem);
            getControl().setOpenedDetailsPanel(new ShortcutInformation(selectedItem));
            if (event.getClickCount() == 2) {
                getControl().runShortcut(selectedItem);
            }
        } else {
            getControl().setSelectedShortcut(null);
            getControl().setOpenedDetailsPanel(new None());
        }
    });
    return combinedListWidget;
}
Also used : CombinedListWidget(org.phoenicis.javafx.components.common.widgets.control.CombinedListWidget) ShortcutCategoryDTO(org.phoenicis.library.dto.ShortcutCategoryDTO) StringBindings(org.phoenicis.javafx.utils.StringBindings) ObjectExpression(javafx.beans.binding.ObjectExpression) MappedList(org.phoenicis.javafx.collections.MappedList) MouseEvent(javafx.scene.input.MouseEvent) ShortcutEditing(org.phoenicis.javafx.components.library.panelstates.ShortcutEditing) Bindings(javafx.beans.binding.Bindings) SidebarBase(org.phoenicis.javafx.components.common.control.SidebarBase) org.phoenicis.javafx.components.library.control(org.phoenicis.javafx.components.library.control) ListWidgetElement(org.phoenicis.javafx.components.common.widgets.utils.ListWidgetElement) ShortcutInformation(org.phoenicis.javafx.components.library.panelstates.ShortcutInformation) ShortcutCreation(org.phoenicis.javafx.components.library.panelstates.ShortcutCreation) TabPane(javafx.scene.control.TabPane) None(org.phoenicis.javafx.components.common.panelstates.None) FeaturePanelSkin(org.phoenicis.javafx.components.common.skin.FeaturePanelSkin) ShortcutDTO(org.phoenicis.library.dto.ShortcutDTO) SwitchBinding(org.phoenicis.javafx.utils.SwitchBinding) SortedList(javafx.collections.transformation.SortedList) ListWidgetType(org.phoenicis.javafx.components.common.widgets.utils.ListWidgetType) ObjectProperty(javafx.beans.property.ObjectProperty) Node(javafx.scene.Node) FilteredList(javafx.collections.transformation.FilteredList) Localisation.tr(org.phoenicis.configuration.localisation.Localisation.tr) Observable(javafx.beans.Observable) JavaFxSettingsManager(org.phoenicis.javafx.settings.JavaFxSettingsManager) SimpleObjectProperty(javafx.beans.property.SimpleObjectProperty) Tab(javafx.scene.control.Tab) OpenDetailsPanel(org.phoenicis.javafx.components.common.panelstates.OpenDetailsPanel) DetailsPanel(org.phoenicis.javafx.components.common.control.DetailsPanel) Optional(java.util.Optional) ObjectBindings(org.phoenicis.javafx.utils.ObjectBindings) ObservableList(javafx.collections.ObservableList) ConcatenatedList(org.phoenicis.javafx.collections.ConcatenatedList) Comparator(java.util.Comparator) CombinedListWidget(org.phoenicis.javafx.components.common.widgets.control.CombinedListWidget) MouseEvent(javafx.scene.input.MouseEvent) ListWidgetElement(org.phoenicis.javafx.components.common.widgets.utils.ListWidgetElement) ShortcutInformation(org.phoenicis.javafx.components.library.panelstates.ShortcutInformation) ShortcutDTO(org.phoenicis.library.dto.ShortcutDTO) MappedList(org.phoenicis.javafx.collections.MappedList) ShortcutCategoryDTO(org.phoenicis.library.dto.ShortcutCategoryDTO) None(org.phoenicis.javafx.components.common.panelstates.None)

Example 4 with CombinedListWidget

use of org.phoenicis.javafx.components.common.widgets.control.CombinedListWidget in project POL-POM-5 by PhoenicisOrg.

the class ContainersFeaturePanelSkin method createContent.

/**
 * {@inheritDoc}
 */
@Override
public ObjectExpression<Node> createContent() {
    /*
         * initialize the container lists by:
         * 1. sorting the containers by their name
         * 2. filtering the containers
         */
    final FilteredList<ContainerDTO> filteredContainers = ConcatenatedList.create(new MappedList<>(getControl().getCategories().sorted(Comparator.comparing(ContainerCategoryDTO::getName)), ContainerCategoryDTO::getContainers)).sorted(Comparator.comparing(ContainerDTO::getName)).filtered(getControl().getFilter()::filter);
    filteredContainers.predicateProperty().bind(Bindings.createObjectBinding(() -> getControl().getFilter()::filter, getControl().getFilter().searchTermProperty()));
    final ObservableList<ListWidgetElement<ContainerDTO>> listWidgetEntries = new MappedList<>(filteredContainers, ListWidgetElement::create);
    final CombinedListWidget<ContainerDTO> combinedListWidget = new CombinedListWidget<>(listWidgetEntries, this.selectedListWidget);
    // bind direction: controller property -> skin property
    getControl().selectedContainerProperty().addListener((observable, oldValue, newValue) -> {
        if (newValue != null) {
            combinedListWidget.select(newValue);
        } else {
            combinedListWidget.deselect();
        }
    });
    // bind direction: skin property -> controller properties
    combinedListWidget.selectedElementProperty().addListener((observable, oldValue, newValue) -> {
        if (newValue != null) {
            final ContainerDTO selectedItem = newValue.getItem();
            getControl().setSelectedContainer(selectedItem);
            getControl().setOpenedDetailsPanel(new ContainerInformation(selectedItem));
        } else {
            getControl().setSelectedContainer(null);
            getControl().setOpenedDetailsPanel(new None());
        }
    });
    return new SimpleObjectProperty<>(combinedListWidget);
}
Also used : MappedList(org.phoenicis.javafx.collections.MappedList) SimpleObjectProperty(javafx.beans.property.SimpleObjectProperty) CombinedListWidget(org.phoenicis.javafx.components.common.widgets.control.CombinedListWidget) ListWidgetElement(org.phoenicis.javafx.components.common.widgets.utils.ListWidgetElement) ContainerInformation(org.phoenicis.javafx.components.container.panelstates.ContainerInformation) ContainerDTO(org.phoenicis.containers.dto.ContainerDTO) None(org.phoenicis.javafx.components.common.panelstates.None)

Example 5 with CombinedListWidget

use of org.phoenicis.javafx.components.common.widgets.control.CombinedListWidget in project POL-POM-5 by PhoenicisOrg.

the class EngineSubCategoryPanelSkin method createListWidget.

/**
 * Creates a new {@link CombinedListWidget} object containing all {@link EngineVersionDTO} objects in the given
 * {@link ObservableList filteredEngineVersions}
 *
 * @param filteredEngineVersions An {@link ObservableList} containing all to be shown {@link EngineVersionDTO}
 *            objects
 * @return A new {@link CombinedListWidget} object containing all {@link EngineVersionDTO} objects in the given
 *         {@link ObservableList filteredEngineVersions}
 */
private CombinedListWidget<EngineVersionDTO> createListWidget(ObservableList<EngineVersionDTO> filteredEngineVersions) {
    final ObservableList<ListWidgetElement<EngineVersionDTO>> listWidgetEntries = new MappedList<>(filteredEngineVersions, engineVersion -> ListWidgetElement.create(engineVersion, Files.exists(Paths.get(getControl().getEnginesPath(), getControl().getEngineCategory().getName().toLowerCase(), getControl().getEngineSubCategory().getName(), engineVersion.getVersion()))));
    final CombinedListWidget<EngineVersionDTO> listWidget = new CombinedListWidget<>(listWidgetEntries);
    listWidget.selectedListWidgetProperty().bind(getControl().selectedListWidgetProperty());
    listWidget.selectedElementProperty().addListener((observable, oldValue, newValue) -> {
        if (newValue != null) {
            final EngineVersionDTO engineItem = newValue.getItem();
            Map<String, String> userData = new HashMap<>();
            userData.put("Mono", engineItem.getMonoFile());
            userData.put("Gecko", engineItem.getGeckoFile());
            EngineDTO engineDTO = new EngineDTO.Builder().withCategory(getControl().getEngineCategory().getName()).withSubCategory(getControl().getEngineSubCategory().getName()).withVersion(engineItem.getVersion()).withUserData(userData).build();
            Optional.ofNullable(getControl().getOnEngineSelect()).ifPresent(onEngineSelect -> onEngineSelect.accept(engineDTO, getControl().getEngine()));
        }
    });
    return listWidget;
}
Also used : MappedList(org.phoenicis.javafx.collections.MappedList) CombinedListWidget(org.phoenicis.javafx.components.common.widgets.control.CombinedListWidget) EngineDTO(org.phoenicis.engines.dto.EngineDTO) EngineVersionDTO(org.phoenicis.engines.dto.EngineVersionDTO) HashMap(java.util.HashMap) ListWidgetElement(org.phoenicis.javafx.components.common.widgets.utils.ListWidgetElement)

Aggregations

MappedList (org.phoenicis.javafx.collections.MappedList)10 CombinedListWidget (org.phoenicis.javafx.components.common.widgets.control.CombinedListWidget)10 ListWidgetElement (org.phoenicis.javafx.components.common.widgets.utils.ListWidgetElement)10 SimpleObjectProperty (javafx.beans.property.SimpleObjectProperty)8 None (org.phoenicis.javafx.components.common.panelstates.None)8 Comparator (java.util.Comparator)2 HashMap (java.util.HashMap)2 Optional (java.util.Optional)2 Observable (javafx.beans.Observable)2 Bindings (javafx.beans.binding.Bindings)2 ObjectExpression (javafx.beans.binding.ObjectExpression)2 ObjectProperty (javafx.beans.property.ObjectProperty)2 ObservableList (javafx.collections.ObservableList)2 FilteredList (javafx.collections.transformation.FilteredList)2 SortedList (javafx.collections.transformation.SortedList)2 Node (javafx.scene.Node)2 Tab (javafx.scene.control.Tab)2 TabPane (javafx.scene.control.TabPane)2 MouseEvent (javafx.scene.input.MouseEvent)2 Localisation.tr (org.phoenicis.configuration.localisation.Localisation.tr)2