/* * 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.export.oasis; import java.io.IOException; import java.io.Writer; import net.sf.jasperreports.engine.JRPrintText; import net.sf.jasperreports.engine.type.HorizontalAlignEnum; import net.sf.jasperreports.engine.type.RotationEnum; import net.sf.jasperreports.engine.type.RunDirectionEnum; import net.sf.jasperreports.engine.type.VerticalAlignEnum; /** * @author Teodor Danciu (teodord@users.sourceforge.net) * @version $Id: ParagraphStyle.java 3496 2010-03-03 11:39:03Z teodord $ */ public class ParagraphStyle extends Style { /** * */ protected static final String HORIZONTAL_ALIGN_LEFT = "start"; protected static final String HORIZONTAL_ALIGN_RIGHT = "end"; protected static final String HORIZONTAL_ALIGN_CENTER = "center"; protected static final String HORIZONTAL_ALIGN_JUSTIFY = "justified"; /** * */ private static final String VERTICAL_ALIGN_TOP = "top"; private static final String VERTICAL_ALIGN_MIDDLE = "middle"; private static final String VERTICAL_ALIGN_BOTTOM = "bottom"; /** * */ protected static final String ROTATION_ALIGN_NONE = "none"; protected static final String ROTATION_ALIGN_TOP = "top"; protected static final String ROTATION_ALIGN_CENTER = "center"; protected static final String ROTATION_ALIGN_BOTTOM = "bottom"; private String verticalAlignment = null; private String horizontalAlignment = null; private String runDirection = null; private String textRotation = "0"; /** * */ public ParagraphStyle(Writer styleWriter, JRPrintText text) { super(styleWriter); horizontalAlignment = getHorizontalAlignment(text.getHorizontalAlignmentValue(), text.getVerticalAlignmentValue(), text.getRotationValue()); verticalAlignment = getVerticalAlignment(text.getHorizontalAlignmentValue(), text.getVerticalAlignmentValue(), text.getRotationValue()); switch(text.getRotationValue()) { case LEFT: { textRotation = "90"; break; } case RIGHT: { textRotation = "270"; break; } case UPSIDE_DOWN://FIXMEODT possible? case NONE: default: { textRotation = "0"; } } runDirection = null; if (text.getRunDirectionValue() == RunDirectionEnum.RTL) { runDirection = "rl"; } } /** * */ public static String getVerticalAlignment( HorizontalAlignEnum horizontalAlignment, VerticalAlignEnum verticalAlignment, RotationEnum rotation ) { switch(rotation) { case LEFT: { switch (horizontalAlignment) { case RIGHT : return VERTICAL_ALIGN_TOP; case CENTER : return VERTICAL_ALIGN_MIDDLE; case JUSTIFIED : return HORIZONTAL_ALIGN_JUSTIFY;//FIXMEODT ????????????????? case LEFT : default : return VERTICAL_ALIGN_BOTTOM; } } case RIGHT: { switch (horizontalAlignment) { case RIGHT : return VERTICAL_ALIGN_BOTTOM; case CENTER : return VERTICAL_ALIGN_MIDDLE; case JUSTIFIED : return HORIZONTAL_ALIGN_JUSTIFY;//????????????????? case LEFT : default : return VERTICAL_ALIGN_TOP; } } case UPSIDE_DOWN://FIXMEODT possible? case NONE: default: { switch (verticalAlignment) { case BOTTOM : return VERTICAL_ALIGN_BOTTOM; case MIDDLE : return VERTICAL_ALIGN_MIDDLE; case TOP : default : return VERTICAL_ALIGN_TOP; } } } } /** * */ public static String getHorizontalAlignment( HorizontalAlignEnum horizontalAlignment, VerticalAlignEnum verticalAlignment, RotationEnum rotation ) { switch(rotation) { case LEFT: { switch (verticalAlignment) { case BOTTOM : return HORIZONTAL_ALIGN_RIGHT; case MIDDLE : return HORIZONTAL_ALIGN_CENTER; case TOP : default : return HORIZONTAL_ALIGN_LEFT; } } case RIGHT: { switch (verticalAlignment) { case BOTTOM : return HORIZONTAL_ALIGN_LEFT; case MIDDLE : return HORIZONTAL_ALIGN_CENTER; case TOP : default : return HORIZONTAL_ALIGN_RIGHT; } } case UPSIDE_DOWN://FIXMEODT possible? case NONE: default: { switch (horizontalAlignment) { case RIGHT : return HORIZONTAL_ALIGN_RIGHT; case CENTER : return HORIZONTAL_ALIGN_CENTER; case JUSTIFIED : return HORIZONTAL_ALIGN_JUSTIFY; case LEFT : default : return HORIZONTAL_ALIGN_LEFT; } } } } /** * */ public String getId() { return verticalAlignment + "|" + horizontalAlignment + "|" + runDirection + "|" + textRotation; } /** * */ public void write(String paragraphStyleName) throws IOException { styleWriter.write("<style:style style:name=\"" + paragraphStyleName + "\""); styleWriter.write(" style:family=\"paragraph\">\n"); styleWriter.write("<style:paragraph-properties"); // styleWriter.write(" fo:line-height=\"" + pLineHeight + "\""); // styleWriter.write(" style:line-spacing=\"" + pLineSpacing + "\""); styleWriter.write(" fo:text-align=\"" + horizontalAlignment + "\""); // styleWriter.write(" fo:keep-together=\"" + pKeepTogether + "\""); // styleWriter.write(" fo:margin-left=\"" + pMarginLeft + "\""); // styleWriter.write(" fo:margin-right=\"" + pMarginRight + "\""); // styleWriter.write(" fo:margin-top=\"" + pMarginTop + "\""); // styleWriter.write(" fo:margin-bottom=\"" + pMarginBottom + "\""); // styleWriter.write(" fo:background-color=\"#" + pBackGroundColor + "\""); styleWriter.write(" style:vertical-align=\"" + verticalAlignment + "\""); if (runDirection != null) { styleWriter.write(" style:writing-mode=\"" + runDirection + "\""); } styleWriter.write(">\n"); styleWriter.write("</style:paragraph-properties>\n"); styleWriter.write("<style:text-properties"); styleWriter.write(" style:text-rotation-angle=\"" + textRotation + "\""); styleWriter.write(">\n"); styleWriter.write("</style:text-properties>\n"); // styleWriter.write("<style:properties"); // styleWriter.write(" style:rotation-align=\"" + rotationAlignment + "\""); // styleWriter.write(">\n"); // styleWriter.write("</style:properties>\n"); // styleWriter.write("</style:style>\n"); } }