diff --git a/src/main/java/dev/sillyangel/calc/utils.java b/src/main/java/dev/sillyangel/calc/utils.java index 7e3dcf1..6f42bad 100644 --- a/src/main/java/dev/sillyangel/calc/utils.java +++ b/src/main/java/dev/sillyangel/calc/utils.java @@ -5,6 +5,7 @@ import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.StringSelection; import java.awt.Toolkit; +import java.util.List; public class utils { // private double result; @@ -186,5 +187,44 @@ public class utils { public void clearEntry() { ci.display.setText(""); } + public void showHistoryDialog() { + JDialog historyDialog = new JDialog(this.ci, "Calculation History", true); + historyDialog.setSize(500, 400); + historyDialog.setLocationRelativeTo(this.ci); + historyDialog.setLayout(new BorderLayout(10, 10)); + List historyList = history.getCalculationHistory(); + + if (historyList.isEmpty()) { + JLabel emptyLabel = new JLabel("No calculation history yet", SwingConstants.CENTER); + emptyLabel.setFont(new Font("Segoe UI", Font.PLAIN, 14)); + historyDialog.add(emptyLabel, BorderLayout.CENTER); + } else { + JTextArea historyTextArea = new JTextArea(); + historyTextArea.setEditable(false); + historyTextArea.setFont(new Font("Monospaced", Font.PLAIN, 12)); + + StringBuilder historyText = new StringBuilder(); + for (String entry : historyList) { + historyText.append(entry).append("\n"); + } + historyTextArea.setText(historyText.toString()); + + JScrollPane scrollPane = new JScrollPane(historyTextArea); + historyDialog.add(scrollPane, BorderLayout.CENTER); + + // Status label + JLabel statusLabel = new JLabel("Total calculations: " + historyList.size()); + statusLabel.setBorder(new EmptyBorder(5, 10, 5, 10)); + historyDialog.add(statusLabel, BorderLayout.NORTH); + } + + JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); + JButton closeButton = new JButton("Close"); + closeButton.addActionListener(e -> historyDialog.dispose()); + buttonPanel.add(closeButton); + + historyDialog.add(buttonPanel, BorderLayout.SOUTH); + historyDialog.setVisible(true); + } } \ No newline at end of file