001    /*
002     * Copyright 2002-2005 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.binding.form.support;
017    
018    import java.awt.Image;
019    
020    import javax.swing.AbstractButton;
021    import javax.swing.Icon;
022    import javax.swing.ImageIcon;
023    import javax.swing.JLabel;
024    
025    import org.springframework.binding.form.FieldFace;
026    import org.springframework.binding.value.support.AbstractPropertyChangePublisher;
027    import org.springframework.richclient.core.LabelInfo;
028    import org.springframework.util.Assert;
029    
030    /**
031     * A default implementation of FieldFace
032     * 
033     * @author Oliver Hutchison
034     */
035    public class DefaultFieldFace extends AbstractPropertyChangePublisher implements FieldFace {
036    
037        private final String displayName;
038    
039        private final String caption;
040    
041        private final String description;
042    
043        private final LabelInfo labelInfo;
044    
045        private final Icon icon;
046    
047        /**
048         * Constructs a new DefaultFieldFace with the provided values.
049         */
050        public DefaultFieldFace(String displayName, String caption, String description, String encodedLabel, Icon icon) {
051            this(displayName, caption, description, LabelInfo.valueOf(encodedLabel), icon);
052        }
053    
054        public DefaultFieldFace(String displayName, String caption, String description, LabelInfo labelInfo, Icon icon) {
055            this.displayName = displayName;
056            this.caption = caption;
057            this.description = description;
058            this.labelInfo = labelInfo;
059            this.icon = icon;
060        }
061        
062        public String getDisplayName() {
063            return displayName;
064        }
065    
066        public String getCaption() {
067            return caption;
068        }
069    
070        public String getDescription() {
071            return description;
072        }
073    
074        public LabelInfo getLabelInfo() {
075            return labelInfo;
076        }
077    
078        public Image getImage() {
079            if (getIcon() instanceof ImageIcon) {
080                return ((ImageIcon)getIcon()).getImage();
081            }
082            else {
083                return null;
084            }
085        }
086    
087        public Icon getIcon() {
088            return icon;
089        }
090    
091        public void configure(JLabel label) {
092            Assert.notNull(label, "The JLabel to configure is required");
093            labelInfo.configureLabel(label);
094            label.setIcon(icon);
095        }
096    
097        public void configure(AbstractButton button) {
098            Assert.notNull(button, "The AbstractButton to configure is required");
099            labelInfo.configureButton(button);
100            button.setIcon(icon);
101        }
102    }