- distributing Java program with Eclipse
- import java.awt.*;
- import java.awt.event.*;
- import java.io.*;
- import java.util.*;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- import javax.swing.*;
- public class PISavior implements MouseListener {
- Random random = new Random();
- private static int amount;
- private static int editLine;
- private static String locations[];
- private static String usernames[];
- private static String passwords[];
- private final char LOWERCASE[] =
- {
- 'a', 'b', 'c', 'd', 'e',
- 'f', 'g', 'h', 'i', 'j',
- 'k', 'l', 'm', 'n', 'o',
- 'p', 'q', 'r', 's', 't',
- 'u', 'v', 'w', 'x', 'y',
- 'z'
- };
- private final char UPPERCASE[] =
- {
- 'A', 'B', 'C', 'D', 'E',
- 'F', 'G', 'H', 'I', 'J',
- 'K', 'L', 'M', 'N', 'O',
- 'P', 'Q', 'R', 'S', 'T',
- 'U', 'V', 'W', 'X', 'Y',
- 'Z'
- };
- private final char NUMBERS[] =
- {
- '0', '1', '2', '3', '4',
- '5', '6', '7', '8', '9'
- };
- private static volatile boolean edit = false;
- JFrame frame = new JFrame();
- JPanel panel = new JPanel();
- JCheckBox jcb_Integers = new JCheckBox("Integers");
- JCheckBox jcb_Capitals = new JCheckBox("Capitals");
- JScrollPane jscroll;
- JLabel jlb_Location = new JLabel("Location");
- JLabel jlb_Username = new JLabel("Username");
- JLabel jlb_Password = new JLabel("Password");
- JLabel jlb_Amount = new JLabel("Amount:");
- JLabel jlb_Length = new JLabel("Length:");
- JLabel jlb_Locations[];
- JLabel jlb_Usernames[];
- JLabel jlb_Passwords[];
- JButton jbt_AddLocation = new JButton("Add Location");
- JButton jbt_Save = new JButton("Save");
- JButton jbt_Add = new JButton("Add");
- JButton jbt_Randomize = new JButton("Randomize");
- JButton jbt_Edit = new JButton("Edit");
- JTextField jtf_Locations[];
- JTextField jtf_Usernames[];
- JTextField jtf_Passwords[];
- JTextField jtf_Location = new JTextField();
- JTextField jtf_Username = new JTextField();
- JTextField jtf_Password = new JTextField();
- JTextField jtf_Integers = new JTextField();
- JTextField jtf_Capitals = new JTextField();
- JTextField jtf_Length = new JTextField();
- public static void main(String args[]) throws FileNotFoundException{
- new PISavior();
- }
- public PISavior() throws FileNotFoundException{
- panel.setLayout(null);
- panel.addMouseListener(this);
- panel.setBounds(0, 0, 400,400);
- load();
- addMainUI();
- //======================================================================
- // ** Main User Interface
- //======================================================================
- panel.add(jlb_Location);
- panel.add(jlb_Username);
- panel.add(jlb_Password);
- jbt_AddLocation.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- edit = false;
- removeMainUI();
- addLocationUI();
- panel.repaint();
- }
- });
- jbt_Save.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- try {
- save();
- } catch (IOException ex) {
- Logger.getLogger(PISavior.class.getName()).log(Level.SEVERE, null, ex);
- }
- }
- });
- //======================================================================
- // ** Add Location User Interface
- //======================================================================
- jtf_Location.setBounds(5, 25, 100, 20);
- jtf_Username.setBounds(5, 65, 100, 20);
- jtf_Password.setBounds(5, 105, 100, 20);
- jlb_Amount.setBounds(210, 10, 100, 20);
- jcb_Integers.setBounds(130, 30, 80, 20);
- jcb_Integers.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- jtf_Integers.setEnabled(jcb_Integers.isSelected());
- }
- });
- jcb_Capitals.setBounds(130, 60, 80, 20);
- jcb_Capitals.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- jtf_Capitals.setEnabled(jcb_Capitals.isSelected());
- }
- });
- jtf_Integers.setBounds(210, 30, 50, 20);
- jtf_Integers.setEnabled(false);
- jtf_Integers.setText("0");
- jtf_Capitals.setBounds(210, 60, 50, 20);
- jtf_Capitals.setEnabled(false);
- jtf_Capitals.setText("0");
- jlb_Length.setBounds(135, 90, 80, 20);
- jtf_Length.setBounds(210, 90, 50, 20);
- jtf_Length.setText("0");
- jbt_Randomize.setBounds(140, 120, 100, 20);
- jbt_Randomize.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- int length = Integer.parseInt(jtf_Length.getText());
- int integers = Integer.parseInt(jtf_Integers.getText());
- int capitals = Integer.parseInt(jtf_Capitals.getText());
- if (length != 0 && length >= (integers + capitals)) {
- jtf_Password.setText(getRandomPassword(length, jcb_Integers.isSelected() != false ? integers : 0, jcb_Capitals.isSelected() != false ? capitals : 0));
- }
- }
- });
- jbt_Add.setBounds(20, 135, 60, 15);
- jbt_Add.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- addInformation(jtf_Location.getText().length() == 0 ? "(Empty)" : jtf_Location.getText(), jtf_Username.getText().length() == 0 ? "(Empty)" : jtf_Username.getText(), jtf_Password.getText().length() == 0 ? "(Empty)" : jtf_Password.getText());
- jtf_Location.setText("");
- jtf_Username.setText("");
- jtf_Password.setText("");
- removeLocationUI();
- addMainUI();
- panel.repaint();
- }
- });
- jbt_Edit.setBounds(20, 135, 60, 15);
- jbt_Edit.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- int i = editLine;
- locations[i] = jtf_Location.getText();
- usernames[i] = jtf_Username.getText();
- passwords[i] = jtf_Password.getText();
- jlb_Locations[i].setText(locations[i]);
- jlb_Usernames[i].setText(usernames[i]);
- jlb_Passwords[i].setText(passwords[i]);
- jtf_Location.setText("");
- jtf_Username.setText("");
- jtf_Password.setText("");
- removeLocationUI();
- addMainUI();
- panel.repaint();
- }
- });
- jscroll = new JScrollPane(panel);
- frame.setTitle("Personal Information Savior");
- frame.setSize(300,240);
- frame.setContentPane(jscroll);
- frame.setLocationRelativeTo(null);
- frame.setVisible(true);
- frame.setResizable(false);
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- }
- public void removeMainUI() {
- if (amount != 0) {
- for (int i = 0; i < amount; i++) {
- panel.remove(jlb_Locations[i]);
- panel.remove(jlb_Usernames[i]);
- panel.remove(jlb_Passwords[i]);
- }
- }
- panel.remove(jbt_AddLocation);
- panel.remove(jbt_Save);
- panel.repaint();
- }
- public void addMainUI() {
- jlb_Location.setBounds(10, 5, 100, 20);
- jlb_Username.setBounds(100, 5, 100, 20);
- jlb_Password.setBounds(200, 5, 100, 20);
- jbt_AddLocation.setBounds(75, (20 * amount) + 25, 110, 15);
- jbt_Save.setBounds(90, (20 * amount) + 45, 80, 15);
- jlb_Location.setText("Location");
- jlb_Username.setText("Username");
- jlb_Password.setText("Password");
- panel.setPreferredSize(new Dimension(200, amount * 30));
- if (amount != 0) {
- for (int i = 0; i < amount; i++) {
- jlb_Locations[i].setBounds(10, 25 + (i * 20), 100, 20);
- jlb_Usernames[i].setBounds(100, 25 + (i * 20), 100, 20);
- jlb_Passwords[i].setBounds(200, 25 + (i * 20), 100, 20);
- panel.add(jlb_Locations[i]);
- panel.add(jlb_Usernames[i]);
- panel.add(jlb_Passwords[i]);
- }
- }
- panel.add(jbt_AddLocation);
- panel.add(jbt_Save);
- panel.repaint();
- }
- public void removeLocationUI() {
- panel.remove(jtf_Location);
- panel.remove(jtf_Username);
- panel.remove(jtf_Password);
- panel.remove(jlb_Amount);
- panel.remove(jcb_Integers);
- panel.remove(jcb_Capitals);
- panel.remove(jtf_Integers);
- panel.remove(jtf_Capitals);
- panel.remove(jlb_Length);
- panel.remove(jtf_Length);
- panel.remove(jbt_Randomize);
- panel.remove(jbt_Add);
- panel.remove(jbt_Edit);
- panel.repaint();
- }
- public void addLocationUI() {
- if (!edit) {
- jlb_Location.setText("New Location:");
- jlb_Location.setBounds(5, 5, 100, 20);
- jlb_Username.setText("New Username:");
- jlb_Username.setBounds(5, 45, 100, 20);
- jlb_Password.setText("New Password:");
- jlb_Password.setBounds(5, 85, 100, 20);
- panel.add(jtf_Location);
- panel.add(jtf_Username);
- panel.add(jtf_Password);
- panel.add(jlb_Amount);
- panel.add(jcb_Integers);
- panel.add(jcb_Capitals);
- panel.add(jtf_Integers);
- panel.add(jtf_Capitals);
- panel.add(jlb_Length);
- panel.add(jtf_Length);
- panel.add(jbt_Randomize);
- panel.add(jbt_Add);
- panel.repaint();
- } else {
- jlb_Location.setText("New Location:");
- jlb_Location.setBounds(5, 5, 100, 20);
- jlb_Username.setText("New Username:");
- jlb_Username.setBounds(5, 45, 100, 20);
- jlb_Password.setText("New Password:");
- jlb_Password.setBounds(5, 85, 100, 20);
- panel.add(jtf_Location);
- panel.add(jtf_Username);
- panel.add(jtf_Password);
- panel.add(jlb_Amount);
- panel.add(jcb_Integers);
- panel.add(jcb_Capitals);
- panel.add(jtf_Integers);
- panel.add(jtf_Capitals);
- panel.add(jlb_Length);
- panel.add(jtf_Length);
- panel.add(jbt_Randomize);
- panel.add(jbt_Edit);
- panel.repaint();
- }
- }
- public String getRandomPassword(int length, int integers, int capitals) {
- int lowers = length - (integers + capitals);
- String password = "";
- String scramble[] = new String[length];
- if (capitals != 0) {
- for (int i = 0; i < capitals; i++) {
- while (true) {
- int randomScramble = random.nextInt(length);
- if (scramble[randomScramble] == null || scramble[randomScramble].equals("")) {
- scramble[randomScramble] = Character.toString(UPPERCASE[random.nextInt(UPPERCASE.length)]);
- break;
- }
- }
- }
- }
- if (integers != 0) {
- for (int i = 0; i < integers; i++) {
- while (true) {
- int randomScramble = random.nextInt(length);
- if (scramble[randomScramble] == null || scramble[randomScramble].equals("")) {
- scramble[randomScramble] = Character.toString(NUMBERS[random.nextInt(NUMBERS.length)]);
- break;
- }
- }
- }
- }
- for (int i = 0; i < lowers; i++) {
- while (true) {
- int randomScramble = random.nextInt(length);
- if (scramble[randomScramble] == null || scramble[randomScramble].equals("")) {
- scramble[randomScramble] = Character.toString(LOWERCASE[random.nextInt(LOWERCASE.length)]);
- break;
- }
- }
- }
- for (int i = 0; i < length; i++) {
- password += scramble[i];
- }
- return password;
- }
- public void save() throws IOException {
- File dir = new File("C:/PISavior");
- if (!dir.exists()) {
- dir.mkdir();
- }
- File myfile = new File("C:/PISavior/myfile.txt");
- myfile.delete();
- myfile.createNewFile();
- PrintWriter output = new PrintWriter(myfile);
- output.print(amount + "*");
- for (int i = 0; i < amount; i++) {
- output.print(locations[i] + "*");
- output.print(usernames[i] + "*");
- output.print(passwords[i] + "*");
- }
- output.close();
- }
- public void load() throws FileNotFoundException {
- File myfile = new File("C:/PISavior/myfile.txt");
- if (myfile.exists()) {
- Scanner input = new Scanner(myfile);
- while (input.hasNext())
- {
- input.useDelimiter("[*]");
- amount = input.nextInt();
- locations = new String[amount];
- usernames = new String[amount];
- passwords = new String[amount];
- jlb_Locations = new JLabel[amount];
- jlb_Usernames = new JLabel[amount];
- jlb_Passwords = new JLabel[amount];
- for (int i = 0; i < amount; i++) {
- locations[i] = input.next();
- jlb_Locations[i] = new JLabel(locations[i]);
- usernames[i] = input.next();
- jlb_Usernames[i] = new JLabel(usernames[i]);
- passwords[i] = input.next();
- jlb_Passwords[i] = new JLabel(passwords[i]);
- }
- }
- }
- }
- public void addInformation(String info1, String info2, String info3) {
- if (amount == 0) {
- amount++;
- locations = new String[amount];
- usernames = new String[amount];
- passwords = new String[amount];
- jlb_Locations = new JLabel[amount];
- jlb_Usernames = new JLabel[amount];
- jlb_Passwords = new JLabel[amount];
- locations[0] = info1;
- usernames[0] = info2;
- passwords[0] = info3;
- jlb_Locations[0] = new JLabel(locations[0]);
- jlb_Usernames[0] = new JLabel(usernames[0]);
- jlb_Passwords[0] = new JLabel(passwords[0]);
- } else {
- String temp1[] = new String[amount];
- String temp2[] = new String[amount];
- String temp3[] = new String[amount];
- for (int i = 0; i < amount; i++) {
- temp1[i] = locations[i];
- temp2[i] = usernames[i];
- temp3[i] = passwords[i];
- }
- amount++;
- locations = new String[amount];
- usernames = new String[amount];
- passwords = new String[amount];
- jlb_Locations = new JLabel[amount];
- jlb_Usernames = new JLabel[amount];
- jlb_Passwords = new JLabel[amount];
- for (int i = 0; i < temp1.length; i++) {
- locations[i] = temp1[i];
- usernames[i] = temp2[i];
- passwords[i] = temp3[i];
- jlb_Locations[i] = new JLabel(temp1[i]);
- jlb_Usernames[i] = new JLabel(temp2[i]);
- jlb_Passwords[i] = new JLabel(temp3[i]);
- }
- locations[amount-1] = info1;
- usernames[amount-1] = info2;
- passwords[amount-1] = info3;
- jlb_Locations[amount-1] = new JLabel(info1);
- jlb_Usernames[amount-1] = new JLabel(info2);
- jlb_Passwords[amount-1] = new JLabel(info3);
- }
- }
- @Override
- public void mouseReleased(MouseEvent e) {
- int y = e.getY();
- if (y > 25 && y < (amount * 20) + 25) {
- for (int i = 0; i < amount; i++) {
- if (y < (i*20) + 45) {
- edit = true;
- editLine = i;
- jtf_Location.setText(locations[i]);
- jtf_Username.setText(usernames[i]);
- jtf_Password.setText(passwords[i]);
- removeMainUI();
- addLocationUI();
- }
- }
- }
- }
- @Override
- public void mouseClicked(MouseEvent me) {
- }
- @Override
- public void mousePressed(MouseEvent me) {
- }
- @Override
- public void mouseEntered(MouseEvent me) {
- }
- @Override
- public void mouseExited(MouseEvent me) {
- }
- }