001 /* =========================================================== 002 * JFreeChart : a free chart library for the Java(tm) platform 003 * =========================================================== 004 * 005 * (C) Copyright 2000-2005, 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-2005, 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.1 2005/10/25 20:58:34 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 * 046 */ 047 048 package org.jfree.chart.title; 049 050 import java.awt.Color; 051 import java.awt.Font; 052 import java.awt.Paint; 053 import java.io.Serializable; 054 import java.text.DateFormat; 055 import java.util.Date; 056 import java.util.Locale; 057 058 import org.jfree.ui.HorizontalAlignment; 059 import org.jfree.ui.RectangleEdge; 060 import org.jfree.ui.RectangleInsets; 061 import org.jfree.ui.VerticalAlignment; 062 063 /** 064 * A chart title that displays the date. 065 * <p> 066 * Keep in mind that a chart can have several titles, and that they can appear 067 * at the top, left, right or bottom of the chart - a <code>DateTitle</code> 068 * will commonly appear at the bottom of a chart, although you can place it 069 * anywhere. 070 * <P> 071 * By specifying the locale, dates are formatted to the correct standard for 072 * the given locale. For example, a date would appear as "January 17, 2000" in 073 * the US, but "17 January 2000" in most European locales. 074 * 075 * @author David Berry 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 092 this(DateFormat.LONG); 093 094 } 095 096 /** 097 * Creates a new chart title that displays the current date with the 098 * specified style (for the default locale). 099 * <P> 100 * The date style should be one of: <code>SHORT</code>, 101 * <code>MEDIUM</code>, <code>LONG</code> or <code>FULL</code> 102 * (defined in <code>java.util.DateFormat<code>). 103 * 104 * @param style the date style. 105 */ 106 public DateTitle(int style) { 107 this( 108 style, Locale.getDefault(), 109 new Font("Dialog", Font.PLAIN, 12), Color.black 110 ); 111 } 112 113 /** 114 * Creates a new chart title that displays the current date. 115 * <p> 116 * The date style should be one of: <code>SHORT</code>, 117 * <code>MEDIUM</code>, <code>LONG</code> or <code>FULL</code> (defined 118 * in <code>java.util.DateFormat<code>). 119 * <P> 120 * For the locale, you can use <code>Locale.getDefault()</code> for the 121 * default locale. 122 * 123 * @param style the date style. 124 * @param locale the locale. 125 * @param font the font. 126 * @param paint the text color. 127 */ 128 public DateTitle(int style, Locale locale, Font font, Paint paint) { 129 this( 130 style, locale, font, paint, 131 RectangleEdge.BOTTOM, 132 HorizontalAlignment.RIGHT, 133 VerticalAlignment.CENTER, 134 Title.DEFAULT_PADDING 135 ); 136 } 137 138 /** 139 * Creates a new chart title that displays the current date. 140 * <p> 141 * The date style should be one of: <code>SHORT</code>, 142 * <code>MEDIUM</code>, <code>LONG</code> or <code>FULL</code> (defined 143 * in <code>java.util.DateFormat<code>). 144 * <P> 145 * For the locale, you can use <code>Locale.getDefault()</code> for the 146 * default locale. 147 * 148 * @param style the date style. 149 * @param locale the locale. 150 * @param font the font (not null). 151 * @param paint the text color (not null). 152 * @param position the relative location of this title (use constants in 153 * Title). 154 * @param horizontalAlignment the horizontal text alignment of this title 155 * (use constants in Title). 156 * @param verticalAlignment the vertical text alignment of this title (use 157 * constants in Title). 158 * @param padding determines the blank space around the outside of the 159 * title (not null). 160 */ 161 public DateTitle(int style, Locale locale, Font font, Paint paint, 162 RectangleEdge position, 163 HorizontalAlignment horizontalAlignment, 164 VerticalAlignment verticalAlignment, 165 RectangleInsets padding) { 166 super( 167 DateFormat.getDateInstance(style, locale).format(new Date()), 168 font, paint, 169 position, horizontalAlignment, verticalAlignment, 170 padding 171 ); 172 } 173 174 /** 175 * Set the format of the date. 176 * <P> 177 * The date style should be one of: <code>SHORT</code>, 178 * <code>MEDIUM</code>, <code>LONG</code> or <code>FULL</code> (defined 179 * in <code>java.util.DateFormat<code>). 180 * <P> 181 * For the locale, you can use <code>Locale.getDefault()</code> for the 182 * default locale. 183 * 184 * @param style the date style. 185 * @param locale the locale. 186 */ 187 public void setDateFormat(int style, Locale locale) { 188 setText(DateFormat.getDateInstance(style, locale).format(new Date())); 189 } 190 191 }