Skip to content

Commit

Permalink
[RFE#1725] feat: UserPassDialog extra space char
Browse files Browse the repository at this point in the history
- Check validity of username and password
- When there is extra space character, warn it

Signed-off-by: Hiroshi Miura <[email protected]>
  • Loading branch information
miurahr committed Nov 16, 2023
1 parent d8552c5 commit 508f9b8
Show file tree
Hide file tree
Showing 2 changed files with 85 additions and 2 deletions.
1 change: 1 addition & 0 deletions src/org/omegat/Bundle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2326,6 +2326,7 @@ TEAM_26_to_36_CONVERT_FAILED=Project conversion failed.\n\
TEAM_USERPASS_TITLE=Authentication
TEAM_USERPASS_FIRST=Enter your credentials for {0}
TEAM_USERPASS_WRONG=Incorrect username/password for {0}
TEAM_USERPASS_EXTRA_SPACE=Username or password has extra space character(s)
TEAM_USER_FIRST=Enter the username for {0}
TEAM_PASS_FIRST=Enter the password for {0}
TEAM_PASSPHRASE_FIRST=Enter the passphrase for SSH key {0}
Expand Down
86 changes: 84 additions & 2 deletions src/org/omegat/core/team2/gui/UserPassDialog.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,19 +28,23 @@
package org.omegat.core.team2.gui;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.event.ActionEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;

import org.omegat.util.OStrings;
import org.omegat.util.gui.StaticUIUtils;
Expand All @@ -66,6 +70,7 @@ public UserPassDialog(java.awt.Frame parent) {

initComponents();
getRootPane().setDefaultButton(okButton);
setActions();

invalidate();
pack();
Expand All @@ -74,6 +79,60 @@ public UserPassDialog(java.awt.Frame parent) {
usernameField.requestFocusInWindow();
}

private void setActions() {
usernameField.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
checkCredentials();
}

@Override
public void removeUpdate(DocumentEvent e) {
checkCredentials();
}

@Override
public void changedUpdate(DocumentEvent e) {
checkCredentials();
}
});
passwordField.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
checkCredentials();
}

@Override
public void removeUpdate(DocumentEvent e) {
checkCredentials();
}

@Override
public void changedUpdate(DocumentEvent e) {
checkCredentials();
}
});
}

private void checkCredentials() {
String username = usernameField.getText();
char[] password = passwordField.getPassword();
boolean isValid = !username.trim().isEmpty() && password.length > 0;

if (isValid) {
isValid = username.trim().length() == username.length() && password[0] != ' '
&& password[password.length - 1] != ' ';
if (!isValid) {
setMessage(OStrings.getString("TEAM_USERPASS_EXTRA_SPACE"));
}
}
if (isValid) {
resetMessage();
}

okButton.setEnabled(isValid);
}

/**
* @return the return status of this dialog - one of RET_OK or RET_CANCEL
*/
Expand All @@ -88,7 +147,7 @@ private void initComponents() {
GridBagConstraints gridBagConstraints;

JPanel northPanel = new JPanel();
JPanel mainPanel = new JPanel();
mainPanel = new JPanel();
JPanel buttonPanel = new JPanel();
JPanel southPanel = new JPanel();
descriptionTextArea = new JTextArea();
Expand All @@ -97,6 +156,7 @@ private void initComponents() {
JLabel passwordLabel = new JLabel();
passwordField = new JPasswordField();
perHostCheckBox = new JCheckBox();
messageArea = new JTextArea();
okButton = new JButton();
JButton cancelButton = new JButton();

Expand Down Expand Up @@ -172,6 +232,16 @@ public void windowClosing(WindowEvent evt) {
gridBagConstraints.insets = new java.awt.Insets(4, 16, 4, 4);
mainPanel.add(perHostCheckBox, gridBagConstraints);

gridBagConstraints = new GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 8;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(4, 16, 4, 4);
messageArea.setBackground(mainPanel.getBackground());
mainPanel.add(messageArea, gridBagConstraints);

getContentPane().add(mainPanel, BorderLayout.CENTER);

southPanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(10, 10, 10, 10));
Expand Down Expand Up @@ -210,11 +280,13 @@ private void doClose(int retStatus) {
dispose();
}

private JPanel mainPanel;
private JButton okButton;
private JTextArea descriptionTextArea;
private JTextField usernameField;
private JPasswordField passwordField;
private javax.swing.JCheckBox perHostCheckBox;
private JCheckBox perHostCheckBox;
private JTextArea messageArea;

private int returnStatus = RET_CANCEL;

Expand Down Expand Up @@ -246,4 +318,14 @@ public void setDescription(String description) {
public void setPerHostCheckBoxText(String text) {
org.openide.awt.Mnemonics.setLocalizedText(perHostCheckBox, text);
}

public void setMessage(String text) {
messageArea.setText(text);
messageArea.setBackground(Color.red);
}

public void resetMessage() {
messageArea.setText("");
messageArea.setBackground(mainPanel.getBackground());
}
}

0 comments on commit 508f9b8

Please sign in to comment.