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 { switch event.Rune() { case 'q': u.pages.ShowPage(quitPageName) u.SetFocus(u.quit) case 'a': u.pages.ShowPage(addPageName) u.SetFocus(u.add) case 'h': u.shiftColumnFocus(shiftLeft) case 'l': 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() }