Groovy documentation can be found here Note, however, the documentation does not include much on building a GUI using SwingBuilder
Below is some code examples, found on the internet, to help you get started. From sourceforge.net/p/freeplane
import groovy.swing.SwingBuilder import java.awt.FlowLayout as FL import javax.swing.BoxLayout as BXL import javax.swing.JFrame //def dial diallocationRelativeTo:ui.frame and owner:ui.frame fails as ui. is not rcognised, need to ref jAlbum window, or just remove them? def s = new SwingBuilder() s.setVariable('myDialog-properties',[:]) def vars = s.variables def dial = s.dialog(title:'Dialog 1', id:'myDialog', modal:true, locationRelativeTo:ui.frame, owner:ui.frame, defaultCloseOperation:JFrame.DISPOSE_ON_CLOSE, pack:true, show:true) { panel() { boxLayout(axis:BXL.Y_AXIS) panel(alignmentX:0f) { flowLayout(alignment:FL.LEFT) checkBox(id:'check', text:'Checkbox') // append 'selected: true' to have the checkbox already selected } panel(alignmentX:0f) { flowLayout(alignment:FL.LEFT) label('Text') textArea(id:'textArea', columns:10, rows:2) } panel(alignmentX:0f) { flowLayout(alignment:FL.LEFT) label('Completion:') buttonGroup().with { group -> radioButton(id: '0', text: '0%', selected: true, buttonGroup: group) radioButton(id: '25', text: '25%', buttonGroup: group) radioButton(id: '50', text: '50%', buttonGroup: group) radioButton(id: '75', text: '75%', buttonGroup: group) radioButton(id: '100', text: '100%', buttonGroup: group) } } panel(alignmentX:0f) { flowLayout(alignment:FL.LEFT) label('Combo') comboBox(id:'combo', items:['Option 1', 'Option 2']) } panel(alignmentX:0f) { flowLayout(alignment:FL.LEFT) button('Submit', preferredSize:[80, 24], actionPerformed:{ vars.dialogResult = 'ok' dispose() }) button('Cancel', preferredSize:[80, 24], actionPerformed:{ vars.dialogResult = 'cancel' dispose() }) } } } if (vars.dialogResult == 'ok') { def child = node.createChild(vars.textArea.text) def percent = ["0", "25", "50", "75", "100"].find{ vars[it].selected } child.icons.add(percent + "%") child["combo"] = vars.combo.selectedItem child["checkbox"] = (vars.check.selected ? 'checked' : 'not checked') }
From josh-in-antarctica.blogspot.com A nicer way to do it using Groovy's with keyword: from
buttonGroup().with { add radioButton(text: 'Option 1') add radioButton(text: 'Option 2') }
Spinners take the form of
spinner (id:'spinnerName', model:spinnerNumberModel(minimum:0, maximum: 40, value:20, stepSize:5)) spinner(id:'spinnerName', model:spinnerListModel( list: ["Text one", "two", "three", "four", "five"], value: "three") spinner(id:'spinnerName', model:spinnerDateModel(calendarField: Calendar.HOUR_OF_DAY)
There is a Groovy discussion forum at nabble.com with question and answers which may have useful tips.