/*
* ReportPreview.java
*
* Created on August 12, 2008, 11:06 AM
*/
package cli_fmw.report.implemenatation;
import cli_fmw.main.MainWindow;
import java.awt.Dialog;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Toolkit;
import java.awt.Window;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JRViewer;
import net.sf.jasperreports.view.JasperViewer;
/**
* Модальный диалог отрисовывающий отчет для предпросмотра
* @author finder
*/
public class ReportPreview extends javax.swing.JDialog {
static final long serialVersionUID = 564984125464521894L;
protected JRViewer viewer;
/** Creates new form ReportPreview */
private ReportPreview(java.awt.Frame parent, boolean modal, JasperPrint report) {
super(parent, modal);
initComponents();
setLocale(JasperFormReporter.RUS_LOCALE);
viewer = new JRViewer(report, JasperFormReporter.RUS_LOCALE);
add(viewer);
viewer.setZoomRatio(1);
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension screenSize = toolkit.getScreenSize();
int screenResolution = toolkit.getScreenResolution();
float zoom = ((float) screenResolution) / JRViewer.REPORT_RESOLUTION;
int height = (int) (report.getPageHeight() + 48 * zoom);
if (height > screenSize.getHeight())
{
height = (int) screenSize.getHeight();
}
int width = (int) (report.getPageWidth() + 24 * zoom);
if (width > screenSize.getWidth())
{
width = (int) screenSize.getWidth();
}
java.awt.Dimension dimension = new java.awt.Dimension(width, height);
setSize(dimension);
setLocation((screenSize.width-width)/2,(screenSize.height-height)/2);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Просмотр перед печатью");
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosed(java.awt.event.WindowEvent evt) {
formWindowClosed(evt);
}
public void windowClosing(java.awt.event.WindowEvent evt) {
formWindowClosing(evt);
}
});
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-764)/2, (screenSize.height-673)/2, 764, 673);
}// </editor-fold>//GEN-END:initComponents
private void formWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosed
}//GEN-LAST:event_formWindowClosed
private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
viewer.clear();
viewer = null;
getContentPane().removeAll();
dispose();
}//GEN-LAST:event_formWindowClosing
/**
* Создает новый модальный диалог, в котором будет отображен отчет для
* предварительного просмотра, такжа в нем есть кнопки распичатки и сохранения на диск.
* @param report - заполненый отчет для предпросмотра/распечатки
*/
public static void showReport(final JasperPrint report){
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
Window[] windows = Window.getWindows();
for (Window window : windows) {
if (window instanceof Dialog){
Dialog dlg = (Dialog) window;
if (dlg.isModal() && dlg.isVisible()){
ReportPreview preview = new ReportPreview(MainWindow.mainWindow, true, report);
preview.setVisible(true);
preview.toFront();
return;
}
}
}
JasperViewer.viewReport(report, false, JasperReporter.RUS_LOCALE);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
// End of variables declaration//GEN-END:variables
}