001    /*
002     * Copyright 2002-2006 the original author or authors.
003     *
004     * Licensed under the Apache License, Version 2.0 (the "License"); you may not
005     * use this file except in compliance with the License. You may obtain a copy of
006     * the License at
007     *
008     * http://www.apache.org/licenses/LICENSE-2.0
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
012     * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
013     * License for the specific language governing permissions and limitations under
014     * the License.
015     */
016    package org.springframework.richclient.form.binding.swing;
017    
018    import java.util.Map;
019    
020    import javax.swing.JComponent;
021    import javax.swing.JToggleButton;
022    
023    import org.springframework.binding.form.FormModel;
024    import org.springframework.richclient.form.binding.Binding;
025    import org.springframework.richclient.form.binding.support.AbstractBinder;
026    import org.springframework.util.Assert;
027    
028    /**
029     * @author Mathias Broekelmann
030     * 
031     */
032    public class ToggleButtonBinder extends AbstractBinder {
033    
034        public ToggleButtonBinder() {
035            this(Boolean.class);
036        }
037    
038        protected ToggleButtonBinder(String[] supportedContextKeys) {
039            super(Boolean.class, supportedContextKeys);
040        }
041    
042        protected ToggleButtonBinder(Class requiredSourceClass) {
043            super(requiredSourceClass);
044        }
045    
046        protected ToggleButtonBinder(Class requiredSourceClass, String[] supportedContextKeys) {
047            super(requiredSourceClass, supportedContextKeys);
048        }
049    
050        protected Binding doBind(JComponent control, FormModel formModel, String formPropertyPath, Map context) {
051            Assert.isTrue(control instanceof JToggleButton, "Control must be an instance of JToggleButton.");
052            ToggleButtonBinding toggleButtonBinding = new ToggleButtonBinding((JToggleButton) control, formModel,
053                    formPropertyPath);
054            applyContext(toggleButtonBinding, formModel, formPropertyPath, context);
055            return toggleButtonBinding;
056        }
057    
058        protected void applyContext(ToggleButtonBinding toggleButtonBinding, FormModel formModel, String formPropertyPath,
059                Map context) {
060        }
061    
062        protected JComponent createControl(Map context) {
063            return getComponentFactory().createToggleButton("");
064        }
065    
066    }