*/
package habeas;
+import java.awt.Component;
import java.util.ArrayList;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.table.DefaultTableModel;
-import javax.swing.table.TableModel;
+import javax.swing.table.TableCellRenderer;
+import javax.swing.table.TableColumn;
+import javax.swing.table.TableColumnModel;
/**
*
*/
public class NoticesReportViewDialog extends javax.swing.JDialog {
+ private int currentReport;
private String reportTitle;
private String[] reportCols;
private ArrayList<Object> reportData;
popMenu = new javax.swing.JPopupMenu();
menuExportCSV = new javax.swing.JMenuItem();
+ menuExportHTML = new javax.swing.JMenuItem();
labelReportTitle = new javax.swing.JLabel();
jScrollPane2 = new javax.swing.JScrollPane();
tableReport = new javax.swing.JTable();
});
popMenu.add(menuExportCSV);
+ menuExportHTML.setMnemonic('H');
+ menuExportHTML.setText("Export as HTML...");
+ menuExportHTML.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ menuExportHTMLActionPerformed(evt);
+ }
+ });
+ popMenu.add(menuExportHTML);
+
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("View Report");
setLocationByPlatform(true);
}
));
+ tableReport.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
+ tableReport.setCellSelectionEnabled(true);
+ tableReport.setComponentPopupMenu(popMenu);
jScrollPane2.setViewportView(tableReport);
checkFilterByClient.setText("Filter by Client");
.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)
+ .addComponent(comboClients, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(buttonApply, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addComponent(buttonApply, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
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)
+ reportData = Utility.getReportData(currentReport, -1);
+
+ if (reportData != null)
populateReport();
} else {
DBItem db = (DBItem)comboClients.getSelectedItem();
if (db == null)
return;
int selid = db.getKey();
- reportData = Utility.getPendingPaymentBills(selid);
+ reportData = Utility.getReportData(currentReport, selid);
if (reportData != null)
populateReport();
}
}//GEN-LAST:event_buttonApplyActionPerformed
+
+ private void menuExportHTMLActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_menuExportHTMLActionPerformed
+ // TODO add your handling code here:
+ JFileChooser chooser = new JFileChooser ();
+ FileNameExtensionFilter flt = new FileNameExtensionFilter("Hypertext Markup File (.html)", "html");
+ chooser.setFileFilter(flt);
+ int rt = chooser.showSaveDialog(this);
+ if (rt == JFileChooser.APPROVE_OPTION) {
+ String filepath = chooser.getSelectedFile().getAbsolutePath();
+ if (! (filepath.endsWith(".html") || filepath.endsWith(".htm")) )
+ filepath = filepath.concat(".html");
+ boolean ret= Utility.saveReportHTML (filepath, reportTitle, reportCols, reportData);
+ if (ret == false)
+ JOptionPane.showMessageDialog (this, ERROR_SAVING_REPORT);
+ else
+ JOptionPane.showMessageDialog(this, REPORT_SAVED_SUCCESSFULLY);
+
+ }
+ }//GEN-LAST:event_menuExportHTMLActionPerformed
private static final String REPORT_SAVED_SUCCESSFULLY = "Report saved successfully";
private static final String ERROR_SAVING_REPORT = "Error saving report";
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JLabel labelReportTitle;
private javax.swing.JMenuItem menuExportCSV;
+ private javax.swing.JMenuItem menuExportHTML;
private javax.swing.JPopupMenu popMenu;
private javax.swing.JTable tableReport;
// End of variables declaration//GEN-END:variables
- public void setupReportTable(String title, String[] columns,
+ public void setupReportTable(int reportNum, String title, String[] columns,
ArrayList<Object> data) {
+ currentReport = reportNum;
reportTitle = title;
reportCols = columns;
reportData = data;
}
};
tableReport.setModel(mdl);
- tableReport.setComponentPopupMenu(popMenu);
labelReportTitle.setText(title);
populateReport ();
for (int j = 0; j < reportCols.length; j ++)
row[j] = reportData.get(i+j);
mdl.addRow (row);
-
}
+ // resize the column widths to content size
+ for (int i = 0; i < tableReport.getColumnCount(); i ++) {
+
+ TableColumn clm = tableReport.getColumnModel().getColumn (i);
+ int preferredWidth = clm.getMinWidth()+10;
+ int maxWidth = 300;
+ int minWidth = 100;
+ for (int r = 0; r < tableReport.getRowCount(); r ++) {
+ TableCellRenderer rend = tableReport.getCellRenderer(r, i);
+ Component c = tableReport.prepareRenderer(rend, r, i);
+ int width = c.getPreferredSize().width + tableReport.getIntercellSpacing().width;
+ preferredWidth = Math.max (preferredWidth, width+10);
+ if (preferredWidth >= maxWidth)
+ {
+ preferredWidth = maxWidth;
+ break;
+ }
+ }
+ clm.setPreferredWidth(Math.max(minWidth, preferredWidth));
+ }
}
private void populateClients() {