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;
public NoticesReportViewDialog(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
+ populateClients ();
}
/**
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");
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);
));
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();
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);
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";
}
// Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JButton buttonApply;
+ private javax.swing.JCheckBox checkFilterByClient;
+ private javax.swing.JComboBox<DBItem> comboClients;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JLabel labelReportTitle;
private javax.swing.JMenuItem menuExportCSV;
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<Object> 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)));
}
}
}