Trait relm4::factory::FactoryComponent
source · pub trait FactoryComponent: Position<<Self::ParentWidget as FactoryView>::Position> + Sized + 'static {
type ParentWidget: FactoryView + 'static;
type ParentInput: Debug + 'static;
type CommandOutput: Debug + Send + 'static;
type Input: Debug + 'static;
type Output: Debug + 'static;
type Init;
type Root: AsRef<<Self::ParentWidget as FactoryView>::Children> + Debug + Clone;
type Widgets: 'static;
// Required methods
fn init_model(
init: Self::Init,
index: &DynamicIndex,
sender: FactorySender<Self>
) -> Self;
fn init_root(&self) -> Self::Root;
fn init_widgets(
&mut self,
index: &DynamicIndex,
root: &Self::Root,
returned_widget: &<Self::ParentWidget as FactoryView>::ReturnedWidget,
sender: FactorySender<Self>
) -> Self::Widgets;
// Provided methods
fn output_to_parent_input(
_output: Self::Output
) -> Option<Self::ParentInput> { ... }
fn update(&mut self, message: Self::Input, sender: FactorySender<Self>) { ... }
fn update_cmd(
&mut self,
message: Self::CommandOutput,
sender: FactorySender<Self>
) { ... }
fn update_cmd_with_view(
&mut self,
widgets: &mut Self::Widgets,
message: Self::CommandOutput,
sender: FactorySender<Self>
) { ... }
fn update_view(
&self,
widgets: &mut Self::Widgets,
sender: FactorySender<Self>
) { ... }
fn update_with_view(
&mut self,
widgets: &mut Self::Widgets,
message: Self::Input,
sender: FactorySender<Self>
) { ... }
fn shutdown(
&mut self,
widgets: &mut Self::Widgets,
output: Sender<Self::Output>
) { ... }
fn id(&self) -> String { ... }
}
Expand description
A component that’s stored inside a factory.
Similar to Component
but adjusted to fit the life cycle
of factories.
Required Associated Types§
sourcetype ParentWidget: FactoryView + 'static
type ParentWidget: FactoryView + 'static
Container widget to which all widgets of the factory will be added.
sourcetype ParentInput: Debug + 'static
type ParentInput: Debug + 'static
Input messages sent to the parent component.
sourcetype CommandOutput: Debug + Send + 'static
type CommandOutput: Debug + Send + 'static
Messages which are received from commands executing in the background.
sourcetype Root: AsRef<<Self::ParentWidget as FactoryView>::Children> + Debug + Clone
type Root: AsRef<<Self::ParentWidget as FactoryView>::Children> + Debug + Clone
The widget that was constructed by the factory component.
Required Methods§
sourcefn init_model(
init: Self::Init,
index: &DynamicIndex,
sender: FactorySender<Self>
) -> Self
fn init_model( init: Self::Init, index: &DynamicIndex, sender: FactorySender<Self> ) -> Self
Initializes the model.
sourcefn init_widgets(
&mut self,
index: &DynamicIndex,
root: &Self::Root,
returned_widget: &<Self::ParentWidget as FactoryView>::ReturnedWidget,
sender: FactorySender<Self>
) -> Self::Widgets
fn init_widgets( &mut self, index: &DynamicIndex, root: &Self::Root, returned_widget: &<Self::ParentWidget as FactoryView>::ReturnedWidget, sender: FactorySender<Self> ) -> Self::Widgets
Initializes the widgets.
Provided Methods§
sourcefn output_to_parent_input(_output: Self::Output) -> Option<Self::ParentInput>
fn output_to_parent_input(_output: Self::Output) -> Option<Self::ParentInput>
Optionally convert an output message from this component to an input message for the parent component. By default this method does nothing, you must overwrite it to forward messages.
If None
is returned, nothing is forwarded.
sourcefn update(&mut self, message: Self::Input, sender: FactorySender<Self>)
fn update(&mut self, message: Self::Input, sender: FactorySender<Self>)
Processes inputs received by the component.
sourcefn update_cmd(
&mut self,
message: Self::CommandOutput,
sender: FactorySender<Self>
)
fn update_cmd( &mut self, message: Self::CommandOutput, sender: FactorySender<Self> )
Defines how the component should respond to command updates.
sourcefn update_cmd_with_view(
&mut self,
widgets: &mut Self::Widgets,
message: Self::CommandOutput,
sender: FactorySender<Self>
)
fn update_cmd_with_view( &mut self, widgets: &mut Self::Widgets, message: Self::CommandOutput, sender: FactorySender<Self> )
Handles updates from a command.
sourcefn update_view(&self, widgets: &mut Self::Widgets, sender: FactorySender<Self>)
fn update_view(&self, widgets: &mut Self::Widgets, sender: FactorySender<Self>)
Updates the view after the model has been updated.
sourcefn update_with_view(
&mut self,
widgets: &mut Self::Widgets,
message: Self::Input,
sender: FactorySender<Self>
)
fn update_with_view( &mut self, widgets: &mut Self::Widgets, message: Self::Input, sender: FactorySender<Self> )
Updates the model and view. Optionally returns a command to run.