www.pudn.com > jworkbook-0.3.0.zip > Style.java


/* ================================================= 
 * JWorkbook : data export from Java to spreadsheets 
 * ================================================= 
 * 
 * Project Info:  http://www.jfree.org/jworkbook/index.html; 
 * Project Lead:  David Gilbert (david.gilbert@object-refinery.com); 
 * 
 * (C) Copyright 2001-2003, by Object Refinery Limited. 
 * 
 * This library 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 2.1 of the License, or (at your option) any later version. 
 * 
 * This library 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 this 
 * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
 * Boston, MA 02111-1307, USA. 
 * 
 * ---------- 
 * Style.java 
 * ---------- 
 * (C) Copyright 2001, 2003, by Object Refinery Limited. 
 * 
 * Original Author:  David Gilbert (for Object Refinery Limited); 
 * Contributor(s):   -; 
 * 
 * $Id$ 
 * 
 * Changes: 
 * -------- 
 * 05-Nov-2001 : Version 1 (DG); 
 * 07-Jul-2003 : Changed GPL --> LGPL, changed package name, updated company name (DG); 
 * 
 */ 
 
package org.jfree.workbook; 
 
 
/** 
 * Represents a style that (when incorporated within a StyleRegion object) applies to a range of 
 * cells in a worksheet. 
 * 

* This class should be immutable so we can use it in multiple places without risking it being * changed. */ public class Style implements StyleConstants { /** The font details. */ protected FontStyle font; /** The border details. */ protected Border border; /** The horizontal alignment. */ protected int horizontalAlignment; /** The vertical alignment. */ protected int verticalAlignment; /** Wrap text (true/false). */ protected boolean wrapText; /** The orientation. */ protected int orientation; /** The shade. Not all that sure about this yet. It might in fact be a boolean in the * Gnumeric file format. It needs to be "1" if the cell has a background color. */ protected int shade; /** The indentation for the cells. */ protected int cellIndent; /** The foreground color. */ protected Color foregroundColor; /** The background color. */ protected Color backgroundColor; /** The pattern color. */ protected Color patternColor; /** The format. */ protected String format; /** * Constructs a new Style object with default values. */ public Style() { this(new FontStyle("Helvetica", 9, false, false, false, false), 1, 2); } /** * Constructs a style with a specific font and alignment. * * @param font the font. * @param horizontalAlignment the horizontal alignment. * @param verticalAlignment the vertical alignment. */ public Style(FontStyle font, int horizontalAlignment, int verticalAlignment) { this.font = font; this.border = new Border(0, 0, 0, 0, 0, 0); this.horizontalAlignment = horizontalAlignment; this.verticalAlignment = verticalAlignment; this.wrapText = false; this.orientation = 1; this.shade = 0; this.cellIndent = 0; this.foregroundColor = Color.createInstance(Color.BLACK); this.backgroundColor = Color.createInstance(Color.WHITE); this.patternColor = Color.createInstance(Color.BLACK); this.format = "General"; } /** * Full constructor. * * @param font the font. * @param border the border. * @param horizontalAlignment the horizontal alignment. * @param verticalAlignment the vertical alignment. * @param wrapText wrap text (true/false). * @param orientation the text orientation. * @param shade ?? * @param cellIndent cell indentation. * @param foregroundColor the foreground color. * @param backgroundColor the bacground color. * @param patternColor the pattern color. * @param format the format string for the cell. */ public Style(FontStyle font, Border border, int horizontalAlignment, int verticalAlignment, boolean wrapText, int orientation, int shade, int cellIndent, Color foregroundColor, Color backgroundColor, Color patternColor, String format) { this.font = font; this.border = border; this.horizontalAlignment = horizontalAlignment; this.verticalAlignment = verticalAlignment; this.wrapText = wrapText; this.orientation = orientation; this.shade = shade; this.cellIndent = cellIndent; this.foregroundColor = foregroundColor; this.backgroundColor = backgroundColor; this.patternColor = patternColor; this.format = format; } /** * Returns the font for this style. * * @return The font for this style. */ public FontStyle getFont() { return this.font; } /** * Returns the border for this style. * * @return The border for this style. */ public Border getBorder() { return this.border; } /** * Returns the horizontal alignment for this style. * * @return The horizontal alignment for this style. */ public int getHorizontalAlignment() { return this.horizontalAlignment; } /** * Returns the vertical alignment for this style. * * @return The vertical alignment for this style. */ public int getVerticalAlignment() { return this.verticalAlignment; } /** * Returns a flag indicating whether or not the text is wrapped. * * @return A flag indicating whether or not the text is wrapped. */ public boolean isWrapText() { return this.wrapText; } /** * Returns the text orientation. * * @return The text orientation. */ public int getOrientation() { return this.orientation; } /** * Returns the shade. * * @return The shade. */ public int getShade() { return this.shade; } /** * Returns the indentation. * * @return The indentation. */ public int getCellIndent() { return this.cellIndent; } /** * Returns the foreground color. * * @return The foreground color. */ public Color getForegroundColor() { return this.foregroundColor; } /** * Returns the background color. * * @return The background color. */ public Color getBackgroundColor() { return this.backgroundColor; } /** * Returns the pattern color. * * @return The pattern color. */ public Color getPatternColor() { return this.patternColor; } /** * Returns the format string for the cell. * * @return The format string for the cell. */ public String getFormat() { return this.format; } /** * Creates a new style based on the provided style, but replacing the font as specified. * * @param style the base style. * @param font the new font. * * @return The style. */ public static Style applyFont(Style style, FontStyle font) { return new Style(font, style.getBorder(), style.getHorizontalAlignment(), style.getVerticalAlignment(), style.isWrapText(), style.getOrientation(), style.getShade(), style.getCellIndent(), style.getForegroundColor(), style.getBackgroundColor(), style.getPatternColor(), style.getFormat()); } /** * Creates a new style based on the provided style, but replacing the border as specified. * * @param base the base style. * @param border the new border. * * @return The style. */ public static Style applyBorder(Style base, Border border) { return new Style(base.getFont(), border, base.getHorizontalAlignment(), base.getVerticalAlignment(), base.isWrapText(), base.getOrientation(), base.getShade(), base.getCellIndent(), base.getForegroundColor(), base.getBackgroundColor(), base.getPatternColor(), base.getFormat()); } /** * Creates a new style based on the provided style, but replacing the foreground color as * specified. * * @param style the base style. * @param foregroundColor the new foreground color. * * @return The style. */ public static Style applyForegroundColor(Style style, Color foregroundColor) { return new Style(style.getFont(), style.getBorder(), style.getHorizontalAlignment(), style.getVerticalAlignment(), style.isWrapText(), style.getOrientation(), style.getShade(), style.getCellIndent(), foregroundColor, style.getBackgroundColor(), style.getPatternColor(), style.getFormat()); } /** * Creates a new style based on the provided style, but replacing the background color as * specified. *

* We set the shade value to 1, since it looks as though this is required by the Gnumeric file * format...will try to find out more about this. * * @param style the base style. * @param backgroundColor the new background color. * * @return The style. */ public static Style applyBackgroundColor(Style style, Color backgroundColor) { return new Style(style.getFont(), style.getBorder(), style.getHorizontalAlignment(), style.getVerticalAlignment(), style.isWrapText(), style.getOrientation(), 1, style.getCellIndent(), style.getForegroundColor(), backgroundColor, style.getPatternColor(), style.getFormat()); } /** * Creates a new style based on the provided style, but replacing the pattern color as * specified. * * @param style t base style. * @param patternColor the pattern color. * * @return The style. */ public static Style applyPatternColor(Style style, Color patternColor) { return new Style(style.getFont(), style.getBorder(), style.getHorizontalAlignment(), style.getVerticalAlignment(), style.isWrapText(), style.getOrientation(), style.getShade(), style.getCellIndent(), style.getForegroundColor(), style.getBackgroundColor(), patternColor, style.getFormat()); } }