package org.jrebirth.af.component.ui.stack;
import org.jrebirth.af.api.key.UniqueKey;
import org.jrebirth.af.api.ui.Model;
import org.jrebirth.af.api.wave.contract.WaveType;
import org.jrebirth.af.core.wave.Builders;
import org.jrebirth.af.core.wave.WaveItemBase;
/**
* The class <strong>StackWaves</strong>.
*
* All {@link WaveItemBase} and {@link WaveType} used to manage the stack model.
*
* @author Sébastien Bordes
*/
public interface StackWaves {
/*****************************************************************************************************/
/** _________________________________________Wave Items.____________________________________________ */
/*****************************************************************************************************/
/** The name of the stack concerned. */
WaveItemBase<String> STACK_NAME = new WaveItemBase<String>() {
};
/** The Enum class that list all pages displayable into the stack. */
// WaveItem<Class<? extends PageEnum>> STACK_PAGES = new WaveItem<Class<? extends PageEnum>>() {
// };
/** The page to display (model class descriptor). */
WaveItemBase<UniqueKey<? extends Model>> PAGE_MODEL_KEY = new WaveItemBase<UniqueKey<? extends Model>>() {
};
/** The page to display (enum descriptor). */
WaveItemBase<PageEnum> PAGE_ENUM = new WaveItemBase<PageEnum>() {
};
/*****************************************************************************************************/
/** _________________________________________Wave Types.____________________________________________ */
/*****************************************************************************************************/
/** Show Page (with Model) action. */
WaveType SHOW_PAGE_MODEL = Builders.waveType("SHOW_PAGE_MODEL").items(PAGE_MODEL_KEY, STACK_NAME);
/** Show Page (with Enum) action. */
WaveType SHOW_PAGE_ENUM = Builders.waveType("SHOW_PAGE_ENUM").items(PAGE_ENUM/* , STACK_PAGES */);
}