001: package com.calipso.reportgenerator.userinterface;
002:
003: /**
004: * Clase encargada de visualizar un reporte con opcion de impresion y
005: * generacion de salidas a archivos de varios formatos distintos
006: */
007:
008: import com.calipso.reportgenerator.userinterface.ReportFrame;
009: import com.calipso.reportgenerator.common.*;
010: import com.calipso.reportgenerator.reportdefinitions.ReportView;
011: import com.calipso.reportgenerator.common.InfoException;
012:
013: import javax.swing.*;
014: import java.io.IOException;
015: import java.awt.*;
016:
017: import net.sf.jasperreports.engine.*;
018: import net.sf.jasperreports.view.JRViewer;
019:
020: public class ReportUI extends ReportFrame {
021:
022: private ReportGeneratorConfiguration reportGeneratorConfiguration;
023: private JFrame frame;
024: private ReportView reportView;
025: private ReportSpec reportSpec;
026:
027: /**
028: * Inicializa una instancia de ReportUI
029: * @param reportResult <<code>ReportResult</code>> necesario para la creacion del reporte
030: * @param reportManager <<code>ReportManager</code>> necesario para la creacion del reporte
031: * @throws InfoException
032: * @throws IOException
033: */
034: public ReportUI(ReportResult reportResult, ReportSpec reportSpec,
035: IReportManager reportManager,
036: ReportGeneratorConfiguration reportGeneratorConfiguration,
037: ReportView view, Dimension dim) throws InfoException,
038: IOException {
039: super .reportResult = reportResult;
040: super .reportManager = reportManager;
041: this .reportGeneratorConfiguration = reportGeneratorConfiguration;
042: this .reportView = view;
043: this .reportSpec = reportSpec;
044: try {
045: initialize(dim);
046: } catch (Exception e) {
047: if (reportResult != null) {
048: reportResult.resetReportTableModel();
049: }
050: ShowExceptionMessageDialog.initExceptionDialogMessage(
051: LanguageTraslator.traslate("312"), e);
052: }
053: }
054:
055: private void initialize(Dimension dim) throws JRException,
056: InfoException {
057: ReportLayoutBuilder builder = new ReportLayoutBuilder(
058: reportGeneratorConfiguration, reportResult, reportSpec);
059: IJasperDefinition design = builder
060: .getJasperDefinition(reportView);
061: JasperReportOrientationUI orientationUI = null;
062: boolean isLandscape = false;
063: if (!ReportLayoutBuilder.isExternal(design)) {
064: orientationUI = new JasperReportOrientationUI(new JFrame(),
065: true, reportGeneratorConfiguration);
066: orientationUI.show();
067: isLandscape = orientationUI.isLandscape();
068: }
069: if (ReportLayoutBuilder.isExternal(design)
070: || !orientationUI.getHasCanceled()) {
071: JasperPrint print = builder.getJasperPrint(design,
072: isLandscape);
073: JRViewer jrViewer = new JRViewer(print);
074: jrViewer.setPreferredSize(dim);
075: JasperReportUI jasperReportUI = new JasperReportUI(
076: jrViewer, print);
077: jasperReportUI.pack();
078: frame = jasperReportUI;
079: Image icon = reportGeneratorConfiguration.getImage("icon");
080: if (icon != null) {
081: frame.setIconImage(icon);
082: }
083: } else {
084: this .frame = null;
085: }
086: reportResult.resetReportTableModel();
087: }
088:
089: /**
090: * Visualiza el reporte
091: */
092: public void show() {
093: if (getFrame() != null) {
094: getFrame().setVisible(true);
095: getFrame().requestFocus();
096: getFrame().pack();
097: getFrame().setLocation(getDefaultLocation());
098: }
099: }
100:
101: private Point getDefaultLocation() {
102: Point ownerLocation = getFrame().getLocation();
103: Dimension ownerSize = getFrame().getSize();
104: Dimension size = getFrame().getSize();
105:
106: int x = ownerLocation.x + ownerSize.width / 2 - size.width / 2;
107: int y = ownerLocation.y + ownerSize.height / 2 - size.height
108: / 2;
109: return new Point(x, y);
110: }
111:
112: /**
113: * Devuelve el Frame correspondiente al Reporte
114: * @return frame correspondiente al Reporte
115: */
116: public JFrame getFrame() {
117: return frame;
118: }
119:
120: }
|