Skip to content

Instantly share code, notes, and snippets.

@Azoraqua
Created October 31, 2017 16:43
Show Gist options
  • Save Azoraqua/f790aee621fd6c276c9414d29231bd07 to your computer and use it in GitHub Desktop.
Save Azoraqua/f790aee621fd6c276c9414d29231bd07 to your computer and use it in GitHub Desktop.
package com.azoraqua.passwordgenerator.gui;
import com.azoraqua.passwordgenerator.generator.password.CharacterSet;
import com.azoraqua.passwordgenerator.generator.password.PasswordGenerator;
import javax.swing.*;
import java.awt.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.List;
public class Main {
private static JTextField passwordField;
private static JButton generateBtn;
private static int length = 16;
private static List<CharacterSet> selectedChararacters = new ArrayList<>();
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setTitle("Password Generator");
frame.setSize(1280, 720);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.X_AXIS));
passwordField = new JTextField(36);
passwordField.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 16));
passwordField.setHorizontalAlignment(JTextField.CENTER);
passwordField.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if(!passwordField.getText().isEmpty()) {
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(new StringSelection(passwordField.getText()), null);
JOptionPane.showMessageDialog(frame, "Password is copied to clipboard.");
}
}
});
frame.add(passwordField, Box.createGlue());
generateBtn = new JButton("Generate");
generateBtn.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if(!selectedChararacters.isEmpty()) {
PasswordGenerator passwordGenerator = new PasswordGenerator(length, selectedChararacters.toArray(new CharacterSet[selectedChararacters.size()]));
passwordField.setText(String.valueOf(passwordGenerator.generate()));
} else {
JOptionPane.showMessageDialog(frame, "Please select at least one Character type.");
}
}
});
frame.add(generateBtn, Box.createGlue());
JToggleButton upperCaseToggle = new JToggleButton("Uppercase");
upperCaseToggle.addChangeListener(e -> {
if(selectedChararacters.contains(CharacterSet.UPPERCASE)) {
selectedChararacters.remove(CharacterSet.UPPERCASE);
} else {
selectedChararacters.add(CharacterSet.UPPERCASE);
}
});
JToggleButton lowercaseToggle = new JToggleButton("Lowercase");
lowercaseToggle.addChangeListener(e -> {
if(selectedChararacters.contains(CharacterSet.LOWERCASE)) {
selectedChararacters.remove(CharacterSet.LOWERCASE);
} else {
selectedChararacters.add(CharacterSet.LOWERCASE);
}
});
JToggleButton numericToggle = new JToggleButton("Numeric");
numericToggle.addChangeListener(e -> {
if(selectedChararacters.contains(CharacterSet.NUMERIC)) {
selectedChararacters.remove(CharacterSet.NUMERIC);
} else {
selectedChararacters.add(CharacterSet.NUMERIC);
}
});
JToggleButton symbolToggle = new JToggleButton("Symbols");
symbolToggle.addChangeListener(e -> {
if(selectedChararacters.contains(CharacterSet.SYMBOLS)) {
selectedChararacters.remove(CharacterSet.SYMBOLS);
} else {
selectedChararacters.add(CharacterSet.SYMBOLS);
}
});
frame.add(upperCaseToggle);
frame.add(lowercaseToggle);
frame.add(numericToggle);
frame.add(symbolToggle);
frame.pack();
frame.setVisible(true);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment