Buggy code:
class IncomingServerStep extends AbstractStep { protected DataModel data ; protected JTextField loginTextField ; protected JTextField hostTextField ; protected JLabel addressLabel ; protected JComboBox typeComboBox ; public IncomingServerStep ( DataModel data ) { } protected JComponent createComponent ( ) { JComponent component = new JPanel ( ) ; component . setLayout ( new BoxLayout ( component , BoxLayout . Y_AXIS ) ) ; component . setBorder ( BorderFactory . createEmptyBorder ( 30 , 30 , 20 , 30 ) ) ; component . add ( new org . columba . core . gui . util . MultiLineLabel ( MailResourceLoader . getString ( "dialog" , "accountwizard" , "incomingserver_text" ) ) ) ; component . add ( Box . createVerticalStrut ( 40 ) ) ; WizardTextField middlePanel = new WizardTextField ( ) ; JLabel nameLabel = new JLabel ( MailResourceLoader . getString ( "dialog" , "accountwizard" , "login" ) ) ; nameLabel . setDisplayedMnemonic ( MailResourceLoader . getMnemonic ( "dialog" , "accountwizard" , "login" ) ) ; middlePanel . addLabel ( nameLabel ) ; loginTextField = new JTextField ( ) ; Method method = null ; try { method = loginTextField . getClass ( ) . getMethod ( "getText" , null ) ; } catch ( NoSuchMethodException nsme ) { } data . registerDataLookup ( "IncomingServer.login" , new DefaultDataLookup ( loginTextField , method , null ) ) ; DocumentListener fieldListener = new DocumentListener ( ) { public void removeUpdate ( DocumentEvent e ) { checkFields ( ) ; } public void insertUpdate ( DocumentEvent e ) { checkFields ( ) ; } protected void checkFields ( ) { setCanGoNext ( ( ( ( loginTextField . getDocument ( ) . getLength ( ) ) > 0 ) && ( ( hostTextField . getDocument ( ) . getLength ( ) ) > 0 ) ) ) ; } public void changedUpdate ( DocumentEvent e ) { } } ; loginTextField . getDocument ( ) . addDocumentListener ( fieldListener ) ; nameLabel . setLabelFor ( loginTextField ) ; middlePanel . addTextField ( loginTextField ) ; JLabel exampleLabel = new JLabel ( ( ( MailResourceLoader . getString ( "dialog" , "accountwizard" , "example" ) ) + "billgates" ) ) ; middlePanel . addExample ( exampleLabel ) ; addressLabel = new JLabel ( MailResourceLoader . getString ( "dialog" , "accountwizard" , "host" ) ) ; addressLabel . setDisplayedMnemonic ( MailResourceLoader . getMnemonic ( "dialog" , "accountwizard" , "host" ) ) ; middlePanel . addLabel ( addressLabel ) ; hostTextField = new JTextField ( ) ; data . registerDataLookup ( "IncomingServer.host" , new DefaultDataLookup ( hostTextField , method , null ) ) ; hostTextField . getDocument ( ) . addDocumentListener ( fieldListener ) ; addressLabel . setLabelFor ( hostTextField ) ; middlePanel . addTextField ( hostTextField ) ; JLabel addressExampleLabel = new JLabel ( ( ( MailResourceLoader . getString ( "dialog" , "accountwizard" , "example" ) ) + "mail.microsoft.com" ) ) ; middlePanel . addExample ( addressExampleLabel ) ; JLabel typeLabel = new JLabel ( MailResourceLoader . getString ( "dialog" , "accountwizard" , "type" ) ) ; typeLabel . setDisplayedMnemonic ( MailResourceLoader . getMnemonic ( "dialog" , "accountwizard" , "type" ) ) ; middlePanel . addLabel ( typeLabel ) ; typeComboBox = new JComboBox ( ) ; typeLabel . setLabelFor ( typeComboBox ) ; typeComboBox . addItem ( "POP3" ) ; <START_BUG> typeComboBox . addItem ( "IMAP4" ) ; <END_BUG> try { method = typeComboBox . getClass ( ) . getMethod ( "getSelectedItem" , null ) ; } catch ( NoSuchMethodException nsme ) { } data . registerDataLookup ( "IncomingServer.type" , new DefaultDataLookup ( typeComboBox , method , null ) ) ; middlePanel . addTextField ( typeComboBox ) ; middlePanel . addEmptyExample ( ) ; component . add ( middlePanel ) ; return component ; } public void prepareRendering ( ) { } }

Fix:
typeComboBox . addItem ( "IMAP" ) ;