package ui import ( "github.com/gdamore/tcell/v2" "github.com/rivo/tview" ) type column struct { statusID int statusName string cards *tview.List } func (u *UI) newColumn(statusID int, statusName string) column { cards := tview.NewList() cards.SetBorder(true) cards.ShowSecondaryText(false) cards.SetTitle(" " + statusName + " ") cards.SetHighlightFullLine(true) cards.SetSelectedFocusOnly(true) cards.SetWrapAround(false) cards.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey { if event.Rune() == 'h' || event.Key() == tcell.KeyLeft { u.shiftColumnFocus(shiftLeft) } else if event.Rune() == 'l' || event.Key() == tcell.KeyRight { u.shiftColumnFocus(shiftRight) } return event }) c := column{ statusID: statusID, statusName: statusName, cards: cards, } return c } func (u *UI) setColumnFocus() { u.SetFocus(u.columns[u.focusedColumn].cards) } func (u *UI) shiftColumnFocus(s int) { switch s { case shiftRight: if u.focusedColumn == len(u.columns)-1 { u.focusedColumn = 0 } else { u.focusedColumn++ } case shiftLeft: if u.focusedColumn == 0 { u.focusedColumn = len(u.columns) - 1 } else { u.focusedColumn-- } } u.setColumnFocus() }