77 lines
1.5 KiB
Go
77 lines
1.5 KiB
Go
package view
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/derailed/k9s/internal/model"
|
|
"github.com/derailed/k9s/internal/ui"
|
|
"github.com/derailed/tview"
|
|
"github.com/gdamore/tcell/v2"
|
|
)
|
|
|
|
// Picker represents a container picker.
|
|
type Picker struct {
|
|
*tview.List
|
|
|
|
actions ui.KeyActions
|
|
}
|
|
|
|
// NewPicker returns a new picker.
|
|
func NewPicker() *Picker {
|
|
return &Picker{
|
|
List: tview.NewList(),
|
|
actions: ui.KeyActions{},
|
|
}
|
|
}
|
|
|
|
// Init initializes the view.
|
|
func (p *Picker) Init(ctx context.Context) error {
|
|
app, err := extractApp(ctx)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
p.actions[tcell.KeyEscape] = ui.NewKeyAction("Back", app.PrevCmd, true)
|
|
|
|
p.SetBorder(true)
|
|
p.SetMainTextColor(tcell.ColorWhite)
|
|
p.ShowSecondaryText(false)
|
|
p.SetShortcutColor(tcell.ColorAqua)
|
|
p.SetSelectedBackgroundColor(tcell.ColorAqua)
|
|
p.SetTitle(" [aqua::b]Containers Picker ")
|
|
p.SetInputCapture(func(evt *tcell.EventKey) *tcell.EventKey {
|
|
if a, ok := p.actions[evt.Key()]; ok {
|
|
a.Action(evt)
|
|
evt = nil
|
|
}
|
|
return evt
|
|
})
|
|
|
|
return nil
|
|
}
|
|
|
|
// Start starts the view.
|
|
func (p *Picker) Start() {}
|
|
|
|
// Stop stops the view.
|
|
func (p *Picker) Stop() {}
|
|
|
|
// Name returns the component name.
|
|
func (p *Picker) Name() string { return "picker" }
|
|
|
|
// Hints returns the view hints.
|
|
func (p *Picker) Hints() model.MenuHints {
|
|
return p.actions.Hints()
|
|
}
|
|
|
|
// ExtraHints returns additional hints.
|
|
func (p *Picker) ExtraHints() map[string]string {
|
|
return nil
|
|
}
|
|
|
|
func (p *Picker) populate(ss []string) {
|
|
p.Clear()
|
|
for i, s := range ss {
|
|
p.AddItem(s, "Select a container", rune('a'+i), nil)
|
|
}
|
|
}
|