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;
017    
018    import javax.swing.AbstractButton;
019    import javax.swing.Icon;
020    import javax.swing.JLabel;
021    
022    import org.springframework.richclient.core.DescribedElement;
023    import org.springframework.richclient.core.LabelInfo;
024    import org.springframework.richclient.core.VisualizedElement;
025    
026    /**
027     * Provides metadata related to the visualization of a form property and
028     * convenience methods for configuring GUI components using the metadata.
029     *
030     * @author Oliver Hutchison
031     */
032    public interface FieldFace extends DescribedElement, VisualizedElement {
033    
034            /**
035             * The name of the property in human readable form, typically used for
036             * validation messages.
037             */
038            String getDisplayName();
039    
040            /**
041             * A short caption describing the property, typically used for tool tips.
042             */
043            String getCaption();
044    
045            /**
046             * A longer caption describing the property.
047             */
048            String getDescription();
049    
050            /**
051             * The text, mnemonic and mnemonicIndex for any labels created for the
052             * property.
053             */
054            LabelInfo getLabelInfo();
055    
056            /**
057             * The icon that is used for any labels created for this property.
058             */
059            Icon getIcon();
060    
061            /**
062             * Configures the supplied JLabel using LabelInfo and Icon.
063             */
064            void configure(JLabel label);
065    
066            /**
067             * Configures the supplied button using LabelInfo and Icon.
068             */
069            void configure(AbstractButton button);
070    }