001 /* =========================================================== 002 * JFreeChart : a free chart library for the Java(tm) platform 003 * =========================================================== 004 * 005 * (C) Copyright 2000-2007, by Object Refinery Limited and Contributors. 006 * 007 * Project Info: http://www.jfree.org/jfreechart/index.html 008 * 009 * This library is free software; you can redistribute it and/or modify it 010 * under the terms of the GNU Lesser General Public License as published by 011 * the Free Software Foundation; either version 2.1 of the License, or 012 * (at your option) any later version. 013 * 014 * This library is distributed in the hope that it will be useful, but 015 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 016 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 017 * License for more details. 018 * 019 * You should have received a copy of the GNU Lesser General Public 020 * License along with this library; if not, write to the Free Software 021 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 022 * USA. 023 * 024 * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 025 * in the United States and other countries.] 026 * 027 * -------------- 028 * DateTitle.java 029 * -------------- 030 * (C) Copyright 2000-2007, by David Berry and Contributors. 031 * 032 * Original Author: David Berry; 033 * Contributor(s): David Gilbert (for Object Refinery Limited); 034 * 035 * $Id: DateTitle.java,v 1.3.2.2 2007/02/02 15:03:19 mungady Exp $ 036 * 037 * Changes (from 18-Sep-2001) 038 * -------------------------- 039 * 18-Sep-2001 : Added standard header (DG); 040 * 09-Jan-2002 : Updated Javadoc comments (DG); 041 * 07-Feb-2002 : Changed blank space around title from Insets --> Spacer, to 042 * allow for relative or absolute spacing (DG); 043 * 26-Sep-2002 : Fixed errors reported by Checkstyle (DG); 044 * 31-Jan-2005 : Updated for changes to super class (DG); 045 * ------------- JFREECHART 1.0.x --------------------------------------------- 046 * 02-Feb-2007 : Removed author tags all over JFreeChart sources (DG); 047 * 048 */ 049 050 package org.jfree.chart.title; 051 052 import java.awt.Color; 053 import java.awt.Font; 054 import java.awt.Paint; 055 import java.io.Serializable; 056 import java.text.DateFormat; 057 import java.util.Date; 058 import java.util.Locale; 059 060 import org.jfree.ui.HorizontalAlignment; 061 import org.jfree.ui.RectangleEdge; 062 import org.jfree.ui.RectangleInsets; 063 import org.jfree.ui.VerticalAlignment; 064 065 /** 066 * A chart title that displays the date. 067 * <p> 068 * Keep in mind that a chart can have several titles, and that they can appear 069 * at the top, left, right or bottom of the chart - a <code>DateTitle</code> 070 * will commonly appear at the bottom of a chart, although you can place it 071 * anywhere. 072 * <P> 073 * By specifying the locale, dates are formatted to the correct standard for 074 * the given locale. For example, a date would appear as "January 17, 2000" in 075 * the US, but "17 January 2000" in most European locales. 076 */ 077 public class DateTitle extends TextTitle implements Serializable { 078 079 /** For serialization. */ 080 private static final long serialVersionUID = -465434812763159881L; 081 082 /** 083 * Creates a new chart title that displays the current date in the default 084 * (LONG) format for the locale, positioned to the bottom right of the 085 * chart. 086 * <P> 087 * The color will be black in 12 point, plain Helvetica font (maps to Arial 088 * on Win32 systems without Helvetica). 089 */ 090 public DateTitle() { 091 this(DateFormat.LONG); 092 } 093 094 /** 095 * Creates a new chart title that displays the current date with the 096 * specified style (for the default locale). 097 * <P> 098 * The date style should be one of: <code>SHORT</code>, 099 * <code>MEDIUM</code>, <code>LONG</code> or <code>FULL</code> 100 * (defined in <code>java.util.DateFormat<code>). 101 * 102 * @param style the date style. 103 */ 104 public DateTitle(int style) { 105 this(style, Locale.getDefault(), new Font("Dialog", Font.PLAIN, 12), 106 Color.black); 107 } 108 109 /** 110 * Creates a new chart title that displays the current date. 111 * <p> 112 * The date style should be one of: <code>SHORT</code>, 113 * <code>MEDIUM</code>, <code>LONG</code> or <code>FULL</code> (defined 114 * in <code>java.util.DateFormat<code>). 115 * <P> 116 * For the locale, you can use <code>Locale.getDefault()</code> for the 117 * default locale. 118 * 119 * @param style the date style. 120 * @param locale the locale. 121 * @param font the font. 122 * @param paint the text color. 123 */ 124 public DateTitle(int style, Locale locale, Font font, Paint paint) { 125 this(style, locale, font, paint, RectangleEdge.BOTTOM, 126 HorizontalAlignment.RIGHT, VerticalAlignment.CENTER, 127 Title.DEFAULT_PADDING); 128 } 129 130 /** 131 * Creates a new chart title that displays the current date. 132 * <p> 133 * The date style should be one of: <code>SHORT</code>, 134 * <code>MEDIUM</code>, <code>LONG</code> or <code>FULL</code> (defined 135 * in <code>java.util.DateFormat<code>). 136 * <P> 137 * For the locale, you can use <code>Locale.getDefault()</code> for the 138 * default locale. 139 * 140 * @param style the date style. 141 * @param locale the locale. 142 * @param font the font (not null). 143 * @param paint the text color (not null). 144 * @param position the relative location of this title (use constants in 145 * Title). 146 * @param horizontalAlignment the horizontal text alignment of this title 147 * (use constants in Title). 148 * @param verticalAlignment the vertical text alignment of this title (use 149 * constants in Title). 150 * @param padding determines the blank space around the outside of the 151 * title (not null). 152 */ 153 public DateTitle(int style, Locale locale, Font font, Paint paint, 154 RectangleEdge position, 155 HorizontalAlignment horizontalAlignment, 156 VerticalAlignment verticalAlignment, 157 RectangleInsets padding) { 158 super(DateFormat.getDateInstance(style, locale).format(new Date()), 159 font, paint, position, horizontalAlignment, verticalAlignment, 160 padding); 161 } 162 163 /** 164 * Set the format of the date. 165 * <P> 166 * The date style should be one of: <code>SHORT</code>, 167 * <code>MEDIUM</code>, <code>LONG</code> or <code>FULL</code> (defined 168 * in <code>java.util.DateFormat<code>). 169 * <P> 170 * For the locale, you can use <code>Locale.getDefault()</code> for the 171 * default locale. 172 * 173 * @param style the date style. 174 * @param locale the locale. 175 */ 176 public void setDateFormat(int style, Locale locale) { 177 setText(DateFormat.getDateInstance(style, locale).format(new Date())); 178 } 179 180 }