/* * JasperReports - Free Java Reporting Library. * Copyright (C) 2001 - 2009 Jaspersoft Corporation. All rights reserved. * http://www.jaspersoft.com * * Unless you have purchased a commercial license agreement from Jaspersoft, * the following license terms apply: * * This program is part of JasperReports. * * JasperReports is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * JasperReports is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with JasperReports. If not, see <http://www.gnu.org/licenses/>. */ package net.sf.jasperreports.engine.design; import java.awt.Color; import java.io.IOException; import java.io.ObjectInputStream; import java.util.ArrayList; import java.util.List; import net.sf.jasperreports.engine.JRBox; import net.sf.jasperreports.engine.JRChild; import net.sf.jasperreports.engine.JRConstants; import net.sf.jasperreports.engine.JRDefaultStyleProvider; import net.sf.jasperreports.engine.JRElement; import net.sf.jasperreports.engine.JRElementGroup; import net.sf.jasperreports.engine.JRExpressionCollector; import net.sf.jasperreports.engine.JRFrame; import net.sf.jasperreports.engine.JRLineBox; import net.sf.jasperreports.engine.JRVisitor; import net.sf.jasperreports.engine.base.JRBaseElementGroup; import net.sf.jasperreports.engine.base.JRBaseLineBox; import net.sf.jasperreports.engine.type.ModeEnum; import net.sf.jasperreports.engine.util.JRBoxUtil; import net.sf.jasperreports.engine.util.JRPenUtil; import net.sf.jasperreports.engine.util.JRStyleResolver; import net.sf.jasperreports.engine.util.LineBoxWrapper; /** * Implementation of {@link net.sf.jasperreports.engine.JRFrame JRFrame} to be used at design time. * * @author Lucian Chirita (lucianc@users.sourceforge.net) * @version $Id: JRDesignFrame.java 3715 2010-04-08 18:08:49Z teodord $ */ public class JRDesignFrame extends JRDesignElement implements JRFrame { private static final long serialVersionUID = JRConstants.SERIAL_VERSION_UID; /* * Frame properties */ public static final String PROPERTY_CHILDREN = "children"; private List children; private JRLineBox lineBox; /** * Creates a new frame object. * * @param defaultStyleProvider default style provider instance */ public JRDesignFrame(JRDefaultStyleProvider defaultStyleProvider) { super(defaultStyleProvider); children = new ArrayList(); lineBox = new JRBaseLineBox(this); } /** * Creates a new frame object. */ public JRDesignFrame() { this(null); } public void collectExpressions(JRExpressionCollector collector) { collector.collect(this); } /** * */ public void visit(JRVisitor visitor) { visitor.visitFrame(this); } public JRElement[] getElements() { return JRBaseElementGroup.getElements(children); } /** * Adds a sub element to the frame. * * @param element the element to add */ public void addElement(JRElement element) { if (element instanceof JRDesignElement) { ((JRDesignElement) element).setElementGroup(this); } children.add(element); getEventSupport().fireCollectionElementAddedEvent(PROPERTY_CHILDREN, element, children.size() - 1); } /** * Removes a sub element from the frame. * * @param element the element to remove * @return <tt>true</tt> if this frame contained the specified element */ public boolean removeElement(JRElement element) { if (element instanceof JRDesignElement) { ((JRDesignElement) element).setElementGroup(null); } int idx = children.indexOf(element); if (idx >= 0) { children.remove(idx); getEventSupport().fireCollectionElementRemovedEvent(PROPERTY_CHILDREN, element, idx); return true; } return false; } /** * Adds an element group to the frame. * * @param group the element group to add */ public void addElementGroup(JRElementGroup group) { if (group instanceof JRDesignElementGroup) { ((JRDesignElementGroup) group).setElementGroup(this); } children.add(group); getEventSupport().fireCollectionElementAddedEvent(PROPERTY_CHILDREN, group, children.size() - 1); } /** * Removes a group element from the frame. * * @param group the group to remove * @return <tt>true</tt> if this frame contained the specified group */ public boolean removeElementGroup(JRElementGroup group) { if (group instanceof JRDesignElementGroup) { ((JRDesignElementGroup) group).setElementGroup(null); } int idx = children.indexOf(group); if (idx >= 0) { children.remove(idx); getEventSupport().fireCollectionElementRemovedEvent(PROPERTY_CHILDREN, group, idx); return true; } return false; } public List getChildren() { return children; } public JRElement getElementByKey(String elementKey) { return JRBaseElementGroup.getElementByKey(getElements(), elementKey); } public ModeEnum getModeValue() { return JRStyleResolver.getMode(this, ModeEnum.TRANSPARENT); } /** * @deprecated Replaced by {@link #getLineBox()} */ public JRBox getBox() { return new LineBoxWrapper(getLineBox()); } /** * */ public JRLineBox getLineBox() { return lineBox; } /** * @deprecated Replaced by {@link #copyBox(JRLineBox)} */ public void setBox(JRBox box) { JRBoxUtil.setBoxToLineBox(box, lineBox); } /** * */ public void copyBox(JRLineBox lineBox) { this.lineBox = lineBox.clone(this); } /** * @deprecated Replaced by {@link #getBox()} */ public byte getBorder() { return JRPenUtil.getPenFromLinePen(lineBox.getPen()); } /** * @deprecated Replaced by {@link #getBox()} */ public Byte getOwnBorder() { return JRPenUtil.getOwnPenFromLinePen(lineBox.getPen()); } /** * @deprecated Replaced by {@link #getBox()} */ public void setBorder(byte border) { JRPenUtil.setLinePenFromPen(border, lineBox.getPen()); } /** * @deprecated Replaced by {@link #getBox()} */ public void setBorder(Byte border) { JRPenUtil.setLinePenFromPen(border, lineBox.getPen()); } /** * @deprecated Replaced by {@link #getBox()} */ public Color getBorderColor() { return lineBox.getPen().getLineColor(); } /** * @deprecated Replaced by {@link #getBox()} */ public Color getOwnBorderColor() { return lineBox.getPen().getOwnLineColor(); } /** * @deprecated Replaced by {@link #getBox()} */ public void setBorderColor(Color borderColor) { lineBox.getPen().setLineColor(borderColor); } /** * @deprecated Replaced by {@link #getBox()} */ public int getPadding() { return lineBox.getPadding().intValue(); } /** * @deprecated Replaced by {@link #getBox()} */ public Integer getOwnPadding() { return lineBox.getOwnPadding(); } /** * @deprecated Replaced by {@link #getBox()} */ public void setPadding(int padding) { lineBox.setPadding(padding); } /** * @deprecated Replaced by {@link #getBox()} */ public void setPadding(Integer padding) { lineBox.setPadding(padding); } /** * @deprecated Replaced by {@link #getBox()} */ public byte getTopBorder() { return JRPenUtil.getPenFromLinePen(lineBox.getTopPen()); } /** * @deprecated Replaced by {@link #getBox()} */ public Byte getOwnTopBorder() { return JRPenUtil.getOwnPenFromLinePen(lineBox.getTopPen()); } /** * @deprecated Replaced by {@link #getBox()} */ public void setTopBorder(byte topBorder) { JRPenUtil.setLinePenFromPen(topBorder, lineBox.getTopPen()); } /** * @deprecated Replaced by {@link #getBox()} */ public void setTopBorder(Byte topBorder) { JRPenUtil.setLinePenFromPen(topBorder, lineBox.getTopPen()); } /** * @deprecated Replaced by {@link #getBox()} */ public Color getTopBorderColor() { return lineBox.getTopPen().getLineColor(); } /** * @deprecated Replaced by {@link #getBox()} */ public Color getOwnTopBorderColor() { return lineBox.getTopPen().getOwnLineColor(); } /** * @deprecated Replaced by {@link #getBox()} */ public void setTopBorderColor(Color topBorderColor) { lineBox.getTopPen().setLineColor(topBorderColor); } /** * @deprecated Replaced by {@link #getBox()} */ public int getTopPadding() { return lineBox.getTopPadding().intValue(); } /** * @deprecated Replaced by {@link #getBox()} */ public Integer getOwnTopPadding() { return lineBox.getOwnTopPadding(); } /** * @deprecated Replaced by {@link #getBox()} */ public void setTopPadding(int topPadding) { lineBox.setTopPadding(topPadding); } /** * @deprecated Replaced by {@link #getBox()} */ public void setTopPadding(Integer topPadding) { lineBox.setTopPadding(topPadding); } /** * @deprecated Replaced by {@link #getBox()} */ public byte getLeftBorder() { return JRPenUtil.getPenFromLinePen(lineBox.getLeftPen()); } /** * @deprecated Replaced by {@link #getBox()} */ public Byte getOwnLeftBorder() { return JRPenUtil.getOwnPenFromLinePen(lineBox.getLeftPen()); } /** * @deprecated Replaced by {@link #getBox()} */ public void setLeftBorder(byte leftBorder) { JRPenUtil.setLinePenFromPen(leftBorder, lineBox.getLeftPen()); } /** * @deprecated Replaced by {@link #getBox()} */ public void setLeftBorder(Byte leftBorder) { JRPenUtil.setLinePenFromPen(leftBorder, lineBox.getLeftPen()); } /** * @deprecated Replaced by {@link #getBox()} */ public Color getLeftBorderColor() { return lineBox.getLeftPen().getLineColor(); } /** * @deprecated Replaced by {@link #getBox()} */ public Color getOwnLeftBorderColor() { return lineBox.getLeftPen().getOwnLineColor(); } /** * @deprecated Replaced by {@link #getBox()} */ public void setLeftBorderColor(Color leftBorderColor) { lineBox.getLeftPen().setLineColor(leftBorderColor); } /** * @deprecated Replaced by {@link #getBox()} */ public int getLeftPadding() { return lineBox.getLeftPadding().intValue(); } /** * @deprecated Replaced by {@link #getBox()} */ public Integer getOwnLeftPadding() { return lineBox.getOwnLeftPadding(); } /** * @deprecated Replaced by {@link #getBox()} */ public void setLeftPadding(int leftPadding) { lineBox.setLeftPadding(leftPadding); } /** * @deprecated Replaced by {@link #getBox()} */ public void setLeftPadding(Integer leftPadding) { lineBox.setLeftPadding(leftPadding); } /** * @deprecated Replaced by {@link #getBox()} */ public byte getBottomBorder() { return JRPenUtil.getPenFromLinePen(lineBox.getBottomPen()); } /** * @deprecated Replaced by {@link #getBox()} */ public Byte getOwnBottomBorder() { return JRPenUtil.getOwnPenFromLinePen(lineBox.getBottomPen()); } /** * @deprecated Replaced by {@link #getBox()} */ public void setBottomBorder(byte bottomBorder) { JRPenUtil.setLinePenFromPen(bottomBorder, lineBox.getBottomPen()); } /** * @deprecated Replaced by {@link #getBox()} */ public void setBottomBorder(Byte bottomBorder) { JRPenUtil.setLinePenFromPen(bottomBorder, lineBox.getBottomPen()); } /** * @deprecated Replaced by {@link #getBox()} */ public Color getBottomBorderColor() { return lineBox.getBottomPen().getLineColor(); } /** * @deprecated Replaced by {@link #getBox()} */ public Color getOwnBottomBorderColor() { return lineBox.getBottomPen().getOwnLineColor(); } /** * @deprecated Replaced by {@link #getBox()} */ public void setBottomBorderColor(Color bottomBorderColor) { lineBox.getBottomPen().setLineColor(bottomBorderColor); } /** * @deprecated Replaced by {@link #getBox()} */ public int getBottomPadding() { return lineBox.getBottomPadding().intValue(); } /** * @deprecated Replaced by {@link #getBox()} */ public Integer getOwnBottomPadding() { return lineBox.getOwnBottomPadding(); } /** * @deprecated Replaced by {@link #getBox()} */ public void setBottomPadding(int bottomPadding) { lineBox.setBottomPadding(bottomPadding); } /** * @deprecated Replaced by {@link #getBox()} */ public void setBottomPadding(Integer bottomPadding) { lineBox.setBottomPadding(bottomPadding); } /** * @deprecated Replaced by {@link #getBox()} */ public byte getRightBorder() { return JRPenUtil.getPenFromLinePen(lineBox.getRightPen()); } /** * @deprecated Replaced by {@link #getBox()} */ public Byte getOwnRightBorder() { return JRPenUtil.getOwnPenFromLinePen(lineBox.getRightPen()); } /** * @deprecated Replaced by {@link #getBox()} */ public void setRightBorder(byte rightBorder) { JRPenUtil.setLinePenFromPen(rightBorder, lineBox.getRightPen()); } /** * @deprecated Replaced by {@link #getBox()} */ public void setRightBorder(Byte rightBorder) { JRPenUtil.setLinePenFromPen(rightBorder, lineBox.getRightPen()); } /** * @deprecated Replaced by {@link #getBox()} */ public Color getRightBorderColor() { return lineBox.getRightPen().getLineColor(); } /** * @deprecated Replaced by {@link #getBox()} */ public Color getOwnRightBorderColor() { return lineBox.getRightPen().getOwnLineColor(); } /** * @deprecated Replaced by {@link #getBox()} */ public void setRightBorderColor(Color rightBorderColor) { lineBox.getRightPen().setLineColor(rightBorderColor); } /** * @deprecated Replaced by {@link #getBox()} */ public int getRightPadding() { return lineBox.getRightPadding().intValue(); } /** * @deprecated Replaced by {@link #getBox()} */ public Integer getOwnRightPadding() { return lineBox.getOwnRightPadding(); } /** * @deprecated Replaced by {@link #getBox()} */ public void setRightPadding(int rightPadding) { lineBox.setRightPadding(rightPadding); } /** * @deprecated Replaced by {@link #getBox()} */ public void setRightPadding(Integer rightPadding) { lineBox.setRightPadding(rightPadding); } /** * */ public Color getDefaultLineColor() { return getForecolor(); } /** * */ public Object clone() { JRDesignFrame clone = (JRDesignFrame)super.clone(); if (children != null) { clone.children = new ArrayList(children.size()); for(int i = 0; i < children.size(); i++) { clone.children.add(((JRChild)children.get(i)).clone(clone)); } } clone.lineBox = lineBox.clone(clone); return clone; } /* * These fields are only for serialization backward compatibility. */ /** * @deprecated */ private Byte border = null; /** * @deprecated */ private Byte topBorder = null; /** * @deprecated */ private Byte leftBorder = null; /** * @deprecated */ private Byte bottomBorder = null; /** * @deprecated */ private Byte rightBorder = null; /** * @deprecated */ private Color borderColor = null; /** * @deprecated */ private Color topBorderColor = null; /** * @deprecated */ private Color leftBorderColor = null; /** * @deprecated */ private Color bottomBorderColor = null; /** * @deprecated */ private Color rightBorderColor = null; /** * @deprecated */ private Integer padding = null; /** * @deprecated */ private Integer topPadding = null; /** * @deprecated */ private Integer leftPadding = null; /** * @deprecated */ private Integer bottomPadding = null; /** * @deprecated */ private Integer rightPadding = null; private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { in.defaultReadObject(); if (lineBox == null) { lineBox = new JRBaseLineBox(this); JRBoxUtil.setToBox( border, topBorder, leftBorder, bottomBorder, rightBorder, borderColor, topBorderColor, leftBorderColor, bottomBorderColor, rightBorderColor, padding, topPadding, leftPadding, bottomPadding, rightPadding, lineBox ); border = null; topBorder = null; leftBorder = null; bottomBorder = null; rightBorder = null; borderColor = null; topBorderColor = null; leftBorderColor = null; bottomBorderColor = null; rightBorderColor = null; padding = null; topPadding = null; leftPadding = null; bottomPadding = null; rightPadding = null; } } }