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.list; 017 018 import javax.swing.JComboBox; 019 import javax.swing.JComponent; 020 021 import org.springframework.binding.form.FormModel; 022 import org.springframework.richclient.form.builder.FormComponentInterceptor; 023 import org.springframework.richclient.form.builder.FormComponentInterceptorFactory; 024 import org.springframework.richclient.form.builder.support.AbstractFormComponentInterceptor; 025 026 /** 027 * @author Peter De Bruycker 028 */ 029 public class ComboBoxAutoCompletionInterceptorFactory implements FormComponentInterceptorFactory { 030 031 public class ComboBoxAutoCompletionInterceptor extends AbstractFormComponentInterceptor { 032 033 /** 034 * Constructs a new <code>AutoCompletionInterceptor</code> instance. 035 * 036 * @param formModel 037 * the formModel 038 */ 039 public ComboBoxAutoCompletionInterceptor(FormModel formModel) { 040 super(formModel); 041 } 042 043 /** 044 * @see org.springframework.richclient.form.builder.support.AbstractFormComponentInterceptor#processComponent(java.lang.String, 045 * javax.swing.JComponent) 046 */ 047 public void processComponent(String propertyName, JComponent component) { 048 JComponent inner = getInnerComponent(component); 049 if (inner instanceof JComboBox ) { 050 JComboBox comboBox = (JComboBox) inner; 051 if( comboBox.isEditable()) { 052 // It's editable, so install autocompletion for editable comboboxes 053 new EditableComboBoxAutoCompletion(comboBox); 054 } else { 055 new ComboBoxAutoCompletion(comboBox); 056 } 057 } 058 } 059 } 060 061 /** 062 * @see org.springframework.richclient.form.builder.FormComponentInterceptorFactory#getInterceptor(org.springframework.binding.form.FormModel) 063 */ 064 public FormComponentInterceptor getInterceptor(FormModel formModel) { 065 return new ComboBoxAutoCompletionInterceptor(formModel); 066 } 067 }