package main
import (
"fmt"
"strings"
"sync"
log "github.com/Sirupsen/logrus"
)
type refViewHandler func(*RefView, Action) error
// RenderedRefType is the type (branch, tag, etc...) of a rendered ref
type RenderedRefType int
// The set of RenderedRefTypes
const (
RvLocalBranchGroup RenderedRefType = iota
RvRemoteBranchGroup
RvLocalBranch
RvHead
RvRemoteBranch
RvTagGroup
RvTag
RvSpace
RvLoading
)
var refToTheme = map[RenderedRefType]ThemeComponentID{
RvLocalBranchGroup: CmpRefviewLocalBranchesHeader,
RvRemoteBranchGroup: CmpRefviewRemoteBranchesHeader,
RvLocalBranch: CmpRefviewLocalBranch,
RvHead: CmpRefviewHead,
RvRemoteBranch: CmpRefviewRemoteBranch,
RvTagGroup: CmpRefviewTagsHeader,
RvTag: CmpRefviewTag,
}
type renderedRefGenerator func(*RefView, *refList, renderedRefSet)
type refList struct {
name string
expanded bool
renderer renderedRefGenerator
renderedRefType RenderedRefType
}
// RenderedRef represents a reference's string value and meta data
type RenderedRef struct {
value string
ref Ref
renderedRefType RenderedRefType
refList *refList
refNum uint
}
func (renderedRef *RenderedRef) isSelectable() bool {
return renderedRef.renderedRefType != RvSpace && renderedRef.renderedRefType != RvLoading
}
type renderedRefSet interface {
Add(*RenderedRef)
AddChild(renderedRefSet)
RemoveChild() (removed bool)
Child() renderedRefSet
Clear()
RenderedRefs() []*RenderedRef
Children()