package org.ovirt.engine.ui.common.presenter; import java.util.ArrayList; import java.util.List; public abstract class AbstractMainTabSelectedItems<T> { private List<T> selectedItems; private final List<MainTabSelectedItemChangeListener<T>> registeredListeners = new ArrayList<>(); public boolean hasSelection() { return selectedItems != null && !selectedItems.isEmpty(); } public T getSelectedItem() { return hasSelection() ? selectedItems.get(0) : null; } public void registerListener(MainTabSelectedItemChangeListener<T> listener) { if (!registeredListeners.contains(listener)) { registeredListeners.add(listener); } } /** * Notifies this object that the main tab selection has changed. */ protected void selectedItemsChanged(List<T> mainTabSelectedItems) { this.selectedItems = mainTabSelectedItems; T firstSelectedItem = getSelectedItem(); // Notify listeners of selection change if (firstSelectedItem != null) { for (MainTabSelectedItemChangeListener<T> listener: registeredListeners) { listener.itemChanged(firstSelectedItem); } } } }