KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > pentaho > plugin > jfreereport > outputs > JFreeReportPreviewSwingComponent


1 /*
2  * Copyright 2006 Pentaho Corporation. All rights reserved.
3  * This software was developed by Pentaho Corporation and is provided under the terms
4  * of the Mozilla Public License, Version 1.1, or any later version. You may not use
5  * this file except in compliance with the license. If you need a copy of the license,
6  * please go to http://www.mozilla.org/MPL/MPL-1.1.txt. The Original Code is the Pentaho
7  * BI Platform. The Initial Developer is Pentaho Corporation.
8  *
9  * Software distributed under the Mozilla Public License is distributed on an "AS IS"
10  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. Please refer to
11  * the license for the specific language governing your rights and limitations.
12  */

13 package org.pentaho.plugin.jfreereport.outputs;
14
15 import java.awt.Dialog JavaDoc;
16 import java.awt.Frame JavaDoc;
17 import java.awt.event.WindowAdapter JavaDoc;
18 import java.awt.event.WindowEvent JavaDoc;
19
20 import org.jfree.report.JFreeReport;
21 import org.jfree.report.ReportProcessingException;
22 import org.jfree.report.modules.gui.base.PreviewDialog;
23 import org.jfree.report.modules.gui.base.ReportControler;
24 import org.jfree.report.util.CloseableTableModel;
25 import org.jfree.ui.RefineryUtilities;
26
27 /**
28  * Creation-Date: 07.07.2006, 14:06:43
29  *
30  * @author Thomas Morgner
31  */

32 public class JFreeReportPreviewSwingComponent extends
33     AbstractGenerateContentComponent {
34   private static final long serialVersionUID = -8158403113060631980L;
35
36   private static class CloseReportListener extends WindowAdapter JavaDoc {
37     private CloseableTableModel reportData;
38
39     public CloseReportListener(CloseableTableModel reportData) {
40       if (reportData == null) {
41         throw new NullPointerException JavaDoc();
42       }
43       this.reportData = reportData;
44     }
45
46     /**
47      * Invoked when a window has been closed.
48      */

49     public void windowClosed(WindowEvent JavaDoc e) {
50       this.reportData.close();
51     }
52   }
53
54   public JFreeReportPreviewSwingComponent() {
55   }
56
57   public void done() {
58     // dont close the tablemodel, this is done in the execute-method.
59
}
60
61   protected boolean performExport(final JFreeReport report) {
62     try {
63       PreviewDialog dialog = createDialog(report);
64
65       final boolean progressBar = getInputBooleanValue(REPORTSWING_PROGRESSBAR,
66           true);
67       final boolean progressDialog = getInputBooleanValue(
68           REPORTSWING_PROGRESSDIALOG, true);
69
70       dialog.getBase().setProgressDialogEnabled(progressBar);
71       dialog.getBase().setProgressDialogEnabled(progressDialog);
72       final ReportControler reportControler = getReportControler();
73       if (reportControler != null) {
74         dialog.getBase().setReportControler(reportControler);
75       }
76       dialog.pack();
77       if (dialog.getParent() != null) {
78         RefineryUtilities.centerDialogInParent(dialog);
79       } else {
80         RefineryUtilities.centerFrameOnScreen(dialog);
81       }
82
83       if (dialog.isModal() == false
84           && (report.getData() instanceof CloseableTableModel)) {
85         dialog.addWindowListener(new CloseReportListener(
86             (CloseableTableModel) report.getData()));
87       }
88       dialog.setVisible(true);
89
90       if (dialog.isModal() && (report.getData() instanceof CloseableTableModel)) {
91         CloseableTableModel ctm = (CloseableTableModel) report.getData();
92         ctm.close();
93       }
94
95       return true;
96     } catch (ReportProcessingException e) {
97       return false;
98     }
99   }
100
101   private ReportControler getReportControler() {
102     if (isDefinedInput(REPORTSWING_REPORTCONTROLLER)) {
103       Object JavaDoc controler = getInputValue(REPORTSWING_REPORTCONTROLLER);
104       if (controler instanceof ReportControler) {
105         return (ReportControler) controler;
106       }
107     }
108     return null;
109   }
110
111   private PreviewDialog createDialog(final JFreeReport report)
112       throws ReportProcessingException {
113     final boolean modal = getInputBooleanValue(REPORTSWING_MODAL, true);
114
115     if (isDefinedInput(REPORTSWING_PARENTDIALOG)) {
116       Object JavaDoc parent = getInputValue(REPORTSWING_PARENTDIALOG);
117       if (parent instanceof Dialog JavaDoc) {
118         return new PreviewDialog(report, (Dialog JavaDoc) parent, modal);
119       } else if (parent instanceof Frame JavaDoc) {
120         return new PreviewDialog(report, (Frame JavaDoc) parent, modal);
121       }
122     }
123
124     final PreviewDialog previewDialog = new PreviewDialog(report);
125     previewDialog.setModal(modal);
126     return previewDialog;
127   }
128 }
129
Popular Tags