/// UI components module
mod components;
mod entity_browser;
mod file_editor;
mod main_editor;
mod menu_bar;
mod quick_actions;
mod tabs;

use iced::{
    Element,
    Length,
    widget::{
        column,
        row,
    },
};

use crate::app::{
    Editor,
    Message,
};

pub fn view(editor: &Editor) -> Element<'_, Message> {
    let menu_bar = menu_bar::view(editor);
    let tab_bar = tabs::tab_bar(editor);
    let main_editor = main_editor::view(editor);

    let editor_with_tabs = column![tab_bar, main_editor]
        .spacing(0)
        .width(Length::Fill)
        .height(Length::Fill);

    // Zed-like layout: file tree + editor (only show file tree when project is
    // open)
    let main_content = if editor.project.is_some() {
        let entity_browser = entity_browser::view(editor);
        row![entity_browser, editor_with_tabs]
            .spacing(0)
            .width(Length::Fill)
            .height(Length::Fill)
    } else {
        // No project - just show editor area (welcome screen)
        row![editor_with_tabs]
            .spacing(0)
            .width(Length::Fill)
            .height(Length::Fill)
    };

    column![menu_bar, main_content]
        .spacing(0)
        .width(Length::Fill)
        .height(Length::Fill)
        .into()
}
