-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPasswordViewScreen.java
More file actions
84 lines (72 loc) · 2.85 KB
/
Copy pathPasswordViewScreen.java
File metadata and controls
84 lines (72 loc) · 2.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.util.List;
public class PasswordViewScreen {
private JPanel panel;
private JTable table;
private DefaultTableModel model;
private boolean showingPlain = false;
private SecurePassManager app;
private PasswordVault vault;
private UserDashboard dashboard;
public PasswordViewScreen(SecurePassManager app, PasswordVault vault, UserDashboard dashboard) {
this.app = app;
this.vault = vault;
this.dashboard = dashboard;
panel = new JPanel(new BorderLayout());
// Table setup
model = new DefaultTableModel(new Object[]{"Site", "Username", "Password", "Notes"}, 0);
table = new JTable(model);
table.setFont(new Font("Arial", Font.PLAIN, 14));
table.getTableHeader().setFont(new Font("Arial", Font.BOLD, 14));
panel.add(new JScrollPane(table), BorderLayout.CENTER);
// Buttons
JButton toggleBtn = new JButton("Show Passwords");
JButton deleteBtn = new JButton("Delete Selected");
JButton backBtn = new JButton("Back to Dashboard");
JPanel bottom = new JPanel();
bottom.add(toggleBtn);
bottom.add(deleteBtn);
bottom.add(backBtn);
panel.add(bottom, BorderLayout.SOUTH);
refreshTable(); // Load passwords
// Toggle show/hide passwords
toggleBtn.addActionListener(e -> {
showingPlain = !showingPlain;
toggleBtn.setText(showingPlain ? "Hide Passwords" : "Show Passwords");
refreshTable();
});
// Delete selected row
deleteBtn.addActionListener(e -> {
int row = table.getSelectedRow();
if (row == -1) {
JOptionPane.showMessageDialog(panel, "Please select a password to delete!");
return;
}
if (JOptionPane.showConfirmDialog(panel, "Delete this password permanently?") == JOptionPane.YES_OPTION) {
vault.deleteEntry(row);
vault.saveToFile(app.getCurrentUser());
refreshTable();
LogManager.log(app.getCurrentUser(), "Deleted a password entry");
JOptionPane.showMessageDialog(panel, "Password deleted!");
}
});
// Back button
backBtn.addActionListener(e -> {
dashboard.refresh();
app.showScreen("Dashboard");
});
}
private void refreshTable() {
model.setRowCount(0);
List<PasswordEntry> entries = vault.getAll();
for (PasswordEntry e : entries) {
String password = showingPlain ? e.getPlainPassword() : "••••••••";
model.addRow(new Object[]{e.site, e.username, password, e.notes});
}
}
public JPanel getPanel() {
return panel;
}
}