-
Notifications
You must be signed in to change notification settings - Fork 12
/
keyhandlers.go
116 lines (100 loc) · 5 KB
/
keyhandlers.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package keybindings
import "github.com/stuartleeks/gocui"
// HandlerID is used as the ID for Key Handlers
type HandlerID string
const (
HandlerIDQuit HandlerID = "quit" //nolint:golint
HandlerIDCopy HandlerID = "copy" //nolint:golint
HandlerIDListDelete HandlerID = "listdelete" //nolint:golint
HandlerIDFullScreen HandlerID = "fullscreen" //nolint:golint
HandlerIDHelp HandlerID = "help" //nolint:golint
HandlerIDItemBack HandlerID = "itemback" //nolint:golint
HandlerIDItemLeft HandlerID = "itemleft" //nolint:golint
HandlerIDListActions HandlerID = "listactions" //nolint:golint
HandlerIDListBack HandlerID = "listback" //nolint:golint
HandlerIDListBackLegacy HandlerID = "listbacklegacy" //nolint:golint
HandlerIDListDown HandlerID = "listdown" //nolint:golint
HandlerIDListUp HandlerID = "listup" //nolint:golint
HandlerIDListRight HandlerID = "listright" //nolint:golint
HandlerIDListEdit HandlerID = "listedit" //nolint:golint
HandlerIDListExpand HandlerID = "listexpand" //nolint:golint
HandlerIDListOpen HandlerID = "listopen" //nolint:golint
HandlerIDListRefresh HandlerID = "listrefresh" //nolint:golint
HandlerIDListUpdate HandlerID = "listupdate" //nolint:golint
HandlerIDListPageDown HandlerID = "listpagedown" //nolint:golint
HandlerIDListPageUp HandlerID = "listpageup" //nolint:golint
HandlerIDListEnd HandlerID = "listend" //nolint:golint
HandlerIDListHome HandlerID = "listhome" //nolint:golint
HandlerIDListClearFilter HandlerID = "listclearfilter" //nolint:golint
HandlerIDListCopyItemID HandlerID = "listcopyitemid" //nolint:golint
HandlerIDListDebugCopyItemData HandlerID = "listdebugcopyitemdata" //nolint:golint
HandlerIDConfirmDelete HandlerID = "confirmdelete" //nolint:golint
HandlerIDClearPendingDeletes HandlerID = "clearpendingdeletes" //nolint:golint
HandlerIDItemPageDown HandlerID = "itempagedown" //nolint:golint
HandlerIDItemPageUp HandlerID = "itempageup" //nolint:golint
HandlerIDToggleOpenCommandPanel HandlerID = "commandpanelopen" //nolint:golint
HandlerIDToggleCloseCommandPanel HandlerID = "commandpanelclose" //nolint:golint
HandlerIDCommandPanelDown HandlerID = "commandpaneldown" //nolint:golint
HandlerIDCommandPanelUp HandlerID = "commandpanelup" //nolint:golint
HandlerIDCommandPanelEnter HandlerID = "commandpanelenter" //nolint:golint
HandlerIDFilter HandlerID = "filter" //nolint:golint
HandlerIDAzureSearchQuery HandlerID = "azuresearchquery" //nolist:golint
HandlerIDToggleDemoMode HandlerID = "toggledemomode" //nolist:golint
HandlerIDListSort HandlerID = "listsort" //nolint:golint
)
// KeyHandler is an interface that all key handlers must implement
type KeyHandler interface {
ID() string
Fn() func(g *gocui.Gui, v *gocui.View) error
Widget() string
DefaultKey() interface{}
}
// KeyHandlerBase A base structure that will return the associated handler id from
// the HandlersId array and a default key for the handler.
type KeyHandlerBase struct {
id HandlerID
}
// ID returns the name of this item for example "listup"
func (h KeyHandlerBase) ID() string {
return string(h.id)
}
// DefaultKey returns the default key mapped to the handler
func (h KeyHandlerBase) DefaultKey() interface{} {
return DefaultKeys[h.ID()]
}
// ListHandler is a parent struct for all key handlers tied to the
// list widget view
type ListHandler struct {
KeyHandlerBase
}
// Widget returns the name of the widget this handler binds to
func (h ListHandler) Widget() string {
return "listWidget"
}
// ItemHandler is a parent struct for all key handlers tied to the
// item widget view
type ItemHandler struct {
KeyHandlerBase
}
// Widget returns the name of the widget this handler binds to
func (h ItemHandler) Widget() string {
return "itemWidget"
}
// GlobalHandler is a parent struct for all key handlers not tied to
// a specific view.
type GlobalHandler struct {
KeyHandlerBase
}
// Widget returns the name of the widget this handler binds to
func (h GlobalHandler) Widget() string {
return ""
}
// CommandPanelHandler is a parent struct for all key handlers not tied to
// a specific view.
type CommandPanelHandler struct {
KeyHandlerBase
}
// Widget returns the name of the widget this handler binds to
func (h CommandPanelHandler) Widget() string {
return "commandPanelWidget"
}