Reputation: 827
I need to add a splitPane textArea to my Griffon app. I cannot seem to find an example of the proper syntax and way to do this.
Can anyone help me out??
Here is my view so far:
=================================================================================
package test1
import griffon.util.GriffonNameUtils as GNU
import java.beans.PropertyChangeListener
application(title: 'Test1',
//preferredSize: [600, 300],
pack: true,
locationByPlatform: true,
iconImage: imageIcon('/griffon-icon-48x48.png').image,
iconImages: [imageIcon('/griffon-icon-48x48.png').image,
imageIcon('/griffon-icon-32x32.png').image,
imageIcon('/griffon-icon-16x16.png').image]) {
borderLayout()
panel(constraints: WEST,
border: titledBorder(title: 'Platform')) {
migLayout()
buttonGroup(id: 'platform')
def radioButtonConverter = { String title, v -> v ? title : model.deviceType }
for (data in model.deviceTypes) {
radioButton(data.title, buttonGroup: platform, constraints: 'wrap',
selected: bind('deviceType', target: model,
converter: radioButtonConverter.curry(data.title), value: data.selected))
}
}
panel(constraints: EAST,
border: titledBorder(title: 'Path Browser')) {
migLayout()
controller.griffonClass.actionNames.each { name ->
button(getVariable(name + 'Action'),
constraints: 'growx, wrap')
}
}
panel(constraints: CENTER, id: 'devicePanel',
border: titledBorder(id: 'devicePanelBorder', title: 'No Devices')) {
noparent {
model.addPropertyChangeListener('deviceType', { e ->
model.deviceTypes.each{ d-> d.selected = false }
model.deviceTypes.find{ d -> d.title == e.newValue }.selected = true
devicePanelBorder.title = e.newValue
devicePanel.layout.show(devicePanel, e.newValue)
devicePanel.repaint() // force redraw
} as PropertyChangeListener)
}
cardLayout()
for(data in model.deviceTypes) {
// we set the title as the page's constraints -> simplifies bookkeeping
// in the PropertyChangeListener registered above
panel(constraints: data.title) {
gridLayout(cols: 2, rows: (data.devices.size()/2))
data.devices.each { device ->
checkBox(device.name, selected: bind(value: device.selected, target: device, 'selected'))
}
}
}
}
panel(constraints: SOUTH) {
riverLayout()
buttonGroup(id: 'execute', constraints: 'center')
button('Build XML', buttonGroup: execute)
button('Run', buttonGroup: execute)
button('Exit', buttonGroup: execute)
}
panel(constraints: NORTH) {
riverLayout()
label('TWC Companion Device Test Tool', constraints: 'center')
}
}
============================================================================================
Thanks!!
ironmantis7x
Upvotes: 0
Views: 196
Reputation: 3281
As shown by SwingPad (https://github.com/griffon/griffon/blob/master/src/dist/samples/SwingPad/griffon-app/views/griffon/samples/swingpad/SwingPadContent.groovy) using splitPane
is as simple as
splitPane(resizeWeight: 0.5f) {
label('Left component')
label('Right component')
}
Have a look at the View section of the Griffon Guide to learn more about nodes
http://griffon.codehaus.org/guide/latest/guide/views.html#specialNodes
The following link has pointers to all nodes that can be used with SwingBuilder
http://groovy.codehaus.org/Swing+Builder
Lastly, you can launch SwingPad ($GRIFFON_HOME/samples/SwingPad) and play with live nodes. This application includes a list of all nodes (Help -> Node List) plus a very basic node name completion feature.
Upvotes: 1