mirror of
https://github.com/jesseduffield/lazydocker.git
synced 2026-07-22 07:11:01 +00:00
42 lines
954 B
Go
42 lines
954 B
Go
package panels
|
|
|
|
import (
|
|
"github.com/jesseduffield/gocui"
|
|
lcUtils "github.com/jesseduffield/lazycore/pkg/utils"
|
|
)
|
|
|
|
type ListPanel[T comparable] struct {
|
|
SelectedIdx int
|
|
List *FilteredList[T]
|
|
View *gocui.View
|
|
}
|
|
|
|
func (self *ListPanel[T]) SetSelectedLineIdx(value int) {
|
|
clampedValue := 0
|
|
if self.List.Len() > 0 {
|
|
clampedValue = lcUtils.Clamp(value, 0, self.List.Len()-1)
|
|
}
|
|
|
|
self.SelectedIdx = clampedValue
|
|
}
|
|
|
|
func (self *ListPanel[T]) clampSelectedLineIdx() {
|
|
clamped := lcUtils.Clamp(self.SelectedIdx, 0, self.List.Len()-1)
|
|
|
|
if clamped != self.SelectedIdx {
|
|
self.SelectedIdx = clamped
|
|
}
|
|
}
|
|
|
|
// moves the cursor up or down by the given amount (up for negative values)
|
|
func (self *ListPanel[T]) moveSelectedLine(delta int) {
|
|
self.SetSelectedLineIdx(self.SelectedIdx + delta)
|
|
}
|
|
|
|
func (self *ListPanel[T]) SelectNextLine() {
|
|
self.moveSelectedLine(1)
|
|
}
|
|
|
|
func (self *ListPanel[T]) SelectPrevLine() {
|
|
self.moveSelectedLine(-1)
|
|
}
|