001 /* 002 * Copyright 2002-2004 the original author or authors. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of 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, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.springframework.richclient.form.binding.swing; 017 018 import java.util.Collections; 019 020 import javax.swing.JComboBox; 021 import javax.swing.event.ListDataEvent; 022 023 import org.springframework.binding.support.TestLabeledEnum; 024 025 public class LabeledEnumComboBoxBindingAbstractTests extends BindingAbstractTests { 026 027 private LabeledEnumComboBoxBinding cbb; 028 029 private JComboBox cb; 030 031 protected String setUpBinding() { 032 cbb = (LabeledEnumComboBoxBinding) new LabeledEnumComboBoxBinder().bind(fm, "enumProperty", Collections.EMPTY_MAP); 033 cb = (JComboBox) cbb.getControl(); 034 return "enumProperty"; 035 } 036 037 public void testValueModelUpdatesComponent() { 038 TestListDataListener tldl = new TestListDataListener(); 039 cb.getModel().addListDataListener(tldl); 040 041 assertEquals(null, cb.getSelectedItem()); 042 assertEquals(-1, cb.getSelectedIndex()); 043 tldl.assertCalls(0); 044 045 vm.setValue(TestLabeledEnum.ONE); 046 assertEquals(TestLabeledEnum.ONE, cb.getSelectedItem()); 047 assertEquals(1, cb.getSelectedIndex()); 048 tldl.assertEvent(1, ListDataEvent.CONTENTS_CHANGED, -1, -1); 049 050 vm.setValue(TestLabeledEnum.TWO); 051 assertEquals(TestLabeledEnum.TWO, cb.getSelectedItem()); 052 assertEquals(2, cb.getSelectedIndex()); 053 tldl.assertEvent(2, ListDataEvent.CONTENTS_CHANGED, -1, -1); 054 055 vm.setValue(null); 056 assertEquals(null, cb.getSelectedItem()); 057 assertEquals(-1, cb.getSelectedIndex()); 058 tldl.assertEvent(3, ListDataEvent.CONTENTS_CHANGED, -1, -1); 059 060 vm.setValue(null); 061 tldl.assertCalls(3); 062 } 063 064 public void testComponentUpdatesValueModel() { 065 cb.setSelectedIndex(1); 066 assertEquals(TestLabeledEnum.ONE, vm.getValue()); 067 068 cb.setSelectedItem(TestLabeledEnum.TWO); 069 assertEquals(TestLabeledEnum.TWO, vm.getValue()); 070 071 cb.setSelectedIndex(-1); 072 assertEquals(null, vm.getValue()); 073 } 074 075 public void testComponentTracksEnabledChanges() { 076 assertTrue(cb.isEnabled()); 077 078 fm.getFieldMetadata("enumProperty").setEnabled(false); 079 assertFalse(cb.isEnabled()); 080 081 fm.getFieldMetadata("enumProperty").setEnabled(true); 082 assertTrue(cb.isEnabled()); 083 } 084 085 public void testComponentTracksReadOnlyChanges() { 086 assertTrue(cb.isEnabled()); 087 088 fm.getFieldMetadata("enumProperty").setReadOnly(true); 089 assertFalse(cb.isEnabled()); 090 091 fm.getFieldMetadata("enumProperty").setReadOnly(false); 092 assertTrue(cb.isEnabled()); 093 } 094 }