GeneralLoginSettingsPanel: use JSpinner for port and timeout inputs

This commit is contained in:
Sergey Ponomarev
2026-07-17 20:22:08 +03:00
parent 198bcd2e99
commit 169b9bba42
22 changed files with 26 additions and 107 deletions

View File

@ -2,11 +2,9 @@ package org.jivesoftware.spark.ui.login;
import org.jivesoftware.resource.Default;
import org.jivesoftware.resource.Res;
import org.jivesoftware.spark.util.ModelUtil;
import org.jivesoftware.spark.util.ResourceUtils;
import org.jivesoftware.sparkimpl.settings.JiveInfo;
import org.jivesoftware.sparkimpl.settings.local.LocalPreferences;
import org.jivesoftware.sparkimpl.settings.local.SettingsManager;
import javax.swing.*;
import java.awt.*;
@ -16,6 +14,7 @@ import java.net.InetAddress;
import java.net.UnknownHostException;
import static java.awt.GridBagConstraints.*;
import static org.apache.commons.lang3.StringUtils.isBlank;
/**
* Internal class to set General settings
@ -26,9 +25,9 @@ class GeneralLoginSettingsPanel extends JPanel implements ActionListener
private final LocalPreferences localPreferences;
private final JDialog optionsDialog;
private final JCheckBox autoDiscoverBox = new JCheckBox();
private final JTextField portField = new JTextField();
private final JSpinner portField = new JSpinner(new SpinnerNumberModel(5222, 9, 65535, 1));
private final JTextField xmppHostField = new JTextField();
private final JTextField timeOutField = new JTextField();
private final JSpinner timeOutField = new JSpinner(new SpinnerNumberModel(60, 5, Integer.MAX_VALUE, 5));
private final JTextField resourceField = new JTextField();
private final JCheckBox useHostnameAsResourceBox = new JCheckBox();
private final JCheckBox useVersionAsResourceBox = new JCheckBox();
@ -54,8 +53,8 @@ class GeneralLoginSettingsPanel extends JPanel implements ActionListener
ResourceUtils.resButton( useVersionAsResourceBox, Res.getString( "checkbox.use.version.as.resource" ) );
ResourceUtils.resButton( compressionBox, Res.getString( "checkbox.use.compression" ) );
ResourceUtils.resButton( debuggerBox, Res.getString( "checkbox.use.debugger.on.startup" ) );
portField.setText( Integer.toString( localPreferences.getXmppPort() ) );
timeOutField.setText( Integer.toString( localPreferences.getTimeOut() ) );
portField.setValue( localPreferences.getXmppPort());
timeOutField.setValue(localPreferences.getTimeOut());
autoLoginBox.setSelected( localPreferences.isAutoLogin() );
xmppHostField.setText( localPreferences.getXmppHost() );
resourceField.setText( localPreferences.getResource() );
@ -67,16 +66,13 @@ class GeneralLoginSettingsPanel extends JPanel implements ActionListener
useVersionAsResourceBox.addActionListener( this );
useVersionAsResourceBox.setSelected( localPreferences.isUseVersionAsResource() );
updateResourceVersion();
resourceField.setEnabled(!(useHostnameAsResourceBox.isSelected() || useVersionAsResourceBox.isSelected()));
autoDiscoverBox.addActionListener( this );
autoDiscoverBox.setSelected( !localPreferences.isHostAndPortConfigured() );
updateAutoDiscovery();
compressionBox.setSelected( localPreferences.isCompressionEnabled() );
debuggerBox.setSelected( localPreferences.isDebuggerEnabled() );
final JPanel connectionPanel = new JPanel();
@ -85,26 +81,25 @@ class GeneralLoginSettingsPanel extends JPanel implements ActionListener
setLayout( new GridBagLayout() );
add( autoDiscoverBox, new GridBagConstraints( 0, 0, 2, 1, 1.0, 0.0, WEST, NONE, DEFAULT_INSETS, 0, 0 ) );
add(autoDiscoverBox, new GridBagConstraints(0, 0, 2, 1, 1, 0, WEST, NONE, DEFAULT_INSETS, 0, 0));
connectionPanel.add( xmppHostLabel, new GridBagConstraints( 0, 0, 1, 1, 0.0, 0.0, WEST, HORIZONTAL, DEFAULT_INSETS, 0, 0 ) );
connectionPanel.add( xmppHostField, new GridBagConstraints( 1, 0, 1, 1, 1.0, 0.0, WEST, NONE, DEFAULT_INSETS, 200, 0 ) );
connectionPanel.add( portLabel, new GridBagConstraints( 0, 1, 1, 1, 0.0, 0.0, WEST, NONE, DEFAULT_INSETS, 0, 0 ) );
connectionPanel.add( portField, new GridBagConstraints( 1, 1, 1, 1, 1.0, 0.0, WEST, NONE, DEFAULT_INSETS, 50, 0 ) );
connectionPanel.add(xmppHostLabel, new GridBagConstraints(0, 0, 1, 1, 0, 0, WEST, HORIZONTAL, DEFAULT_INSETS, 0, 0));
connectionPanel.add(xmppHostField, new GridBagConstraints(1, 0, 1, 1, 1, 0, WEST, NONE, DEFAULT_INSETS, 200, 0));
connectionPanel.add(portLabel, new GridBagConstraints(0, 1, 1, 1, 0, 0, WEST, NONE, DEFAULT_INSETS, 0, 0));
connectionPanel.add(portField, new GridBagConstraints(1, 1, 1, 1, 1, 0, WEST, NONE, DEFAULT_INSETS, 50, 0));
add( connectionPanel, new GridBagConstraints( 0, 1, 3, 1, 1.0, 0.0, NORTHWEST, BOTH, DEFAULT_INSETS, 0, 0 ) );
add(connectionPanel, new GridBagConstraints(0, 1, 3, 1, 1, 0, NORTHWEST, BOTH, DEFAULT_INSETS, 0, 0));
if ( Default.getBoolean( Default.USE_HOSTNAME_AS_RESOURCE ) == Default.getBoolean( Default.USE_VERSION_AS_RESOURCE ) )
{
add( resourceLabel, new GridBagConstraints( 0, 2, 1, 1, 0.0, 0.0, WEST, NONE, DEFAULT_INSETS, 0, 0 ) );
add( resourceField, new GridBagConstraints( 1, 2, 1, 1, 0.0, 0.0, WEST, NONE, DEFAULT_INSETS, 100, 0 ) );
add( useHostnameAsResourceBox, new GridBagConstraints( 0, 3, 2, 1, 0.0, 0.0, WEST, NONE, DEFAULT_INSETS, 0, 0 ) );
add( useVersionAsResourceBox, new GridBagConstraints( 0, 4, 2, 1, 0.0, 0.0, WEST, NONE, DEFAULT_INSETS, 0, 0 ) );
if (Default.getBoolean(Default.USE_HOSTNAME_AS_RESOURCE) == Default.getBoolean(Default.USE_VERSION_AS_RESOURCE)) {
add(resourceLabel, new GridBagConstraints(0, 2, 1, 1, 0, 0, WEST, NONE, DEFAULT_INSETS, 0, 0));
add(resourceField, new GridBagConstraints(1, 2, 1, 1, 0, 0, WEST, NONE, DEFAULT_INSETS, 100, 0));
add(useHostnameAsResourceBox, new GridBagConstraints(0, 3, 2, 1, 0, 0, WEST, NONE, DEFAULT_INSETS, 0, 0));
add(useVersionAsResourceBox, new GridBagConstraints(0, 4, 2, 1, 0, 0, WEST, NONE, DEFAULT_INSETS, 0, 0));
}
add( timeOutLabel, new GridBagConstraints( 0, 5, 1, 1, 0.0, 0.0, WEST, NONE, DEFAULT_INSETS, 0, 0 ) );
add( timeOutField, new GridBagConstraints( 1, 5, 1, 1, 0.0, 0.0, WEST, NONE, DEFAULT_INSETS, 50, 0 ) );
add( compressionBox, new GridBagConstraints( 0, 6, 2, 1, 0.0, 0.0, WEST, HORIZONTAL, DEFAULT_INSETS, 0, 0 ) );
add( debuggerBox, new GridBagConstraints( 0, 7, 2, 1, 0.0, 1.0, NORTHWEST, HORIZONTAL, DEFAULT_INSETS, 0, 0 ) );
add(timeOutLabel, new GridBagConstraints(0, 5, 1, 1, 0, 0, WEST, NONE, DEFAULT_INSETS, 0, 0));
add(timeOutField, new GridBagConstraints(1, 5, 1, 1, 0, 0, WEST, NONE, DEFAULT_INSETS, 50, 0));
add(compressionBox, new GridBagConstraints(0, 6, 2, 1, 0, 0, WEST, HORIZONTAL, DEFAULT_INSETS, 0, 0));
add(debuggerBox, new GridBagConstraints(0, 7, 2, 1, 0, 1, NORTHWEST, HORIZONTAL, DEFAULT_INSETS, 0, 0));
}
/**
@ -176,42 +171,9 @@ class GeneralLoginSettingsPanel extends JPanel implements ActionListener
public boolean validate_settings()
{
String timeOut = timeOutField.getText();
String port = portField.getText();
String resource = resourceField.getText();
boolean valid = true;
try
{
Integer.valueOf( timeOut );
}
catch ( NumberFormatException numberFormatException )
{
JOptionPane.showMessageDialog( optionsDialog,
Res.getString( "message.supply.valid.timeout" ),
Res.getString( "title.error" ),
JOptionPane.ERROR_MESSAGE );
timeOutField.requestFocus();
valid = false;
}
try
{
Integer.valueOf( port );
}
catch ( NumberFormatException numberFormatException )
{
JOptionPane.showMessageDialog( optionsDialog,
Res.getString( "message.supply.valid.port" ),
Res.getString( "title.error" ),
JOptionPane.ERROR_MESSAGE );
portField.requestFocus();
valid = false;
}
if ( !ModelUtil.hasLength( resource ) )
{
if (isBlank(resource)) {
JOptionPane.showMessageDialog( optionsDialog,
Res.getString( "message.supply.resource" ),
Res.getString( "title.error" ),
@ -219,7 +181,6 @@ class GeneralLoginSettingsPanel extends JPanel implements ActionListener
resourceField.requestFocus();
valid = false;
}
return valid;
}
@ -229,15 +190,15 @@ class GeneralLoginSettingsPanel extends JPanel implements ActionListener
useVersionAsResourceBox.setSelected(Default.getBoolean(Default.USE_VERSION_AS_RESOURCE));
compressionBox.setSelected(Default.getBoolean(Default.COMPRESSION_ENABLED));
debuggerBox.setSelected(Default.getBoolean(Default.DEBUGGER_ENABLED));
portField.setText(Default.getString(Default.XMPP_PORT));
portField.setValue(Default.getString(Default.XMPP_PORT));
resourceField.setText(Default.getString(Default.SHORT_NAME));
timeOutField.setText(Default.getString(Default.TIME_OUT));
timeOutField.setValue(Default.getString(Default.TIME_OUT));
}
public void saveSettings()
{
localPreferences.setTimeOut( Integer.parseInt( timeOutField.getText() ) );
localPreferences.setXmppPort( Integer.parseInt( portField.getText() ) );
localPreferences.setTimeOut((int) timeOutField.getValue());
localPreferences.setXmppPort((int) portField.getValue());
localPreferences.setXmppHost( xmppHostField.getText() );
localPreferences.setCompressionEnabled( compressionBox.isSelected() );
localPreferences.setDebuggerEnabled( debuggerBox.isSelected() );

View File

@ -656,8 +656,6 @@ message.specify.users.to.join.conference=Specify users to join this conference r
message.subject.change.error=You are not allowed to change the subject of this room
message.subject.has.been.changed.to={1} changed the subject to "{0}"
message.supply.resource=Supply a valid resource
message.supply.valid.port=Supply a valid port
message.supply.valid.timeout=Supply a valid time out value
message.total.downloaded=Total downloaded
message.transfer.cancelled=The file transfer was canceled
message.transfer.complete=The file transfer was complete ({0})

View File

@ -648,8 +648,6 @@ message.specify.users.to.join.conference=Vyber uživatele co se připojí do té
message.subject.change.error=Nemáte právo na změnu předmětu místnosti.
message.subject.has.been.changed.to={1} změnil předmět na „{0}“
message.supply.resource=Zadej platný zdroj.
message.supply.valid.port=Zadej platný port.
message.supply.valid.timeout=Zadej platnou time out hodnotu.
message.total.downloaded=Celkem staženo
message.transfer.cancelled=Přenos souborů byl zrušen.
message.transfer.complete=Přenos souboru byl dokončen ({0})

View File

@ -646,8 +646,6 @@ message.specify.users.to.join.conference=Teilnehmer auswählen die diesem Raum b
message.subject.change.error=Sie haben keine Rechte das Konferenzthema in diesem Raum zu ändern.
message.subject.has.been.changed.to=Das Thema der Konferenz wurde von {1} in "{0}" geändert.
message.supply.resource=Bitte die korrekte Ressource eingeben.
message.supply.valid.port=Bitte einen korrekten Port eingeben.
message.supply.valid.timeout=Bitte einen korrekten Wert eingeben.
message.total.downloaded=Insgesamt heruntergeladen
message.transfer.cancelled=Der Dateitransfer wurde abgebrochen.
message.transfer.complete=Der Dateitransfer war erfolgreich ({0})

View File

@ -654,8 +654,6 @@ message.specify.users.to.join.conference=Especifique usuarios a invitar al cuart
message.subject.change.error=No está permitido cambiar el tema del cuarto.
message.subject.has.been.changed.to={1} cambió el asunto a "{0}"
message.supply.resource=Especifique un recurso válido.
message.supply.valid.port=Especifique un puerto válido.
message.supply.valid.timeout=Especifique un tiempo máximo válido.
message.total.downloaded=Total descargado
message.transfer.cancelled=La transferencia del archivo ha sido cancelada.
message.transfer.complete=La transferencia del archivo se completó ({0})

View File

@ -654,8 +654,6 @@ message.specify.users.to.join.conference=Valitse tähän keskusteluhuoneeseen li
message.subject.change.error=Sinulla ei ole oikeuksia vaihtaa aihetta.
message.subject.has.been.changed.to={1} muutti aiheeksi "{0}"
message.supply.resource=Syötä hyväksyttävä resurssi.
message.supply.valid.port=Syötä hyväksyttävä porttinumero.
message.supply.valid.timeout=Anna hyväksyttävä aikakatkaisu aika.
message.total.downloaded=Yhteensä ladattuna
message.transfer.cancelled=Tiedostonsiirto peruttiin.
message.transfer.complete=Tiedoston siirto oli valmis ({0})

View File

@ -654,8 +654,6 @@ message.specify.users.to.join.conference=Indiquez les utilisateurs autorisés à
message.subject.change.error=Vous ne pouvez pas changer le sujet de ce salon.
message.subject.has.been.changed.to={1} a changé le sujet en "{0}"
message.supply.resource=Indiquez une resource valide.
message.supply.valid.port=Indiquez un port valide.
message.supply.valid.timeout=Indiquez une valeur de timeout valide
message.total.downloaded=Total Téléchargé
message.transfer.cancelled=Ce transfer a été annulé.
message.transfer.complete=Le transfert de fichier a été effectué ({0})

View File

@ -654,8 +654,6 @@ message.specify.users.to.join.conference=Indica gli utenti da invitare in questa
message.subject.change.error=non hai il permesso di cambiare l'argomento della stanza.
message.subject.has.been.changed.to=Il nuovo argomento è {0}.
message.supply.resource=Indica una risorsa valida.
message.supply.valid.port=Indica una porta valida.
message.supply.valid.timeout=Indica un timeout valido.
message.total.downloaded=Download totale
message.transfer.cancelled=Il trasferimento file è stato annullato.
message.transfer.complete=Il trasferimento del file è completo ({0})

View File

@ -654,8 +654,6 @@ message.specify.users.to.join.conference=この会議室に参加するユーザ
message.subject.change.error=このルームの話題の変更は許されていません。
message.subject.has.been.changed.to=話題は{0}に変更されました。
message.supply.resource=正しいリソースを設定してください。
message.supply.valid.port=正しいポート番頭を設定してください。
message.supply.valid.timeout=正しいタイムアウト時間を設定してください。
message.total.downloaded=すべてダウンロードされました。
message.transfer.cancelled=ファイル転送はキャンセルされました。
message.transfer.complete=ファイル転送が完了しました ({0})

View File

@ -655,8 +655,6 @@ message.specify.users.to.join.conference=이 컨퍼런스 방에 참여할 사
message.subject.change.error=당신은 이 방의 주제를 바꾸도록 허락되지 않았습니다.
message.subject.has.been.changed.to=주제가 {0}(으)로 바꿔졌습니다.
message.supply.resource=유효한 자원을 적으세요.
message.supply.valid.port=유효한 포트 번호를 적으세요.
message.supply.valid.timeout=유효한 타임아웃 값을 적으세요.
message.total.downloaded=총 다운로드
message.transfer.cancelled=파일 전송이 취소되었습니다.
message.transfer.complete=파일 전송이 완료되었습니다({0}).

View File

@ -654,8 +654,6 @@ message.specify.users.to.join.conference=Конференцияга кошулу
message.subject.change.error=Бул бөлмөдө теманы өзгөртө албайсыз.
message.subject.has.been.changed.to={1} тема өзгөрдү: {0}.
message.supply.resource=Туура ресурсту кириңиз.
message.supply.valid.port=Туура портту кириңиз.
message.supply.valid.timeout=Туура таймаут убакытын кириңиз.
message.total.downloaded=Жалпы жүктөөлөр
message.transfer.cancelled=Приём файла отменён.
message.transfer.complete=Файл өткөрүү аяктады ({0})

View File

@ -655,8 +655,6 @@ message.specify.users.to.join.conference=Nurodykite abonentus, kurie jungsis į
message.subject.change.error=Jums neleidžiama keisti šio kambario pokalbių temos.
message.subject.has.been.changed.to={1} pakeitė temą į „{0}“
message.supply.resource=Reikia pateikti teisingą resursą.
message.supply.valid.port=Pateikti teisingą prievadą.
message.supply.valid.timeout=Pateikti teisingą laukimo laiko reikšmę.
message.total.downloaded=Parsiųstos bylos
message.transfer.cancelled=Bylos siuntimas atšauktas.
message.transfer.complete=Bylos siuntimas užbaigtas ({0})

View File

@ -653,8 +653,6 @@ message.specify.users.to.join.conference=Geef gebruikers op die meedoen aan deze
message.subject.change.error=Onvoldoende rechten om het onderwerp van de ruimte te veranderen.
message.subject.has.been.changed.to={1} heeft het onderwerp gewijzigd in '{0}'
message.supply.resource=Geef een geldig medium op.
message.supply.valid.port=Geef een geldige poort op.
message.supply.valid.timeout=Geef een geldige antwoordtijd op.
message.total.downloaded=Totaal gedownload
message.transfer.cancelled=De overdracht werd geannuleerd.
message.transfer.complete=Het versturen van het bestand is voltooid ({0})

View File

@ -655,8 +655,6 @@ message.specify.users.to.join.conference=Określ użytkowników dołączanych do
message.subject.change.error=Nie masz uprawnień do zmiany tematu tego pokoju
message.subject.has.been.changed.to={1} zmienił temat na {0}
message.supply.resource=Podaj poprawne źródło
message.supply.valid.port=Podaj poprawny port
message.supply.valid.timeout=Podaj poprawną wartość czasu oczekiwania
message.total.downloaded=Ilość wszystkich pobrań plików
message.transfer.cancelled=Przesyłanie pliku zostało anulowane
message.transfer.complete=Transfer pliku został ukończony ({0})

View File

@ -642,8 +642,6 @@ message.specify.users.to.join.conference=Especificar usuários desta sala de con
message.subject.change.error=Você não pode mudar o assunto desta sala.
message.subject.has.been.changed.to={1} mudou o assunto para "{0}"
message.supply.resource=Informe um recurso válido.
message.supply.valid.port=Informe uma porta válida.
message.supply.valid.timeout=Informe um tempo de resposta válido.
message.total.downloaded=Total recebido
message.transfer.cancelled=A transferência foi cancelada.
message.transfer.complete=A transferência do arquivo foi concluída ({0})

View File

@ -642,8 +642,6 @@ message.specify.users.to.join.conference=Especificar usuários desta sala de con
message.subject.change.error=Você não pode mudar o assunto desta sala.
message.subject.has.been.changed.to={1} mudou o assunto para "{0}"
message.supply.resource=Informe um recurso válido.
message.supply.valid.port=Informe uma porta válida.
message.supply.valid.timeout=Informe um tempo de resposta válido.
message.total.downloaded=Total recebido
message.transfer.cancelled=A transferência foi cancelada.
message.transfer.complete=A transferência do arquivo foi concluída ({0})

View File

@ -644,7 +644,7 @@ message.send.picture=Скопировать и послать изображен
message.send.to.these.people=Отправить следующим пользователям
message.sending.file.to=Передаётся файл для {0}.
message.sent.offline.files=Вам только что отправили автономный файл (ы).
message.server.unavailable=Не удаётся подключиться к серверу: неверное имя или сервер не доступен
message.server.unavailable=Не удаётся подключиться к серверу: неверное имя или сервер недоступен
message.service.already.exists=Сервис уже добавлен.
message.shared.group=Общая группа
message.specify.contact.jid=Введите JID контакта (например juliet@capulet.lit)
@ -655,8 +655,6 @@ message.specify.users.to.join.conference=Укажите пользователе
message.subject.change.error=Вы не можете изменять тему в этой комнате.
message.subject.has.been.changed.to={1} изменил тему на «{0}»
message.supply.resource=Введите верный ресурс.
message.supply.valid.port=Введите верный порт.
message.supply.valid.timeout=Введите корректное время тайм-аута.
message.total.downloaded=Всего скачено
message.transfer.cancelled=Приём файла отменён.
message.transfer.complete=Передача файла завершена ({0})

View File

@ -637,8 +637,6 @@ message.specify.name.error=Ange ett giltigt namn
message.specify.users.to.join.conference=Ange användare som ska gå med i detta konferensrum
message.subject.change.error=Du får inte ändra ämnet för detta rum
message.supply.resource=Ange en giltig resurs.
message.supply.valid.port=Ange en giltig port.
message.supply.valid.timeout=Ange ett giltigt timeout värde.
message.total.downloaded=Totalt nedladdat
message.transfer.cancelled=The file transfer was cancelled.
message.transfer.complete=Filöverföringen slutfördes ({0})

View File

@ -643,8 +643,6 @@ message.specify.users.to.join.conference=Bu konferans odasına belirli kullanıc
message.subject.change.error=Bu odanın konusunu değiştirmek için yetkiniz yok.
message.subject.has.been.changed.to=Konu {0} olarak değiştirildi.
message.supply.resource=Geçerli bir kaynak girin.
message.supply.valid.port=Geçerli bir port girin.
message.supply.valid.timeout=Geçerli bir zaman aşımı süresi girin.
message.total.downloaded=Toplan indirilen
message.transfer.cancelled=Dosyanın aktarımı iptal edildi.
message.transfer.complete=Dosya aktarımı tamamlandı ({0})

View File

@ -623,8 +623,6 @@ message.specify.users.to.join.conference=Вкажи користувачів, щ
message.subject.change.error=Тобі не дозволено змінювати тему цієї кімнати
message.subject.has.been.changed.to={1} змінив тему на "{0}"
message.supply.resource=Вкажи правильне джерело
message.supply.valid.port=Вкажи правильний порт
message.supply.valid.timeout=Вкажи правильне значення таймауту
message.total.downloaded=Завантажено всього
message.transfer.cancelled=Файлова передача скасована
message.transfer.complete=Передачу було завершено ({0})

View File

@ -651,8 +651,6 @@ message.specify.users.to.join.conference=指定要加入此会议室的用户
message.subject.change.error=不允许您更改此房间的主题
message.subject.has.been.changed.to={1} 已将主题更改为“{0}”
message.supply.resource=提供有效的资源
message.supply.valid.port=提供有效端口
message.supply.valid.timeout=提供有效的超时值
message.total.downloaded=下载总数
message.transfer.cancelled=文件传输已取消
message.transfer.complete=文件传输已完成 ({0})

View File

@ -653,8 +653,6 @@ message.specify.users.to.join.conference=指定用戶加入這個會議室
message.subject.change.error=您無權更改此房間的主題
message.subject.has.been.changed.to={1} 改變會議主題為 "{0}"
message.supply.resource=提供一個有效的資源
message.supply.valid.port=提供一個有效的連接埠
message.supply.valid.timeout=提供一個有效的超時值
message.total.downloaded=總下載
message.transfer.cancelled=文件傳輸被取消
message.transfer.complete=文件傳輸完成 ({0})