001 package org.springframework.richclient.samples.showcase.binding;
002
003 import org.springframework.richclient.dialog.TitledApplicationDialog;
004 import org.springframework.richclient.form.AbstractForm;
005 import org.springframework.richclient.form.FormModelHelper;
006 import org.springframework.richclient.form.binding.swing.SwingBindingFactory;
007 import org.springframework.richclient.form.builder.TableFormBuilder;
008
009 import javax.swing.*;
010 import java.util.ArrayList;
011 import java.util.List;
012
013 /**
014 * This dialog shows a ShuttleList in which several items can be selected and added to a list on the backing formObject.
015 * Mind that this is far from perfect, but does illustrate the binding and the specific component that is created.
016 *
017 * @see org.springframework.richclient.components.ShuttleList
018 * @see org.springframework.richclient.form.binding.swing.ShuttleListBinder
019 */
020 public class ShuttleListBindingDialog extends TitledApplicationDialog {
021
022 /** The fixed set of regions that can be selected. */
023 private List<String> selectableRegions;
024
025 public ShuttleListBindingDialog() {
026 selectableRegions = new ArrayList<String>();
027 selectableRegions.add("Land of the Dead");
028 selectableRegions.add("My little Pony Heaven");
029 selectableRegions.add("Bikini World");
030 selectableRegions.add("Paradise City");
031 selectableRegions.add("The Big Banana");
032 }
033
034 /** Value object with a list of regions that is a subselection of a given set. */
035 private class Values {
036
037 private List<String> selectedRegions;
038
039 public List<String> getSelectedRegions() {
040 return selectedRegions;
041 }
042
043 public void setSelectedRegions(List<String> selectedRegions) {
044 this.selectedRegions = selectedRegions;
045 }
046 }
047
048 private class ShuttleListForm extends AbstractForm {
049
050 public ShuttleListForm() {
051 super(FormModelHelper.createFormModel(new Values()));
052 }
053
054 @Override
055 protected JComponent createFormControl() {
056 SwingBindingFactory bindingFactory = new SwingBindingFactory(getFormModel());
057 TableFormBuilder builder = new TableFormBuilder(bindingFactory);
058 builder.setLabelAttributes("colGrId=label colSpec=left:pref rowSpec=top:pref");
059 builder.add(bindingFactory.createBoundShuttleList("selectedRegions", selectableRegions));
060 return builder.getForm();
061 }
062
063 }
064
065 @Override
066 protected JComponent createTitledDialogContentPane() {
067 return (new ShuttleListForm()).getControl();
068 }
069
070 @Override
071 protected boolean onFinish() {
072 return true;
073 }
074
075 }