Passed
Push — main ( 375dae...05b53a )
by Rafael
01:12
created

ui/file_browser_tabs.go   A

Size/Duplication

Total Lines 60
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
cc 11
eloc 39
dl 0
loc 60
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A ui.NewFileBrowserTab 0 8 2
A ui.*FileBrowserTabs.Container 0 6 2
A ui.*FileBrowserTabs.getConnection 0 9 3
A ui.*FileBrowserTabs.CloseAll 0 3 2
A ui.*FileBrowserTabs.AddConnection 0 9 2
1
package ui
2
3
import (
4
	"fyne.io/fyne/v2/container"
5
	"github.com/rchargel/hdfs-explorer/files"
6
	"github.com/rchargel/hdfs-explorer/log"
7
)
8
9
var closeAllBrowsers func()
10
11
type FileBrowserTabs struct {
12
	browsers []*FileBrowser
13
	tabs     *container.AppTabs
14
}
15
16
func NewFileBrowserTab() *FileBrowserTabs {
17
	fileBrowserTabs := &FileBrowserTabs{make([]*FileBrowser, 0), container.NewAppTabs()}
18
	fileBrowserTabs.tabs.SetTabLocation(container.TabLocationTop)
19
20
	closeAllBrowsers = func() {
21
		fileBrowserTabs.CloseAll()
22
	}
23
	return fileBrowserTabs
24
}
25
26
func (f *FileBrowserTabs) Container() *container.AppTabs {
27
	if f.tabs == nil {
28
		f.tabs = container.NewAppTabs()
29
		f.tabs.SetTabLocation(container.TabLocationTop)
30
	}
31
	return f.tabs
32
}
33
34
func (f *FileBrowserTabs) AddConnection(client files.FileSystemClient) {
35
	log.Info.Printf("Open Connection %v\n", client.Name())
36
	if tabIndex := f.getConnection(client.Name()); tabIndex < 0 {
37
		browser := NewFileBrowser(client)
38
		f.browsers = append(f.browsers, browser)
39
		f.tabs.Append(browser.Tab())
40
		f.tabs.SelectTabIndex(len(f.browsers) - 1)
41
	} else {
42
		f.tabs.SelectTabIndex(tabIndex)
43
	}
44
}
45
46
func (f *FileBrowserTabs) CloseAll() {
47
	for _, b := range f.browsers {
48
		b.Close()
49
	}
50
}
51
52
func (f *FileBrowserTabs) getConnection(client string) int {
53
	idx := 0
54
	for _, conn := range f.browsers {
55
		if conn.client.Name() == client {
56
			return idx
57
		}
58
		idx++
59
	}
60
	return -1
61
}
62