X-Git-Url: https://harishankar.org/repos/?p=habeas.git;a=blobdiff_plain;f=src%2Fhabeas%2FNoticesReportViewDialog.java;h=64f5536c580d61bab9668f0297db2c876d90f1f0;hp=ed0932df2485343d643f2ad77ad5938454e1636d;hb=06a2c4c692e08fdc860e489c86f34b2fe64696d1;hpb=7b3591baf2fa1c09bf4f1ac0791400a2c5e9632f diff --git a/src/habeas/NoticesReportViewDialog.java b/src/habeas/NoticesReportViewDialog.java index ed0932d..64f5536 100644 --- a/src/habeas/NoticesReportViewDialog.java +++ b/src/habeas/NoticesReportViewDialog.java @@ -9,6 +9,8 @@ import java.util.ArrayList; import javax.swing.JFileChooser; import javax.swing.JOptionPane; import javax.swing.JTable; +import javax.swing.filechooser.FileFilter; +import javax.swing.filechooser.FileNameExtensionFilter; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel; @@ -28,6 +30,7 @@ public class NoticesReportViewDialog extends javax.swing.JDialog { public NoticesReportViewDialog(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents(); + populateClients (); } /** @@ -44,6 +47,9 @@ public class NoticesReportViewDialog extends javax.swing.JDialog { labelReportTitle = new javax.swing.JLabel(); jScrollPane2 = new javax.swing.JScrollPane(); tableReport = new javax.swing.JTable(); + checkFilterByClient = new javax.swing.JCheckBox(); + comboClients = new javax.swing.JComboBox<>(); + buttonApply = new javax.swing.JButton(); popMenu.setLabel("Popup"); @@ -58,6 +64,7 @@ public class NoticesReportViewDialog extends javax.swing.JDialog { setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("View Report"); + setLocationByPlatform(true); labelReportTitle.setFont(new java.awt.Font("Noto Sans", 1, 15)); // NOI18N labelReportTitle.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); @@ -73,21 +80,44 @@ public class NoticesReportViewDialog extends javax.swing.JDialog { )); jScrollPane2.setViewportView(tableReport); + checkFilterByClient.setText("Filter by Client"); + + buttonApply.setMnemonic('a'); + buttonApply.setText("Apply"); + buttonApply.setToolTipText(""); + buttonApply.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + buttonApplyActionPerformed(evt); + } + }); + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 679, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addComponent(labelReportTitle, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()) - .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 682, Short.MAX_VALUE) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(checkFilterByClient, javax.swing.GroupLayout.PREFERRED_SIZE, 196, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(comboClients, javax.swing.GroupLayout.PREFERRED_SIZE, 322, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(buttonApply, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(labelReportTitle, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 354, Short.MAX_VALUE)) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(checkFilterByClient) + .addComponent(comboClients, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(buttonApply)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 326, Short.MAX_VALUE)) ); pack(); @@ -96,9 +126,13 @@ public class NoticesReportViewDialog extends javax.swing.JDialog { private void menuExportCSVActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_menuExportCSVActionPerformed // TODO add your handling code here: JFileChooser chooser = new JFileChooser (); + FileFilter filter = new FileNameExtensionFilter("Comma Separated Values (.csv)", "csv"); + chooser.setFileFilter(filter); int rt = chooser.showSaveDialog(this); if (rt == JFileChooser.APPROVE_OPTION) { String filePath = chooser.getSelectedFile().getAbsolutePath(); + if (!filePath.endsWith(".csv")) + filePath = filePath.concat(".csv"); boolean ret = Utility.saveReportCSV (filePath, reportCols, reportData); if (ret == false) JOptionPane.showMessageDialog(this, ERROR_SAVING_REPORT); @@ -106,6 +140,24 @@ public class NoticesReportViewDialog extends javax.swing.JDialog { JOptionPane.showMessageDialog(this, REPORT_SAVED_SUCCESSFULLY); } }//GEN-LAST:event_menuExportCSVActionPerformed + + private void buttonApplyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonApplyActionPerformed + // TODO add your handling code here: + if (! checkFilterByClient.isSelected()) { + reportData = Utility.getPendingPaymentBills(-1); + if (reportData != null) + populateReport(); + } else { + DBItem db = (DBItem)comboClients.getSelectedItem(); + if (db == null) + return; + int selid = db.getKey(); + reportData = Utility.getPendingPaymentBills(selid); + if (reportData != null) + populateReport(); + } + + }//GEN-LAST:event_buttonApplyActionPerformed private static final String REPORT_SAVED_SUCCESSFULLY = "Report saved successfully"; private static final String ERROR_SAVING_REPORT = "Error saving report"; @@ -152,6 +204,9 @@ public class NoticesReportViewDialog extends javax.swing.JDialog { } // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton buttonApply; + private javax.swing.JCheckBox checkFilterByClient; + private javax.swing.JComboBox comboClients; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JLabel labelReportTitle; private javax.swing.JMenuItem menuExportCSV; @@ -174,11 +229,27 @@ public class NoticesReportViewDialog extends javax.swing.JDialog { tableReport.setComponentPopupMenu(popMenu); labelReportTitle.setText(title); - for (int i = 0; i < data.size(); i += columns.length) { - Object[] row = new Object[columns.length]; - for (int j = 0; j < columns.length; j ++) - row[j] = data.get(i+j); + populateReport (); + } + + private void populateReport () { + DefaultTableModel mdl = (DefaultTableModel)tableReport.getModel(); + mdl.setRowCount(0); + for (int i = 0; i < reportData.size(); i += reportCols.length) { + Object[] row = new Object[reportCols.length]; + for (int j = 0; j < reportCols.length; j ++) + row[j] = reportData.get(i+j); mdl.addRow (row); + + } + } + + private void populateClients() { + ArrayList clients = Utility.getClientsNameAndId(); + if (clients == null) return; + for (int i = 0; i < clients.size(); i += 2) { + comboClients.addItem (new DBItem ((int)clients.get(i), + (String)clients.get(i+1))); } } }