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 }