01: /*
02: * Copyright 2006-2007 Pentaho Corporation. All rights reserved.
03: * This software was developed by Pentaho Corporation and is provided under the terms
04: * of the Mozilla Public License, Version 1.1, or any later version. You may not use
05: * this file except in compliance with the license. If you need a copy of the license,
06: * please go to http://www.mozilla.org/MPL/MPL-1.1.txt.
07: *
08: * Software distributed under the Mozilla Public License is distributed on an "AS IS"
09: * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. Please refer to
10: * the license for the specific language governing your rights and limitations.
11: *
12: * Additional Contributor(s): Martin Schmid gridvision engineering GmbH
13: */
14: package org.pentaho.reportdesigner.crm.report.templateplugin;
15:
16: import org.jetbrains.annotations.NotNull;
17: import org.jfree.report.function.PageFunction;
18: import org.jfree.report.function.PageTotalFunction;
19: import org.pentaho.reportdesigner.crm.report.model.BandToplevelReportElement;
20: import org.pentaho.reportdesigner.crm.report.model.DateFieldReportElement;
21: import org.pentaho.reportdesigner.crm.report.model.MessageFieldReportElement;
22: import org.pentaho.reportdesigner.crm.report.model.ReportFunctionsElement;
23: import org.pentaho.reportdesigner.crm.report.model.TextReportElementHorizontalAlignment;
24: import org.pentaho.reportdesigner.crm.report.model.functions.ExpressionRegistry;
25: import org.pentaho.reportdesigner.crm.report.reportelementinfo.ReportElementInfoFactory;
26: import org.pentaho.reportdesigner.lib.client.util.DoubleDimension;
27:
28: import java.awt.*;
29: import java.awt.geom.Point2D;
30:
31: /**
32: * User: Martin
33: * Date: 28.02.2006
34: * Time: 19:24:01
35: */
36: public abstract class AbstractLayoutPlugin implements LayoutPlugin {
37: protected void composePageFooter(@NotNull
38: ReportFunctionsElement reportFunctions, double pageWidth, @NotNull
39: BandToplevelReportElement pageFooterBand) {
40: PageFunction pageFunctionJFree = new PageFunction();
41: //PageFunction pageFunction = (PageFunction) ReportElementInfoFactory.getInstance().getReportFunctionElementInfo(PageFunction.class.getName()).createReportElement();
42: pageFunctionJFree.setPageIncrement(1);
43: pageFunctionJFree.setStartPage(1);
44: pageFunctionJFree.setName("currentPage");//NON-NLS
45: reportFunctions.addChild(ExpressionRegistry.getInstance()
46: .createWrapperInstance(pageFunctionJFree));
47:
48: PageTotalFunction totalPagesFunctionJFree = new PageTotalFunction();
49: //PageTotalFunction totalPagesFunction = (PageTotalFunction) ReportElementInfoFactory.getInstance().getReportFunctionElementInfo(PageTotalFunction.class.getName()).createReportElement();
50: totalPagesFunctionJFree.setPageIncrement(1);
51: totalPagesFunctionJFree.setStartPage(1);
52: totalPagesFunctionJFree.setName("totalPages");//NON-NLS
53: reportFunctions.addChild(ExpressionRegistry.getInstance()
54: .createWrapperInstance(totalPagesFunctionJFree));
55:
56: MessageFieldReportElement pageInfoMessageField = ReportElementInfoFactory
57: .getInstance().getMessageFieldReportElementInfo()
58: .createReportElement();
59: pageInfoMessageField
60: .setFormatString("$(currentPage)/$(totalPages)");//NON-NLS
61: pageInfoMessageField.setPosition(new Point2D.Double(0, 0));
62: pageInfoMessageField.setMinimumSize(new DoubleDimension(
63: pageWidth, 16));
64: pageInfoMessageField
65: .setHorizontalAlignment(TextReportElementHorizontalAlignment.CENTER);
66: pageFooterBand.addChild(pageInfoMessageField);
67: }
68:
69: protected void composePageHeader(@NotNull
70: ReportFunctionsElement reportFunctions, double pageWidth, @NotNull
71: BandToplevelReportElement pageHeaderBand) {
72: DateFieldReportElement currentDateField = ReportElementInfoFactory
73: .getInstance().getDateFieldReportElementInfo()
74: .createReportElement();
75: currentDateField.setFieldName("report.date");//NON-NLS
76: currentDateField.setPosition(new Point2D.Double(0, 0));
77: currentDateField.setMinimumSize(new DoubleDimension(pageWidth,
78: 16));
79: currentDateField
80: .setHorizontalAlignment(TextReportElementHorizontalAlignment.RIGHT);
81: pageHeaderBand.addChild(currentDateField);
82: }
83:
84: @NotNull
85: protected Color getBackgroundColor(@NotNull
86: Color baseColor, int groupCount, int currentGroup) {
87: double colorOffset = 100. / (groupCount + 3);
88: int r = (int) (baseColor.getRed() + colorOffset * currentGroup);
89: int g = (int) (baseColor.getGreen() + colorOffset
90: * currentGroup);
91: int b = (int) (baseColor.getBlue() + colorOffset * currentGroup);
92:
93: r = Math.max(0, Math.min(255, r));
94: g = Math.max(0, Math.min(255, g));
95: b = Math.max(0, Math.min(255, b));
96:
97: return new Color(r, g, b);
98: }
99: }
|