-
Notifications
You must be signed in to change notification settings - Fork 36
/
button.go
74 lines (68 loc) · 2.1 KB
/
button.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
package view
import "github.com/ungerik/go-start/utils"
///////////////////////////////////////////////////////////////////////////////
// Button
// Button represents a HTML input element of type button or submit.
type Button struct {
ViewBaseWithId
Name string
Value interface{}
Submit bool
Class string
Disabled bool
TabIndex int
OnClick string
OnClickConfirm string // Will add a confirmation dialog for onclick
Content View // Only used when Submit is false
}
func (self *Button) IterateChildren(callback IterateChildrenCallback) {
if self.Content != nil {
callback(self, self.Content)
}
}
func (self *Button) Render(context *Context, writer *utils.XMLWriter) (err error) {
if self.Submit {
writer.OpenTag("input").Attrib("id", self.id).AttribIfNotDefault("class", self.Class)
writer.Attrib("type", "submit")
writer.AttribIfNotDefault("name", self.Name)
writer.AttribIfNotDefault("value", self.Value)
if self.Disabled {
writer.Attrib("disabled", "disabled")
}
writer.AttribIfNotDefault("tabindex", self.TabIndex)
if self.OnClickConfirm != "" {
writer.Attrib("onclick", "return confirm('", self.OnClickConfirm, "');")
} else {
writer.AttribIfNotDefault("onclick", self.OnClick)
}
writer.CloseTag()
} else {
writer.OpenTag("button").Attrib("id", self.id).AttribIfNotDefault("class", self.Class)
writer.Attrib("type", "button")
writer.AttribIfNotDefault("name", self.Name)
writer.AttribIfNotDefault("value", self.Value)
if self.Disabled {
writer.Attrib("disabled", "disabled")
}
writer.AttribIfNotDefault("tabindex", self.TabIndex)
if self.OnClickConfirm != "" {
writer.Attrib("onclick", "return confirm('", self.OnClickConfirm, "');")
} else {
writer.AttribIfNotDefault("onclick", self.OnClick)
}
if self.Content != nil {
err = self.Content.Render(context, writer)
}
writer.ForceCloseTag()
}
return nil
}
//func (self *Button) SetName(name string) {
// self.Name = name
// ViewChanged(self)
//}
//
//func (self *Button) SetValue(value string) {
// self.Value = value
// ViewChanged(self)
//}