void () { register(myPasswordChoice, SvnConfiguration.SshConnectionType.PASSWORD); register(myPrivateKeyChoice, SvnConfiguration.SshConnectionType.PRIVATE_KEY); register(mySubversionConfigChoice, SvnConfiguration.SshConnectionType.SUBVERSION_CONFIG); ItemListener connectionTypeChangedListener = e -> { if (e.getStateChange() == ItemEvent.SELECTED) { enableOptions(e.getSource()); } }; myPasswordChoice.addItemListener(connectionTypeChangedListener); myPrivateKeyChoice.addItemListener(connectionTypeChangedListener); mySubversionConfigChoice.addItemListener(connectionTypeChangedListener); enableOptions(mySubversionConfigChoice); registerBrowseDialog(myExecutablePathField, message("dialog.title.ssh.settings.browse.executable")); registerBrowseDialog(myPrivateKeyPathField, message("dialog.title.ssh.settings.browse.private.key")); mySshTunnelField.getEmptyText().setText(SshTunnelRuntimeModule.DEFAULT_SSH_TUNNEL_VALUE); mySshTunnelField.getDocument().addDocumentListener(new DocumentAdapter() { @Override protected void textChanged(@NotNull DocumentEvent e) { updateSshTunnelDependentValues(mySshTunnelField.getText()); } }); myUpdateTunnelButton.addActionListener(e -> { String tunnel = mySshTunnelField.getText(); // remove tunnel from config in case it is null or empty mySvnConfiguration.setSshTunnelSetting(StringUtil.nullize(tunnel)); setSshTunnelSetting(mySvnConfiguration.getSshTunnelSetting()); }); }