Allow leaving the master password empty in the config file for the GUI.
This commit is contained in:
parent
d4969a776a
commit
5466e48629
@ -28,8 +28,12 @@ public abstract class AuthenticationPanel extends JPanel {
|
|||||||
add( Box.createVerticalGlue() );
|
add( Box.createVerticalGlue() );
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void updateUser() {
|
protected void updateUser(boolean repack) {
|
||||||
unlockFrame.setUser( getUser() );
|
unlockFrame.setUser( getUser() );
|
||||||
|
validate();
|
||||||
|
|
||||||
|
if (repack)
|
||||||
|
unlockFrame.repack();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract User getUser();
|
protected abstract User getUser();
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.lyndir.lhunath.masterpassword;
|
package com.lyndir.lhunath.masterpassword;
|
||||||
|
|
||||||
import static com.lyndir.lhunath.opal.system.util.ObjectUtils.ifNotNullElse;
|
import static com.lyndir.lhunath.opal.system.util.ObjectUtils.*;
|
||||||
|
|
||||||
import com.google.common.base.Splitter;
|
import com.google.common.base.Splitter;
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
@ -12,14 +12,18 @@ import java.io.*;
|
|||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.NoSuchElementException;
|
import java.util.NoSuchElementException;
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
|
import javax.swing.event.DocumentEvent;
|
||||||
|
import javax.swing.event.DocumentListener;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author lhunath, 2014-06-11
|
* @author lhunath, 2014-06-11
|
||||||
*/
|
*/
|
||||||
public class ConfigAuthenticationPanel extends AuthenticationPanel implements ItemListener, ActionListener {
|
public class ConfigAuthenticationPanel extends AuthenticationPanel implements ItemListener, ActionListener, DocumentListener {
|
||||||
|
|
||||||
private final JComboBox userField;
|
private final JComboBox userField;
|
||||||
|
private final JLabel masterPasswordLabel;
|
||||||
|
private final JPasswordField masterPasswordField;
|
||||||
|
|
||||||
public ConfigAuthenticationPanel(final UnlockFrame unlockFrame) {
|
public ConfigAuthenticationPanel(final UnlockFrame unlockFrame) {
|
||||||
|
|
||||||
@ -41,11 +45,51 @@ public class ConfigAuthenticationPanel extends AuthenticationPanel implements It
|
|||||||
userField.addItemListener( this );
|
userField.addItemListener( this );
|
||||||
userField.addActionListener( this );
|
userField.addActionListener( this );
|
||||||
add( userField );
|
add( userField );
|
||||||
|
|
||||||
|
// Master Password
|
||||||
|
masterPasswordLabel = new JLabel( "Master Password:" );
|
||||||
|
masterPasswordLabel.setAlignmentX( Component.LEFT_ALIGNMENT );
|
||||||
|
masterPasswordLabel.setHorizontalAlignment( SwingConstants.CENTER );
|
||||||
|
masterPasswordLabel.setVerticalAlignment( SwingConstants.BOTTOM );
|
||||||
|
add( masterPasswordLabel );
|
||||||
|
|
||||||
|
masterPasswordField = new JPasswordField() {
|
||||||
|
@Override
|
||||||
|
public Dimension getMaximumSize() {
|
||||||
|
return new Dimension( Integer.MAX_VALUE, getPreferredSize().height );
|
||||||
|
}
|
||||||
|
};
|
||||||
|
masterPasswordField.setAlignmentX( Component.LEFT_ALIGNMENT );
|
||||||
|
masterPasswordField.addActionListener( this );
|
||||||
|
masterPasswordField.getDocument().addDocumentListener( this );
|
||||||
|
add( masterPasswordField );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Component getFocusComponent() {
|
||||||
|
return masterPasswordField.isVisible()? masterPasswordField: null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void updateUser(boolean repack) {
|
||||||
|
boolean masterPasswordMissing = userField.getSelectedItem() == null || !((User) userField.getSelectedItem()).hasKey();
|
||||||
|
if (masterPasswordField.isVisible() != masterPasswordMissing) {
|
||||||
|
masterPasswordLabel.setVisible( masterPasswordMissing );
|
||||||
|
masterPasswordField.setVisible( masterPasswordMissing );
|
||||||
|
repack = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
super.updateUser( repack );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected User getUser() {
|
protected User getUser() {
|
||||||
return (User) userField.getSelectedItem();
|
User selectedUser = (User) userField.getSelectedItem();
|
||||||
|
if (selectedUser.hasKey()) {
|
||||||
|
return selectedUser;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new User( selectedUser.getName(), new String( masterPasswordField.getPassword() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getHelpText() {
|
public String getHelpText() {
|
||||||
@ -94,12 +138,27 @@ public class ConfigAuthenticationPanel extends AuthenticationPanel implements It
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void itemStateChanged(final ItemEvent e) {
|
public void itemStateChanged(final ItemEvent e) {
|
||||||
updateUser();
|
updateUser( false );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(final ActionEvent e) {
|
public void actionPerformed(final ActionEvent e) {
|
||||||
updateUser();
|
updateUser( false );
|
||||||
unlockFrame.trySignIn( userField );
|
unlockFrame.trySignIn( userField );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void insertUpdate(final DocumentEvent e) {
|
||||||
|
updateUser( false );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeUpdate(final DocumentEvent e) {
|
||||||
|
updateUser( false );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void changedUpdate(final DocumentEvent e) {
|
||||||
|
updateUser( false );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
package com.lyndir.lhunath.masterpassword;
|
package com.lyndir.lhunath.masterpassword;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.awt.event.*;
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import javax.swing.event.DocumentEvent;
|
import javax.swing.event.DocumentEvent;
|
||||||
import javax.swing.event.DocumentListener;
|
import javax.swing.event.DocumentListener;
|
||||||
@ -67,22 +68,22 @@ public class TextAuthenticationPanel extends AuthenticationPanel implements Docu
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void insertUpdate(final DocumentEvent e) {
|
public void insertUpdate(final DocumentEvent e) {
|
||||||
updateUser();
|
updateUser( false );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void removeUpdate(final DocumentEvent e) {
|
public void removeUpdate(final DocumentEvent e) {
|
||||||
updateUser();
|
updateUser( false );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void changedUpdate(final DocumentEvent e) {
|
public void changedUpdate(final DocumentEvent e) {
|
||||||
updateUser();
|
updateUser( false );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(final ActionEvent e) {
|
public void actionPerformed(final ActionEvent e) {
|
||||||
updateUser();
|
updateUser( false );
|
||||||
unlockFrame.trySignIn( userNameField, masterPasswordField );
|
unlockFrame.trySignIn( userNameField, masterPasswordField );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -53,7 +53,7 @@ public class UnlockFrame extends JFrame {
|
|||||||
setLocationRelativeTo( null );
|
setLocationRelativeTo( null );
|
||||||
}
|
}
|
||||||
|
|
||||||
private void repack() {
|
protected void repack() {
|
||||||
setPreferredSize( null );
|
setPreferredSize( null );
|
||||||
pack();
|
pack();
|
||||||
setMinimumSize( getSize() );
|
setMinimumSize( getSize() );
|
||||||
@ -70,7 +70,7 @@ public class UnlockFrame extends JFrame {
|
|||||||
} else {
|
} else {
|
||||||
authenticationPanel = new TextAuthenticationPanel( this );
|
authenticationPanel = new TextAuthenticationPanel( this );
|
||||||
}
|
}
|
||||||
authenticationPanel.updateUser();
|
authenticationPanel.updateUser( false );
|
||||||
authenticationContainer.add( authenticationPanel, BorderLayout.CENTER );
|
authenticationContainer.add( authenticationPanel, BorderLayout.CENTER );
|
||||||
|
|
||||||
final JCheckBox typeCheckBox = new JCheckBox( "Use Config File" );
|
final JCheckBox typeCheckBox = new JCheckBox( "Use Config File" );
|
||||||
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user