mirror of
https://github.com/jesseduffield/lazygit.git
synced 2024-12-14 11:23:09 +02:00
8e46b8a275
There's more work to be done to support filtering for these views so we're sticking with searching for now
66 lines
1.7 KiB
Go
66 lines
1.7 KiB
Go
package context
|
|
|
|
import (
|
|
"github.com/jesseduffield/generics/slices"
|
|
"github.com/jesseduffield/lazygit/pkg/commands/models"
|
|
"github.com/jesseduffield/lazygit/pkg/gui/filetree"
|
|
"github.com/jesseduffield/lazygit/pkg/gui/presentation"
|
|
"github.com/jesseduffield/lazygit/pkg/gui/types"
|
|
)
|
|
|
|
type WorkingTreeContext struct {
|
|
*filetree.FileTreeViewModel
|
|
*ListContextTrait
|
|
*SearchTrait
|
|
}
|
|
|
|
var _ types.IListContext = (*WorkingTreeContext)(nil)
|
|
|
|
func NewWorkingTreeContext(c *ContextCommon) *WorkingTreeContext {
|
|
viewModel := filetree.NewFileTreeViewModel(
|
|
func() []*models.File { return c.Model().Files },
|
|
c.Log,
|
|
c.UserConfig.Gui.ShowFileTree,
|
|
)
|
|
|
|
getDisplayStrings := func(startIdx int, length int) [][]string {
|
|
lines := presentation.RenderFileTree(viewModel, c.Modes().Diffing.Ref, c.Model().Submodules)
|
|
return slices.Map(lines, func(line string) []string {
|
|
return []string{line}
|
|
})
|
|
}
|
|
|
|
ctx := &WorkingTreeContext{
|
|
SearchTrait: NewSearchTrait(c),
|
|
FileTreeViewModel: viewModel,
|
|
ListContextTrait: &ListContextTrait{
|
|
Context: NewSimpleContext(NewBaseContext(NewBaseContextOpts{
|
|
View: c.Views().Files,
|
|
WindowName: "files",
|
|
Key: FILES_CONTEXT_KEY,
|
|
Kind: types.SIDE_CONTEXT,
|
|
Focusable: true,
|
|
})),
|
|
list: viewModel,
|
|
getDisplayStrings: getDisplayStrings,
|
|
c: c,
|
|
},
|
|
}
|
|
|
|
ctx.GetView().SetOnSelectItem(ctx.SearchTrait.onSelectItemWrapper(func(selectedLineIdx int) error {
|
|
ctx.GetList().SetSelectedLineIdx(selectedLineIdx)
|
|
return ctx.HandleFocus(types.OnFocusOpts{})
|
|
}))
|
|
|
|
return ctx
|
|
}
|
|
|
|
func (self *WorkingTreeContext) GetSelectedItemId() string {
|
|
item := self.GetSelected()
|
|
if item == nil {
|
|
return ""
|
|
}
|
|
|
|
return item.ID()
|
|
}
|