use super::initialization_flags::Flags;
use crate::prelude::*;
use crate::utils::fs::*;
use std::path::{Path, PathBuf};
pub(super) struct InnerPathFinder<T>
where
T: crate::utils::Navigator<Entry, Root, PathBuf>,
{
navigator: T,
component: crate::ui::components::NavigatorComponent<T, Entry, Root>,
}
impl<T> InnerPathFinder<T>
where
T: crate::utils::Navigator<Entry, Root, PathBuf>,
{
pub(super) fn new(file_path: &str, navigator: T, flags: Flags) -> Self {
Self {
navigator,
component: crate::ui::components::NavigatorComponent::new(file_path, flags.contains(Flags::ReadOnly), flags.contains(Flags::CaseSensitive)),
}
}
pub(super) fn on_paint(&self, surface: &mut Surface, theme: &Theme, control: &ControlBase) {
self.component.on_paint(control, surface, theme);
}
pub(super) fn on_key_pressed(&mut self, key: Key, character: char, control: &mut ControlBase) -> EventProcessStatus {
self.component.on_key_pressed(control, key, character, &self.navigator)
}
pub(super) fn on_expand(&mut self, direction: ExpandedDirection, control: &ControlBase) {
self.component.on_expand(control, direction);
}
pub(super) fn on_resize(&mut self, control: &ControlBase, old_size: Size, new_size: Size) {
self.component.on_resize(control, old_size, new_size);
}
pub(super) fn on_focus(&mut self, control: &mut ControlBase) {
self.component.on_focus(control);
}
pub(super) fn on_lose_focus(&mut self, control: &mut ControlBase) {
self.component.on_lose_focus(control);
}
pub(super) fn on_theme_changed(&mut self, theme: &Theme) {
self.component.on_theme_changed(theme);
}
pub(super) fn on_mouse_event(&mut self, control: &ControlBase, event: &MouseEvent) -> EventProcessStatus {
self.component.on_mouse_event(control, event)
}
pub(super) fn path(&self) -> &Path {
Path::new(self.component.path())
}
pub(super) fn set_path(&mut self, path: &str, control: &ControlBase) {
self.component.set_input_path(path,true, control);
}
}