FYI, the JideSplitButton is now part of their 'Common Layer' that they've put into open source. The site for that project is https://jide-oss.dev.java.net/.
I too use the JIDE solution, and it can be a little tricky to integrate into Spring RCP. Here's an example of one way I've done it.
Code:
private class StructureCommand extends ActionCommand{
private static final String ID = "structureCommand";
private JideSplitButton structureButton = null;
public StructureCommand(){
super(ID);
}
protected void doExecuteCommand() {
}
public AbstractButton createButton(String arg0, ButtonFactory arg1,
CommandButtonConfigurer arg2) {
AbstractButton button = createSplitButton();
return button;
}
// Maybe move this to a button factory implementation?
private JideSplitButton createSplitButton(){
structureButton = new JideSplitButton(getActionAdapter());
structureButton.setText(null);
CommandGroup.createCommandGroup(
"structureCommandGroup",
new Object[] {defaultCommand, meshRibbonCommand, ribbonsCommand,
strandsCommand, cartoonsCommand,
rocketsCommand, traceCommand});
ButtonGroup group = new ButtonGroup();
JMenuItem defaultItem = new JRadioButtonMenuItem(defaultCommand.getActionAdapter());
defaultItem.setSelected(true);
group.add(defaultItem);
structureButton.add(defaultItem);
JMenuItem meshRibbon =
new JRadioButtonMenuItem(meshRibbonCommand.getActionAdapter());
group.add(meshRibbon);
structureButton.add(meshRibbon);
JMenuItem ribbons =
new JRadioButtonMenuItem(ribbonsCommand.getActionAdapter());
group.add(ribbons);
structureButton.add(ribbons);
JMenuItem strand =
new JRadioButtonMenuItem(strandsCommand.getActionAdapter());
group.add(strand);
structureButton.add(strand);
JMenuItem cartoon =
new JRadioButtonMenuItem(cartoonsCommand.getActionAdapter());
group.add(cartoon);
structureButton.add(cartoon);
JMenuItem rockets =
new JRadioButtonMenuItem(rocketsCommand.getActionAdapter());
group.add(rockets);
structureButton.add(rockets);
JMenuItem trace =
new JRadioButtonMenuItem(traceCommand.getActionAdapter());
group.add(trace);
structureButton.add(trace);
return structureButton;
}
}
hope this helps,
Jonny