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
.filechooser
.FileFilter
;
12 import javax
.swing
.filechooser
.FileNameExtensionFilter
;
13 import javax
.swing
.table
.DefaultTableModel
;
19 public class NoticesReportViewDialog
extends javax
.swing
.JDialog
{
21 private int currentReport
;
22 private String reportTitle
;
23 private String
[] reportCols
;
24 private ArrayList
<Object
> reportData
;
27 * Creates new form NoticesReportViewDialog
29 public NoticesReportViewDialog(java
.awt
.Frame parent
, boolean modal
) {
36 * This method is called from within the constructor to initialize the form.
37 * WARNING: Do NOT modify this code. The content of this method is always
38 * regenerated by the Form Editor.
40 @SuppressWarnings("unchecked")
41 // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
42 private void initComponents() {
44 popMenu
= new javax
.swing
.JPopupMenu();
45 menuExportCSV
= new javax
.swing
.JMenuItem();
46 labelReportTitle
= new javax
.swing
.JLabel();
47 jScrollPane2
= new javax
.swing
.JScrollPane();
48 tableReport
= new javax
.swing
.JTable();
49 checkFilterByClient
= new javax
.swing
.JCheckBox();
50 comboClients
= new javax
.swing
.JComboBox
<>();
51 buttonApply
= new javax
.swing
.JButton();
53 popMenu
.setLabel("Popup");
55 menuExportCSV
.setMnemonic('C');
56 menuExportCSV
.setText("Export as CSV...");
57 menuExportCSV
.addActionListener(new java
.awt
.event
.ActionListener() {
58 public void actionPerformed(java
.awt
.event
.ActionEvent evt
) {
59 menuExportCSVActionPerformed(evt
);
62 popMenu
.add(menuExportCSV
);
64 setDefaultCloseOperation(javax
.swing
.WindowConstants
.DISPOSE_ON_CLOSE
);
65 setTitle("View Report");
66 setLocationByPlatform(true);
68 labelReportTitle
.setFont(new java
.awt
.Font("Noto Sans", 1, 15)); // NOI18N
69 labelReportTitle
.setHorizontalAlignment(javax
.swing
.SwingConstants
.CENTER
);
70 labelReportTitle
.setText("REPORT TITLE");
72 tableReport
.setModel(new javax
.swing
.table
.DefaultTableModel(
80 tableReport
.setCellSelectionEnabled(true);
81 jScrollPane2
.setViewportView(tableReport
);
83 checkFilterByClient
.setText("Filter by Client");
85 buttonApply
.setMnemonic('a');
86 buttonApply
.setText("Apply");
87 buttonApply
.setToolTipText("");
88 buttonApply
.addActionListener(new java
.awt
.event
.ActionListener() {
89 public void actionPerformed(java
.awt
.event
.ActionEvent evt
) {
90 buttonApplyActionPerformed(evt
);
94 javax
.swing
.GroupLayout layout
= new javax
.swing
.GroupLayout(getContentPane());
95 getContentPane().setLayout(layout
);
96 layout
.setHorizontalGroup(
97 layout
.createParallelGroup(javax
.swing
.GroupLayout
.Alignment
.LEADING
)
98 .addComponent(jScrollPane2
, javax
.swing
.GroupLayout
.DEFAULT_SIZE
, 679, Short
.MAX_VALUE
)
99 .addGroup(layout
.createSequentialGroup()
100 .addComponent(labelReportTitle
, javax
.swing
.GroupLayout
.DEFAULT_SIZE
, javax
.swing
.GroupLayout
.DEFAULT_SIZE
, Short
.MAX_VALUE
)
102 .addGroup(layout
.createSequentialGroup()
104 .addComponent(checkFilterByClient
, javax
.swing
.GroupLayout
.PREFERRED_SIZE
, 196, javax
.swing
.GroupLayout
.PREFERRED_SIZE
)
105 .addPreferredGap(javax
.swing
.LayoutStyle
.ComponentPlacement
.RELATED
)
106 .addComponent(comboClients
, javax
.swing
.GroupLayout
.PREFERRED_SIZE
, 322, javax
.swing
.GroupLayout
.PREFERRED_SIZE
)
107 .addPreferredGap(javax
.swing
.LayoutStyle
.ComponentPlacement
.RELATED
)
108 .addComponent(buttonApply
, javax
.swing
.GroupLayout
.DEFAULT_SIZE
, javax
.swing
.GroupLayout
.DEFAULT_SIZE
, Short
.MAX_VALUE
))
110 layout
.setVerticalGroup(
111 layout
.createParallelGroup(javax
.swing
.GroupLayout
.Alignment
.LEADING
)
112 .addGroup(layout
.createSequentialGroup()
113 .addComponent(labelReportTitle
, javax
.swing
.GroupLayout
.PREFERRED_SIZE
, 21, javax
.swing
.GroupLayout
.PREFERRED_SIZE
)
114 .addPreferredGap(javax
.swing
.LayoutStyle
.ComponentPlacement
.RELATED
)
115 .addGroup(layout
.createParallelGroup(javax
.swing
.GroupLayout
.Alignment
.BASELINE
)
116 .addComponent(checkFilterByClient
)
117 .addComponent(comboClients
, javax
.swing
.GroupLayout
.PREFERRED_SIZE
, javax
.swing
.GroupLayout
.DEFAULT_SIZE
, javax
.swing
.GroupLayout
.PREFERRED_SIZE
)
118 .addComponent(buttonApply
))
119 .addPreferredGap(javax
.swing
.LayoutStyle
.ComponentPlacement
.RELATED
)
120 .addComponent(jScrollPane2
, javax
.swing
.GroupLayout
.DEFAULT_SIZE
, 326, Short
.MAX_VALUE
))
124 }// </editor-fold>//GEN-END:initComponents
126 private void menuExportCSVActionPerformed(java
.awt
.event
.ActionEvent evt
) {//GEN-FIRST:event_menuExportCSVActionPerformed
127 // TODO add your handling code here:
128 JFileChooser chooser
= new JFileChooser ();
129 FileFilter filter
= new FileNameExtensionFilter("Comma Separated Values (.csv)", "csv");
130 chooser
.setFileFilter(filter
);
131 int rt
= chooser
.showSaveDialog(this);
132 if (rt
== JFileChooser
.APPROVE_OPTION
) {
133 String filePath
= chooser
.getSelectedFile().getAbsolutePath();
134 if (!filePath
.endsWith(".csv"))
135 filePath
= filePath
.concat(".csv");
136 boolean ret
= Utility
.saveReportCSV (filePath
, reportCols
, reportData
);
138 JOptionPane
.showMessageDialog(this, ERROR_SAVING_REPORT
);
140 JOptionPane
.showMessageDialog(this, REPORT_SAVED_SUCCESSFULLY
);
142 }//GEN-LAST:event_menuExportCSVActionPerformed
144 private void buttonApplyActionPerformed(java
.awt
.event
.ActionEvent evt
) {//GEN-FIRST:event_buttonApplyActionPerformed
145 // TODO add your handling code here:
146 if (! checkFilterByClient
.isSelected()) {
147 reportData
= Utility
.getReportData(currentReport
, -1);
149 if (reportData
!= null)
152 DBItem db
= (DBItem
)comboClients
.getSelectedItem();
155 int selid
= db
.getKey();
156 reportData
= Utility
.getReportData(currentReport
, selid
);
157 if (reportData
!= null)
161 }//GEN-LAST:event_buttonApplyActionPerformed
162 private static final String REPORT_SAVED_SUCCESSFULLY
= "Report saved successfully";
163 private static final String ERROR_SAVING_REPORT
= "Error saving report";
166 * @param args the command line arguments
168 public static void main(String args
[]) {
169 /* Set the Nimbus look and feel */
170 //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
171 /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
172 * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
175 for (javax
.swing
.UIManager
.LookAndFeelInfo info
: javax
.swing
.UIManager
.getInstalledLookAndFeels()) {
176 if ("Nimbus".equals(info
.getName())) {
177 javax
.swing
.UIManager
.setLookAndFeel(info
.getClassName());
181 } catch (ClassNotFoundException ex
) {
182 java
.util
.logging
.Logger
.getLogger(NoticesReportViewDialog
.class.getName()).log(java
.util
.logging
.Level
.SEVERE
, null, ex
);
183 } catch (InstantiationException ex
) {
184 java
.util
.logging
.Logger
.getLogger(NoticesReportViewDialog
.class.getName()).log(java
.util
.logging
.Level
.SEVERE
, null, ex
);
185 } catch (IllegalAccessException ex
) {
186 java
.util
.logging
.Logger
.getLogger(NoticesReportViewDialog
.class.getName()).log(java
.util
.logging
.Level
.SEVERE
, null, ex
);
187 } catch (javax
.swing
.UnsupportedLookAndFeelException ex
) {
188 java
.util
.logging
.Logger
.getLogger(NoticesReportViewDialog
.class.getName()).log(java
.util
.logging
.Level
.SEVERE
, null, ex
);
192 /* Create and display the dialog */
193 java
.awt
.EventQueue
.invokeLater(new Runnable() {
195 NoticesReportViewDialog dialog
= new NoticesReportViewDialog(new javax
.swing
.JFrame(), true);
196 dialog
.addWindowListener(new java
.awt
.event
.WindowAdapter() {
198 public void windowClosing(java
.awt
.event
.WindowEvent e
) {
202 dialog
.setVisible(true);
207 // Variables declaration - do not modify//GEN-BEGIN:variables
208 private javax
.swing
.JButton buttonApply
;
209 private javax
.swing
.JCheckBox checkFilterByClient
;
210 private javax
.swing
.JComboBox
<DBItem
> comboClients
;
211 private javax
.swing
.JScrollPane jScrollPane2
;
212 private javax
.swing
.JLabel labelReportTitle
;
213 private javax
.swing
.JMenuItem menuExportCSV
;
214 private javax
.swing
.JPopupMenu popMenu
;
215 private javax
.swing
.JTable tableReport
;
216 // End of variables declaration//GEN-END:variables
218 public void setupReportTable(int reportNum
, String title
, String
[] columns
,
219 ArrayList
<Object
> data
) {
220 currentReport
= reportNum
;
222 reportCols
= columns
;
224 DefaultTableModel mdl
= new DefaultTableModel (columns
, 0) {
226 public boolean isCellEditable (int row
, int col
) {
230 tableReport
.setModel(mdl
);
231 tableReport
.setComponentPopupMenu(popMenu
);
233 labelReportTitle
.setText(title
);
237 private void populateReport () {
238 DefaultTableModel mdl
= (DefaultTableModel
)tableReport
.getModel();
240 for (int i
= 0; i
< reportData
.size(); i
+= reportCols
.length
) {
241 Object
[] row
= new Object
[reportCols
.length
];
242 for (int j
= 0; j
< reportCols
.length
; j
++)
243 row
[j
] = reportData
.get(i
+j
);
249 private void populateClients() {
250 ArrayList
<Object
> clients
= Utility
.getClientsNameAndId();
251 if (clients
== null) return;
252 for (int i
= 0; i
< clients
.size(); i
+= 2) {
253 comboClients
.addItem (new DBItem ((int)clients
.get(i
),
254 (String
)clients
.get(i
+1)));