//go:generate go generate ./java //go:generate go-bindata java/classes.dex package main import ( "gioui.org/app" "gioui.org/io/system" "gioui.org/layout" "gioui.org/op" "gioui.org/unit" "gioui.org/widget/material" "gioui.org/font/gofont" ) var ( labchan chan string ) type ( D = layout.Dimensions C = layout.Context ) func main() { labchan = make(chan string) go eventloop() app.Main() } func eventloop() { w := app.NewWindow(app.Title("Dex")) th := material.NewTheme(gofont.Collection()) var ops op.Ops sysinset := &layout.Inset{} margin := layout.UniformInset(unit.Dp(10)) labels := []material.LabelStyle{} list := &layout.List{Axis: layout.Vertical} go func() { labchan <- "Starting" SetJVM() CallJNI() }() resetSysinset := func(x system.Insets) { sysinset.Top = x.Top sysinset.Bottom = x.Bottom sysinset.Left = x.Left sysinset.Right = x.Right } for { select { case x := <-labchan: labels = append(labels, material.Body1(th, x)) w.Invalidate() case e := <-w.Events(): switch e := e.(type) { case system.DestroyEvent: return case system.FrameEvent: gtx := layout.NewContext(&ops, e) resetSysinset(e.Insets) sysinset.Layout(gtx, func(gtx C) D { return margin.Layout(gtx, func(gtx C) D { return list.Layout(gtx, len(labels), func(gtx C, i int) D { return labels[i].Layout(gtx) }) }) }) e.Frame(gtx.Ops) } } } }