2 * To change this license header, choose License Headers in Project Properties.
3 * To change this template file, choose Tools | Templates
4 * and open the template in the editor.
8 import java
.util
.ArrayList
;
9 import javax
.swing
.JFileChooser
;
10 import javax
.swing
.JOptionPane
;
11 import javax
.swing
.JTable
;
12 import javax
.swing
.table
.DefaultTableModel
;
13 import javax
.swing
.table
.TableModel
;
19 public class NoticesReportViewDialog
extends javax
.swing
.JDialog
{
21 private String reportTitle
;
22 private String
[] reportCols
;
23 private ArrayList
<Object
> reportData
;
26 * Creates new form NoticesReportViewDialog
28 public NoticesReportViewDialog(java
.awt
.Frame parent
, boolean modal
) {
34 * This method is called from within the constructor to initialize the form.
35 * WARNING: Do NOT modify this code. The content of this method is always
36 * regenerated by the Form Editor.
38 @SuppressWarnings("unchecked")
39 // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
40 private void initComponents() {
42 popMenu
= new javax
.swing
.JPopupMenu();
43 menuExportCSV
= new javax
.swing
.JMenuItem();
44 labelReportTitle
= new javax
.swing
.JLabel();
45 jScrollPane2
= new javax
.swing
.JScrollPane();
46 tableReport
= new javax
.swing
.JTable();
48 popMenu
.setLabel("Popup");
50 menuExportCSV
.setMnemonic('C');
51 menuExportCSV
.setText("Export as CSV...");
52 menuExportCSV
.addActionListener(new java
.awt
.event
.ActionListener() {
53 public void actionPerformed(java
.awt
.event
.ActionEvent evt
) {
54 menuExportCSVActionPerformed(evt
);
57 popMenu
.add(menuExportCSV
);
59 setDefaultCloseOperation(javax
.swing
.WindowConstants
.DISPOSE_ON_CLOSE
);
60 setTitle("View Report");
62 labelReportTitle
.setFont(new java
.awt
.Font("Noto Sans", 1, 15)); // NOI18N
63 labelReportTitle
.setHorizontalAlignment(javax
.swing
.SwingConstants
.CENTER
);
64 labelReportTitle
.setText("REPORT TITLE");
66 tableReport
.setModel(new javax
.swing
.table
.DefaultTableModel(
74 jScrollPane2
.setViewportView(tableReport
);
76 javax
.swing
.GroupLayout layout
= new javax
.swing
.GroupLayout(getContentPane());
77 getContentPane().setLayout(layout
);
78 layout
.setHorizontalGroup(
79 layout
.createParallelGroup(javax
.swing
.GroupLayout
.Alignment
.LEADING
)
80 .addGroup(layout
.createSequentialGroup()
81 .addComponent(labelReportTitle
, javax
.swing
.GroupLayout
.DEFAULT_SIZE
, javax
.swing
.GroupLayout
.DEFAULT_SIZE
, Short
.MAX_VALUE
)
83 .addComponent(jScrollPane2
, javax
.swing
.GroupLayout
.DEFAULT_SIZE
, 682, Short
.MAX_VALUE
)
85 layout
.setVerticalGroup(
86 layout
.createParallelGroup(javax
.swing
.GroupLayout
.Alignment
.LEADING
)
87 .addGroup(layout
.createSequentialGroup()
88 .addComponent(labelReportTitle
, javax
.swing
.GroupLayout
.PREFERRED_SIZE
, 21, javax
.swing
.GroupLayout
.PREFERRED_SIZE
)
89 .addPreferredGap(javax
.swing
.LayoutStyle
.ComponentPlacement
.RELATED
)
90 .addComponent(jScrollPane2
, javax
.swing
.GroupLayout
.DEFAULT_SIZE
, 354, Short
.MAX_VALUE
))
94 }// </editor-fold>//GEN-END:initComponents
96 private void menuExportCSVActionPerformed(java
.awt
.event
.ActionEvent evt
) {//GEN-FIRST:event_menuExportCSVActionPerformed
97 // TODO add your handling code here:
98 JFileChooser chooser
= new JFileChooser ();
99 int rt
= chooser
.showSaveDialog(this);
100 if (rt
== JFileChooser
.APPROVE_OPTION
) {
101 String filePath
= chooser
.getSelectedFile().getAbsolutePath();
102 boolean ret
= Utility
.saveReportCSV (filePath
, reportCols
, reportData
);
104 JOptionPane
.showMessageDialog(this, ERROR_SAVING_REPORT
);
106 JOptionPane
.showMessageDialog(this, REPORT_SAVED_SUCCESSFULLY
);
108 }//GEN-LAST:event_menuExportCSVActionPerformed
109 private static final String REPORT_SAVED_SUCCESSFULLY
= "Report saved successfully";
110 private static final String ERROR_SAVING_REPORT
= "Error saving report";
113 * @param args the command line arguments
115 public static void main(String args
[]) {
116 /* Set the Nimbus look and feel */
117 //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
118 /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
119 * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
122 for (javax
.swing
.UIManager
.LookAndFeelInfo info
: javax
.swing
.UIManager
.getInstalledLookAndFeels()) {
123 if ("Nimbus".equals(info
.getName())) {
124 javax
.swing
.UIManager
.setLookAndFeel(info
.getClassName());
128 } catch (ClassNotFoundException ex
) {
129 java
.util
.logging
.Logger
.getLogger(NoticesReportViewDialog
.class.getName()).log(java
.util
.logging
.Level
.SEVERE
, null, ex
);
130 } catch (InstantiationException ex
) {
131 java
.util
.logging
.Logger
.getLogger(NoticesReportViewDialog
.class.getName()).log(java
.util
.logging
.Level
.SEVERE
, null, ex
);
132 } catch (IllegalAccessException ex
) {
133 java
.util
.logging
.Logger
.getLogger(NoticesReportViewDialog
.class.getName()).log(java
.util
.logging
.Level
.SEVERE
, null, ex
);
134 } catch (javax
.swing
.UnsupportedLookAndFeelException ex
) {
135 java
.util
.logging
.Logger
.getLogger(NoticesReportViewDialog
.class.getName()).log(java
.util
.logging
.Level
.SEVERE
, null, ex
);
139 /* Create and display the dialog */
140 java
.awt
.EventQueue
.invokeLater(new Runnable() {
142 NoticesReportViewDialog dialog
= new NoticesReportViewDialog(new javax
.swing
.JFrame(), true);
143 dialog
.addWindowListener(new java
.awt
.event
.WindowAdapter() {
145 public void windowClosing(java
.awt
.event
.WindowEvent e
) {
149 dialog
.setVisible(true);
154 // Variables declaration - do not modify//GEN-BEGIN:variables
155 private javax
.swing
.JScrollPane jScrollPane2
;
156 private javax
.swing
.JLabel labelReportTitle
;
157 private javax
.swing
.JMenuItem menuExportCSV
;
158 private javax
.swing
.JPopupMenu popMenu
;
159 private javax
.swing
.JTable tableReport
;
160 // End of variables declaration//GEN-END:variables
162 public void setupReportTable(String title
, String
[] columns
,
163 ArrayList
<Object
> data
) {
165 reportCols
= columns
;
167 DefaultTableModel mdl
= new DefaultTableModel (columns
, 0) {
169 public boolean isCellEditable (int row
, int col
) {
173 tableReport
.setModel(mdl
);
174 tableReport
.setComponentPopupMenu(popMenu
);
176 labelReportTitle
.setText(title
);
177 for (int i
= 0; i
< data
.size(); i
+= columns
.length
) {
178 Object
[] row
= new Object
[columns
.length
];
179 for (int j
= 0; j
< columns
.length
; j
++)
180 row
[j
] = data
.get(i
+j
);