001 /*
002 * Copyright 2002-2004 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 org.springframework.binding.form.FormModel;
019 import org.springframework.richclient.form.binding.Binding;
020 import org.springframework.richclient.form.binding.support.AbstractBinder;
021 import org.springframework.richclient.form.binding.swing.text.DocumentFactory;
022 import org.springframework.util.Assert;
023
024 import javax.swing.*;
025 import javax.swing.text.JTextComponent;
026 import java.util.Map;
027
028 /**
029 * @author Oliver Hutchison
030 */
031 public class TextComponentBinder extends AbstractBinder {
032 private String promptKey;
033 private boolean convertEmptyStringToNull;
034 private DocumentFactory documentFactory;
035 private boolean readOnly;
036 private boolean selectAllOnFocus;
037
038 public TextComponentBinder() {
039 super(String.class);
040 }
041
042 protected Binding doBind(JComponent control, FormModel formModel, String formPropertyPath, Map context) {
043 Assert.isTrue(control instanceof JTextComponent, "Control must be an instance of JTextComponent.");
044 TextComponentBinding textComponentBinding = new TextComponentBinding((JTextComponent) control, formModel, formPropertyPath);
045 textComponentBinding.setConvertEmptyStringToNull(convertEmptyStringToNull);
046 textComponentBinding.setPromptKey(promptKey);
047 textComponentBinding.setReadOnly(readOnly);
048 textComponentBinding.setSelectAllOnFocus(selectAllOnFocus);
049 return textComponentBinding;
050 }
051
052 protected JTextComponent createTextComponent()
053 {
054 return getComponentFactory().createTextField();
055 }
056
057 protected JComponent createControl(Map context) {
058 JTextComponent textComponent = createTextComponent();
059 if (getDocumentFactory() != null) {
060 textComponent.setDocument(getDocumentFactory().createDocument());
061 }
062 return textComponent;
063 }
064
065 public boolean isConvertEmptyStringToNull()
066 {
067 return convertEmptyStringToNull;
068 }
069
070 public void setConvertEmptyStringToNull(boolean convertEmptyStringToNull)
071 {
072 this.convertEmptyStringToNull = convertEmptyStringToNull;
073 }
074
075 public String getPromptKey()
076 {
077 return promptKey;
078 }
079
080 public void setPromptKey(String promptKey)
081 {
082 this.promptKey = promptKey;
083 }
084
085 public DocumentFactory getDocumentFactory()
086 {
087 return documentFactory;
088 }
089
090 public void setDocumentFactory(DocumentFactory documentFactory)
091 {
092 this.documentFactory = documentFactory;
093 }
094
095 public boolean isReadOnly()
096 {
097 return readOnly;
098 }
099
100 public void setReadOnly(boolean readOnly)
101 {
102 this.readOnly = readOnly;
103 }
104
105 public boolean isSelectAllOnFocus()
106 {
107 return selectAllOnFocus;
108 }
109
110 public void setSelectAllOnFocus(boolean selectAllOnFocus)
111 {
112 this.selectAllOnFocus = selectAllOnFocus;
113 }
114 }
115