logindialog.java
来自「开源项目openfire的完整源程序」· Java 代码 · 共 1,189 行 · 第 1/4 页
JAVA
1,189 行
GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0));
add(savePasswordBox,
new GridBagConstraints(1, 5, 2, 1, 1.0, 0.0,
GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 0, 5), 0, 0));
add(autoLoginBox,
new GridBagConstraints(1, 6, 2, 1, 1.0, 0.0,
GridBagConstraints.EAST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 0, 5), 0, 0));
// Add button but disable the login button initially
savePasswordBox.addActionListener(this);
autoLoginBox.addActionListener(this);
if (!"true".equals(Default.getString(Default.ACCOUNT_DISABLED))) {
buttonPanel.add(createAccountButton,
new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.EAST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 0, 5), 0, 0));
}
buttonPanel.add(advancedButton,
new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.EAST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 0, 5), 0, 0));
buttonPanel.add(loginButton,
new GridBagConstraints(3, 0, 4, 1, 1.0, 0.0,
GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 5, 0, 5), 0, 0));
cardPanel.add(buttonPanel, BUTTON_PANEL);
cardPanel.setOpaque(false);
buttonPanel.setOpaque(false);
ImageIcon icon = new ImageIcon(getClass().getClassLoader().getResource("images/ajax-loader.gif"));
progressBar.setIcon(icon);
cardPanel.add(progressBar, PROGRESS_BAR);
add(cardPanel, new GridBagConstraints(0, 8, 4, 1,
1.0, 1.0, GridBagConstraints.SOUTH, GridBagConstraints.HORIZONTAL,
new Insets(2, 2, 2, 2), 0, 0));
loginButton.setEnabled(false);
// Add KeyListener
usernameField.addKeyListener(this);
passwordField.addKeyListener(this);
serverField.addKeyListener(this);
passwordField.addFocusListener(this);
usernameField.addFocusListener(this);
serverField.addFocusListener(this);
// Add ActionListener
quitButton.addActionListener(this);
loginButton.addActionListener(this);
advancedButton.addActionListener(this);
// Make same size
GraphicUtils.makeSameSize(usernameField, passwordField);
// Set progress bar description
progressBar.setText(Res.getString("message.autenticating"));
progressBar.setVerticalTextPosition(JLabel.BOTTOM);
progressBar.setHorizontalTextPosition(JLabel.CENTER);
progressBar.setHorizontalAlignment(JLabel.CENTER);
// Set Resources
ResourceUtils.resLabel(usernameLabel, usernameField, Res.getString("label.username"));
ResourceUtils.resLabel(passwordLabel, passwordField, Res.getString("label.password"));
ResourceUtils.resButton(quitButton, Res.getString("button.quit"));
ResourceUtils.resButton(loginButton, Res.getString("title.login"));
ResourceUtils.resButton(advancedButton, Res.getString("button.advanced"));
// Load previous instances
String userProp = localPref.getUsername();
String serverProp = localPref.getServer();
if (userProp != null && serverProp != null) {
usernameField.setText(StringUtils.unescapeNode(userProp));
serverField.setText(serverProp);
serverNameLabel.setText(serverProp);
}
// Check Settings
if (localPref.isSavePassword()) {
String encryptedPassword = localPref.getPassword();
if (encryptedPassword != null) {
String password = Encryptor.decrypt(encryptedPassword);
passwordField.setText(password);
}
savePasswordBox.setSelected(true);
loginButton.setEnabled(true);
}
autoLoginBox.setSelected(localPref.isAutoLogin());
useSSO(localPref.isSSOEnabled());
if (autoLoginBox.isSelected()) {
savePasswordBox.setEnabled(false);
autoLoginBox.setEnabled(false);
validateLogin();
return;
}
// Handle arguments
String username = Spark.getArgumentValue("username");
String password = Spark.getArgumentValue("password");
String server = Spark.getArgumentValue("server");
if (username != null) {
usernameField.setText(username);
}
if (password != null) {
passwordField.setText(password);
}
if (server != null) {
serverField.setText(server);
}
if (username != null && server != null && password != null) {
savePasswordBox.setEnabled(false);
autoLoginBox.setEnabled(false);
validateLogin();
}
createAccountButton.addActionListener(this);
final String lockedDownURL = Default.getString(Default.HOST_NAME);
if (ModelUtil.hasLength(lockedDownURL)) {
serverField.setEnabled(false);
serverField.setText(lockedDownURL);
}
}
/**
* Returns the username the user defined.
*
* @return the username.
*/
private String getUsername() {
return StringUtils.escapeNode(usernameField.getText().trim());
}
/**
* Returns the password specified by the user.
*
* @return the password.
*/
private String getPassword() {
return new String(passwordField.getPassword());
}
/**
* Returns the server name specified by the user.
*
* @return the server name.
*/
private String getServerName() {
return serverField.getText().trim();
}
/**
* ActionListener implementation.
*
* @param e the ActionEvent
*/
public void actionPerformed(ActionEvent e) {
if (e.getSource() == quitButton) {
quitLogin();
}
else if (e.getSource() == createAccountButton) {
AccountCreationWizard createAccountPanel = new AccountCreationWizard();
createAccountPanel.invoke(loginDialog);
if (createAccountPanel.isRegistered()) {
usernameField.setText(createAccountPanel.getUsername());
passwordField.setText(createAccountPanel.getPassword());
serverField.setText(createAccountPanel.getServer());
loginButton.setEnabled(true);
}
}
else if (e.getSource() == loginButton) {
validateLogin();
}
else if (e.getSource() == advancedButton) {
final LoginSettingDialog loginSettingsDialog = new LoginSettingDialog();
loginSettingsDialog.invoke(loginDialog);
useSSO(localPref.isSSOEnabled());
}
else if (e.getSource() == savePasswordBox) {
autoLoginBox.setEnabled(savePasswordBox.isSelected());
if (!savePasswordBox.isSelected()) {
autoLoginBox.setSelected(false);
}
}
else if (e.getSource() == autoLoginBox) {
if (autoLoginBox.isSelected()) {
savePasswordBox.setSelected(true);
}
}
}
/**
* KeyListener implementation.
*
* @param e the KeyEvent to process.
*/
public void keyTyped(KeyEvent e) {
validate(e);
}
public void keyPressed(KeyEvent e) {
// Do nothing.
}
public void keyReleased(KeyEvent e) {
validateDialog();
}
/**
* Checks the users input and enables/disables the login button depending on state.
*/
private void validateDialog() {
loginButton.setEnabled(ModelUtil.hasLength(getUsername()) && ModelUtil.hasLength(getPassword())
&& ModelUtil.hasLength(getServerName()));
}
/**
* Validates key input.
*
* @param e the keyEvent.
*/
private void validate(KeyEvent e) {
if (loginButton.isEnabled() && e.getKeyChar() == KeyEvent.VK_ENTER) {
validateLogin();
}
}
public void focusGained(FocusEvent e) {
Object o = e.getSource();
if (o instanceof JTextComponent) {
((JTextComponent)o).selectAll();
}
}
public void focusLost(FocusEvent e) {
}
/**
* Enables/Disables the editable components in the login screen.
*
* @param editable true to enable components, otherwise false to disable.
*/
private void enableComponents(boolean editable) {
// Need to set both editable and enabled for best behavior.
usernameField.setEditable(editable);
usernameField.setEnabled(editable);
passwordField.setEditable(editable);
passwordField.setEnabled(editable);
serverField.setEditable(editable);
serverField.setEnabled(editable);
if (editable) {
// Reapply focus to username field
passwordField.requestFocus();
}
}
/**
* Displays the progress bar.
*
* @param visible true to display progress bar, false to hide it.
*/
private void setProgressBarVisible(boolean visible) {
if (visible) {
cardLayout.show(cardPanel, PROGRESS_BAR);
// progressBar.setIndeterminate(true);
}
else {
cardLayout.show(cardPanel, BUTTON_PANEL);
}
}
/**
* Validates the users login information.
*/
private void validateLogin() {
final SwingWorker loginValidationThread = new SwingWorker() {
public Object construct() {
boolean loginSuccessfull = login();
if (loginSuccessfull) {
progressBar.setText(Res.getString("message.connecting.please.wait"));
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?