use crate::element::parser::ElementParser;
use crate::event::Event;
use crate::{
command::WebDynproCommand,
element::{
definition::ElementDefinition,
layout::{TabStripDef, tab_strip::item::TabStripItemDef},
},
error::WebDynproError,
};
pub struct TabStripTabSelectEventCommand {
element_def: TabStripDef,
item_id: String,
item_index: u32,
first_visible_item_index: u32,
}
impl TabStripTabSelectEventCommand {
pub fn new(
element_def: TabStripDef,
item: TabStripItemDef,
item_index: u32,
first_visible_item_index: u32,
) -> TabStripTabSelectEventCommand {
Self {
element_def,
item_id: item.id().to_owned(),
item_index,
first_visible_item_index,
}
}
}
impl WebDynproCommand for TabStripTabSelectEventCommand {
type Result = Event;
fn dispatch(&self, parser: &ElementParser) -> Result<Self::Result, WebDynproError> {
parser.element_from_def(&self.element_def)?.tab_select(
&self.item_id,
self.item_index,
self.first_visible_item_index,
)
}
}