Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package kotlin.GUI;
- import java.awt.*;
- import java.io.File;
- import java.util.HashMap;
- import java.util.Map;
- import javax.swing.*;
- import net.miginfocom.swing.MigLayout;
- import com.formdev.flatlaf.extras.FlatSVGIcon;
- import net.sf.jasperreports.engine.*;
- import net.sf.jasperreports.engine.design.JasperDesign;
- import net.sf.jasperreports.engine.xml.JRXmlLoader;
- public class JasperReportApp {
- private JFrame frame;
- private JTextField incidentTypeField, dateTimeField, locationField, involvedPersonsField,
- narrativeField, actionsField, recommendationsField, reportedByField, dateReceivedField;
- private File selectedTemplate, selectedImage1, selectedImage2;
- private JLabel templateLabel, imageLabel1, imageLabel2;
- FlatSVGIcon sagisag, logo;
- /**
- * @wbp.parser.entryPoint
- */
- public JasperReportApp() {
- frame = new JFrame("Incident Report Generator");
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- frame.setSize(800, 600);
- // Initialize main panel with MigLayout
- JPanel mainPanel = new JPanel(new MigLayout("fillx, insets 20", "[right][grow]", "[]10[]"));
- // Type of Incident
- mainPanel.add(new JLabel("Type of Incident:"), "cell 0 0");
- incidentTypeField = new JTextField(20);
- mainPanel.add(incidentTypeField, "cell 1 0, growx, wrap");
- // Date and Time
- mainPanel.add(new JLabel("Inclusive Date and Time:"), "cell 0 1");
- dateTimeField = new JTextField(20);
- mainPanel.add(dateTimeField, "cell 1 1, growx, wrap");
- // Location
- mainPanel.add(new JLabel("Exact Location:"), "cell 0 2");
- locationField = new JTextField(20);
- mainPanel.add(locationField, "cell 1 2, growx, wrap");
- // Involved Persons
- mainPanel.add(new JLabel("Involved Persons:"), "cell 0 3");
- involvedPersonsField = new JTextField(20);
- mainPanel.add(involvedPersonsField, "cell 1 3, growx, wrap");
- // Narrative Details
- mainPanel.add(new JLabel("Narrative Details:"), "cell 0 4");
- narrativeField = new JTextField(20);
- mainPanel.add(narrativeField, "cell 1 4, growx, h 60!, wrap");
- // Actions Taken
- mainPanel.add(new JLabel("Actions Taken:"), "cell 0 5");
- actionsField = new JTextField(20);
- mainPanel.add(actionsField, "cell 1 5, growx, h 60!, wrap");
- // Recommendations
- mainPanel.add(new JLabel("Recommendations:"), "cell 0 6");
- recommendationsField = new JTextField(20);
- mainPanel.add(recommendationsField, "cell 1 6, growx, h 60!, wrap");
- // Reported By
- mainPanel.add(new JLabel("Reported By:"), "cell 0 7");
- reportedByField = new JTextField(20);
- mainPanel.add(reportedByField, "cell 1 7, growx, wrap");
- // Date Received
- mainPanel.add(new JLabel("Date Received:"), "cell 0 8");
- dateReceivedField = new JTextField(20);
- mainPanel.add(dateReceivedField, "cell 1 8, growx, wrap");
- // Template selection
- JButton importTemplateButton = new JButton("Import JRXML Template");
- importTemplateButton.addActionListener(e -> selectTemplate());
- mainPanel.add(importTemplateButton, "cell 0 9");
- templateLabel = new JLabel("No template selected");
- mainPanel.add(templateLabel, "cell 1 9, wrap");
- // Logo section
- // REPLACE WITH LOGO you USE
- sagisag = new FlatSVGIcon("DepEd_Sagisag.svg", 0.2f);
- logo = new FlatSVGIcon("DepEd_Logo.svg", 0.2f);
- JPanel logoPanel = new JPanel(new MigLayout("insets 0", "[]20[]", "[]"));
- imageLabel1 = new JLabel(sagisag);
- logoPanel.add(imageLabel1, "cell 0 0");
- imageLabel2 = new JLabel(logo);
- logoPanel.add(imageLabel2, "cell 1 0");
- mainPanel.add(logoPanel, "cell 1 10, center, wrap");
- // Generate button
- JButton generatePDFButton = new JButton("Generate PDF");
- generatePDFButton.addActionListener(e -> generateReport());
- mainPanel.add(generatePDFButton, "cell 1 11, right");
- // Add scroll pane
- JScrollPane scrollPane = new JScrollPane(mainPanel);
- scrollPane.setBorder(null);
- frame.getContentPane().add(scrollPane);
- frame.setVisible(true);
- }
- private void selectTemplate() {
- JFileChooser fileChooser = new JFileChooser();
- if (fileChooser.showOpenDialog(frame) == JFileChooser.APPROVE_OPTION) {
- selectedTemplate = fileChooser.getSelectedFile();
- templateLabel.setText("Selected: " + selectedTemplate.getAbsolutePath());
- }
- }
- private void generateReport() {
- if (selectedTemplate == null || selectedImage1 == null || selectedImage2 == null) {
- JOptionPane.showMessageDialog(frame, "Please select a template and both images.", "Error",
- JOptionPane.ERROR_MESSAGE);
- return;
- }
- try {
- JasperDesign jasperDesign = JRXmlLoader.load(selectedTemplate);
- JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
- Map<String, Object> parameters = new HashMap<>();
- parameters.put("TypeOfIncident", incidentTypeField.getText());
- parameters.put("DateTime", dateTimeField.getText());
- parameters.put("ExactLocation", locationField.getText());
- parameters.put("InvolvedPersons", involvedPersonsField.getText());
- parameters.put("NarrativeDetails", narrativeField.getText());
- parameters.put("ActionsTaken", actionsField.getText());
- parameters.put("Recommendations", recommendationsField.getText());
- parameters.put("ReportedBy", reportedByField.getText());
- parameters.put("DateReceived", dateReceivedField.getText());
- parameters.put("DepEdSagisag", sagisag.getImage());
- parameters.put("DepEdLogo", logo.getImage());
- JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JREmptyDataSource());
- JFileChooser fileChooser = new JFileChooser();
- fileChooser.setDialogTitle("Save PDF");
- if (fileChooser.showSaveDialog(frame) == JFileChooser.APPROVE_OPTION) {
- File outputFile = new File(fileChooser.getSelectedFile() + ".pdf");
- JasperExportManager.exportReportToPdfFile(jasperPrint, outputFile.getAbsolutePath());
- JOptionPane.showMessageDialog(frame, "PDF saved: " + outputFile.getAbsolutePath());
- }
- } catch (Exception e) {
- e.printStackTrace();
- JOptionPane.showMessageDialog(frame, "Error generating report: " + e.getMessage(), "Error",
- JOptionPane.ERROR_MESSAGE);
- }
- }
- public static void main(String[] args) {
- SwingUtilities.invokeLater(JasperReportApp::new);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement