package view import ( "context" "github.com/derailed/k9s/internal/model" "github.com/derailed/k9s/internal/resource" "github.com/derailed/k9s/internal/ui" "github.com/gdamore/tcell" "github.com/rs/zerolog/log" ) // MasterDetail presents a master-detail viewer. type MasterDetail struct { *PageStack enterFn enterFn extraActionsFn func(ui.KeyActions) details *Details currentNS string title string } // NewMasterDetail returns a new master-detail viewer. func NewMasterDetail(title, ns string) *MasterDetail { return &MasterDetail{ PageStack: NewPageStack(), title: title, currentNS: ns, } } // Init initializes the viewer. func (m *MasterDetail) Init(ctx context.Context) { log.Debug().Msgf("\t>>>MasterDetail init %q", m.title) app := ctx.Value(ui.KeyApp).(*App) if m.currentNS != resource.NotNamespaced { m.currentNS = app.Config.ActiveNamespace() } m.PageStack.Init(ctx) m.AddListener(app.Menu()) t := NewTable(m.title) m.Push(t) m.details = NewDetails(m.app, func(evt *tcell.EventKey) *tcell.EventKey { m.Pop() return nil }) m.details.Init(ctx) log.Debug().Msgf("\t<<<