public void setSelectedValue( final V anItem ) { final int oldSelectedItem = this.selectedItemIndex; final int newSelectedItem = findElementIndex( anItem ); if ( newSelectedItem == -1 ) { if ( isAllowOtherValue() ) { selectedItemIndex = -1; selectedItemValue = anItem; } else { selectedItemIndex = -1; selectedItemValue = null; } } else { selectedItemIndex = newSelectedItem; selectedItemValue = getElementAt( selectedItemIndex ); } if ( oldSelectedItem != this.selectedItemIndex ) { fireListDataEvent( new ListDataEvent( this, ListDataEvent.CONTENTS_CHANGED, -1, -1 ) ); } }