1 /*
2 * JasperReports - Free Java Reporting Library.
3 * Copyright (C) 2001 - 2019 TIBCO Software Inc. All rights reserved.
4 * http://www.jaspersoft.com
5 *
6 * Unless you have purchased a commercial license agreement from Jaspersoft,
7 * the following license terms apply:
8 *
9 * This program is part of JasperReports.
10 *
11 * JasperReports is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU Lesser General Public License as published by
13 * the Free Software Foundation, either version 3 of the License, or
14 * (at your option) any later version.
15 *
16 * JasperReports is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU Lesser General Public License for more details.
20 *
21 * You should have received a copy of the GNU Lesser General Public License
22 * along with JasperReports. If not, see <http://www.gnu.org/licenses/>.
23 */
24 package net.sf.jasperreports.components.list;
25
26 import java.util.Iterator;
27 import java.util.List;
28
29 import net.sf.jasperreports.engine.JRChild;
30 import net.sf.jasperreports.engine.JRComponentElement;
31 import net.sf.jasperreports.engine.JRPrintElement;
32 import net.sf.jasperreports.engine.base.JRBasePrintFrame;
33 import net.sf.jasperreports.engine.component.ComponentDesignConverter;
34 import net.sf.jasperreports.engine.convert.ConvertVisitor;
35 import net.sf.jasperreports.engine.convert.ReportConverter;
36 import net.sf.jasperreports.engine.type.ModeEnum;
37
38 /**
39 * List preview converter.
40 *
41 * @author Lucian Chirita (lucianc@users.sourceforge.net)
42 */
43 public class ListDesignConverter implements ComponentDesignConverter
44 {
45
46 @Override
47 public JRPrintElement convert(ReportConverter reportConverter,
48 JRComponentElement element)
49 {
50 ListComponent list = (ListComponent) element.getComponent();
51 if (list == null || list.getContents() == null)
52 {
53 return null;
54 }
55
56 JRBasePrintFrame frame = new JRBasePrintFrame(
57 reportConverter.getDefaultStyleProvider());
58 reportConverter.copyBaseAttributes(element, frame);
59
60 ListContents contents = list.getContents();
61 if (contents.getHeight() > 0)
62 {
63 JRBasePrintFrame contentsFrame = new JRBasePrintFrame(
64 reportConverter.getDefaultStyleProvider());
65 contentsFrame.setUUID(element.getUUID());
66 contentsFrame.setX(0);
67 contentsFrame.setY(0);
68 contentsFrame.setWidth(element.getWidth());
69 contentsFrame.setHeight(contents.getHeight());
70 contentsFrame.setMode(ModeEnum.TRANSPARENT);
71
72 List<JRChild> children = contents.getChildren();
73 if (children != null)
74 {
75 ConvertVisitor contentsVisitor = new ConvertVisitor(reportConverter,
76 contentsFrame);
77 for (Iterator<JRChild> it = children.iterator(); it
78 .hasNext();)
79 {
80 JRChild child = it.next();
81 child.visit(contentsVisitor);
82 }
83 }
84
85 frame.addElement(contentsFrame);
86
87 /*
88 Integer width = contents.getWidth();
89 int contentsWidth = width == null ? element.getWidth()
90 : width;
91
92 if (contents.getHeight() < element.getHeight()
93 || contentsWidth < element.getWidth())
94 {
95 // add a grey rectangle to highlight the contents height
96 JRBasePrintImage image = new JRBasePrintImage(
97 reportConverter.getDefaultStyleProvider());
98 image.setX(0);
99 image.setWidth(element.getWidth());
100 image.setY(0);
101 image.setHeight(element.getHeight());
102 image.setMode(ModeEnum.TRANSPARENT);
103
104 // clip out the list contents area
105 Area clip = new Area(new Rectangle(
106 0, 0, element.getWidth(), element.getHeight()));
107 clip.subtract(new Area(new Rectangle(
108 0, 0, contentsWidth, contents.getHeight())));
109
110 image.setRenderer(new UnusedSpaceImageRenderer(clip));
111 frame.addElement(image);
112 }
113 */
114 }
115
116 return frame;
117 }
118
119 }
120