//
// File: foldhaus_panel_hierarchy.h
// Author: Peter Slattery
// Creation Date: 2020-01-01
//
#ifndef FOLDHAUS_PANEL_HIERARCHY_H

input_command HierarchyView_Commands[] = {{}};
s32 HierarchyView_CommandsCount = 0;

GSMetaTag(panel_init);
GSMetaTag(panel_type_hierarchy);
internal void
HierarchyView_Init(panel* Panel, app_state* State, context Context)
{
    
}

GSMetaTag(panel_cleanup);
GSMetaTag(panel_type_hierarchy);
internal void
HierarchyView_Cleanup(panel* Panel, app_state* State)
{
    
}

PANEL_MODAL_OVERRIDE_CALLBACK(LoadAssemblyCallback)
{
    Assert(ReturningFrom->TypeIndex == PanelType_FileView);
    file_view_state* FileViewState = Panel_GetStateStruct(ReturningFrom, file_view_state);
    gs_file_info FileInfo = FileViewState->SelectedFile;
    
    LoadAssembly(&State->Assemblies, &State->LedSystem, State->Transient, Context, FileInfo.Path, State->GlobalLog);
}

GSMetaTag(panel_render);
GSMetaTag(panel_type_hierarchy);
internal void
HierarchyView_Render(panel* Panel, rect2 PanelBounds, render_command_buffer* RenderBuffer, app_state* State, context Context)
{
    gs_string TempString = PushString(State->Transient, 256);
    
    ui_PushLayout(&State->Interface, PanelBounds, LayoutDirection_TopDown, MakeString("Hierarchy Layout"));
    ui_BeginList(&State->Interface, MakeString("Hierarchy List"), 10, State->Assemblies.Count + 1);
    {
        ui_column_spec Cols[2] = {
            ui_column_spec{ UIColumnSize_Fill, 0 },
            ui_column_spec{ UIColumnSize_MaxWidth, 128 }
        };
        for (u32 i = 0; i < State->Assemblies.Count; i++)
        {
            ui_BeginRow(&State->Interface, 2, &Cols[0]);
            
            assembly Assembly = State->Assemblies.Values[i];
            PrintF(&TempString, "%S", Assembly.Name);
            
            ui_Label(&State->Interface, TempString);
            if (ui_Button(&State->Interface, MakeString("X")))
            {
                UnloadAssembly(i, State, Context);
            }
            
            ui_EndRow(&State->Interface);
        }
        
        
        ui_BeginRow(&State->Interface, 2, &Cols[0]);
        ui_Label(&State->Interface, MakeString(" "));
        if (ui_Button(&State->Interface, MakeString("+ Add Assembly")))
        {
            panel* FileBrowser = PanelSystem_PushPanel(&State->PanelSystem, PanelType_FileView, State, Context);
            FileView_SetMode(FileBrowser, FileViewMode_Load);
            Panel_PushModalOverride(Panel, FileBrowser, LoadAssemblyCallback);
        }
        ui_EndRow(&State->Interface);
    }
    ui_EndList(&State->Interface);
    ui_PopLayout(&State->Interface, MakeString("Hierarchy Layout"));
}


#define FOLDHAUS_PANEL_HIERARCHY_H
#endif // FOLDHAUS_PANEL_HIERARCHY_H
