001 /* =========================================================== 002 * JFreeChart : a free chart library for the Java(tm) platform 003 * =========================================================== 004 * 005 * (C) Copyright 2000-2008, 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-2008, by David Berry and Contributors. 031 * 032 * Original Author: David Berry; 033 * Contributor(s): David Gilbert (for Object Refinery Limited); 034 * 035 * Changes (from 18-Sep-2001) 036 * -------------------------- 037 * 18-Sep-2001 : Added standard header (DG); 038 * 09-Jan-2002 : Updated Javadoc comments (DG); 039 * 07-Feb-2002 : Changed blank space around title from Insets --> Spacer, to 040 * allow for relative or absolute spacing (DG); 041 * 26-Sep-2002 : Fixed errors reported by Checkstyle (DG); 042 * 31-Jan-2005 : Updated for changes to super class (DG); 043 * ------------- JFREECHART 1.0.x --------------------------------------------- 044 * 02-Feb-2007 : Removed author tags all over JFreeChart sources (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 public class DateTitle extends TextTitle implements Serializable { 076 077 /** For serialization. */ 078 private static final long serialVersionUID = -465434812763159881L; 079 080 /** 081 * Creates a new chart title that displays the current date in the default 082 * (LONG) format for the locale, positioned to the bottom right of the 083 * chart. 084 * <P> 085 * The color will be black in 12 point, plain Helvetica font (maps to Arial 086 * on Win32 systems without Helvetica). 087 */ 088 public DateTitle() { 089 this(DateFormat.LONG); 090 } 091 092 /** 093 * Creates a new chart title that displays the current date with the 094 * specified style (for the default locale). 095 * <P> 096 * The date style should be one of: <code>SHORT</code>, 097 * <code>MEDIUM</code>, <code>LONG</code> or <code>FULL</code> 098 * (defined in <code>java.util.DateFormat<code>). 099 * 100 * @param style the date style. 101 */ 102 public DateTitle(int style) { 103 this(style, Locale.getDefault(), new Font("Dialog", Font.PLAIN, 12), 104 Color.black); 105 } 106 107 /** 108 * Creates a new chart title that displays the current date. 109 * <p> 110 * The date style should be one of: <code>SHORT</code>, 111 * <code>MEDIUM</code>, <code>LONG</code> or <code>FULL</code> (defined 112 * in <code>java.util.DateFormat<code>). 113 * <P> 114 * For the locale, you can use <code>Locale.getDefault()</code> for the 115 * default locale. 116 * 117 * @param style the date style. 118 * @param locale the locale. 119 * @param font the font. 120 * @param paint the text color. 121 */ 122 public DateTitle(int style, Locale locale, Font font, Paint paint) { 123 this(style, locale, font, paint, RectangleEdge.BOTTOM, 124 HorizontalAlignment.RIGHT, VerticalAlignment.CENTER, 125 Title.DEFAULT_PADDING); 126 } 127 128 /** 129 * Creates a new chart title that displays the current date. 130 * <p> 131 * The date style should be one of: <code>SHORT</code>, 132 * <code>MEDIUM</code>, <code>LONG</code> or <code>FULL</code> (defined 133 * in <code>java.util.DateFormat<code>). 134 * <P> 135 * For the locale, you can use <code>Locale.getDefault()</code> for the 136 * default locale. 137 * 138 * @param style the date style. 139 * @param locale the locale. 140 * @param font the font (not null). 141 * @param paint the text color (not null). 142 * @param position the relative location of this title (use constants in 143 * Title). 144 * @param horizontalAlignment the horizontal text alignment of this title 145 * (use constants in Title). 146 * @param verticalAlignment the vertical text alignment of this title (use 147 * constants in Title). 148 * @param padding determines the blank space around the outside of the 149 * title (not null). 150 */ 151 public DateTitle(int style, Locale locale, Font font, Paint paint, 152 RectangleEdge position, 153 HorizontalAlignment horizontalAlignment, 154 VerticalAlignment verticalAlignment, 155 RectangleInsets padding) { 156 super(DateFormat.getDateInstance(style, locale).format(new Date()), 157 font, paint, position, horizontalAlignment, verticalAlignment, 158 padding); 159 } 160 161 /** 162 * Set the format of the date. 163 * <P> 164 * The date style should be one of: <code>SHORT</code>, 165 * <code>MEDIUM</code>, <code>LONG</code> or <code>FULL</code> (defined 166 * in <code>java.util.DateFormat<code>). 167 * <P> 168 * For the locale, you can use <code>Locale.getDefault()</code> for the 169 * default locale. 170 * 171 * @param style the date style. 172 * @param locale the locale. 173 */ 174 public void setDateFormat(int style, Locale locale) { 175 setText(DateFormat.getDateInstance(style, locale).format(new Date())); 176 } 177 178 }