001    package org.springframework.richclient.samples.showcase.command;
002    
003    import java.util.ArrayList;
004    import java.util.List;
005    
006    import javax.swing.JComponent;
007    import javax.swing.JLabel;
008    import javax.swing.JPanel;
009    import javax.swing.JTextField;
010    
011    import org.springframework.richclient.application.Application;
012    import org.springframework.richclient.command.CommandGroupFactoryBean;
013    import org.springframework.richclient.command.CommandManager;
014    import org.springframework.richclient.dialog.ApplicationDialog;
015    
016    import com.jgoodies.forms.factories.FormFactory;
017    import com.jgoodies.forms.layout.CellConstraints;
018    import com.jgoodies.forms.layout.ColumnSpec;
019    import com.jgoodies.forms.layout.FormLayout;
020    import com.jgoodies.forms.layout.RowSpec;
021    import com.jgoodies.forms.layout.Sizes;
022    
023    public class ButtonStackBarSample extends ApplicationDialog {
024    
025            private String[] commandIds = new String[] { "basicApplicationDialogCommand", "basicConfirmationDialogCommand",
026                            "basicInputApplicationDialogCommand" };
027    
028            @Override
029            protected JComponent createDialogContentPane() {
030                    JPanel panel = new JPanel(new FormLayout(new ColumnSpec[] {FormFactory.DEFAULT_COLSPEC , FormFactory.RELATED_GAP_COLSPEC, new ColumnSpec(ColumnSpec.LEFT, Sizes.DEFAULT,
031                                    ColumnSpec.DEFAULT_GROW)}, new RowSpec[] { FormFactory.DEFAULT_ROWSPEC, FormFactory.LINE_GAP_ROWSPEC,
032                                    FormFactory.DEFAULT_ROWSPEC, FormFactory.LINE_GAP_ROWSPEC,
033                                    FormFactory.DEFAULT_ROWSPEC }));
034                    CommandManager commandManager = Application.instance().getActiveWindow().getCommandManager();
035                    List<Object> members = new ArrayList<Object>();
036                    for (int i = 0; i < commandIds.length; i++) {
037                            members.add(commandManager.getCommand(commandIds[i]));
038                    }
039    
040                    CellConstraints cc = new CellConstraints();
041    
042                    CommandGroupFactoryBean commandGroupFactory = new CommandGroupFactoryBean("buttonBar", members.toArray());
043                    panel.add(new JLabel(getMessage("buttonBar.label")), cc.xy(1, 1));
044                    panel.add(commandGroupFactory.getCommandGroup().createButtonBar(), cc.xyw(1, 3, 3));
045    
046                    JTextField toolbarTextField = new JTextField(20);
047                    toolbarTextField.setText("input");
048                    members.add(toolbarTextField);
049                    commandGroupFactory = new CommandGroupFactoryBean("buttonStack", members.toArray());
050                    panel.add(new JLabel(getMessage("buttonStack.label")), cc.xy(1, 5));
051                    panel.add(commandGroupFactory.getCommandGroup().createButtonStack(), cc.xy(3, 5));
052    
053                    return panel;
054            }
055    
056            @Override
057            protected boolean onFinish() {
058                    return true;
059            }
060    }