001/* =========================================================== 002 * JFreeChart : a free chart library for the Java(tm) platform 003 * =========================================================== 004 * 005 * (C) Copyright 2000-2014, 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 * [Oracle and Java are registered trademarks of Oracle and/or its affiliates. 025 * Other names may be trademarks of their respective owners.] 026 * 027 * -------------- 028 * DateTitle.java 029 * -------------- 030 * (C) Copyright 2000-2014, 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 048package org.jfree.chart.title; 049 050import java.awt.Color; 051import java.awt.Font; 052import java.awt.Paint; 053import java.io.Serializable; 054import java.text.DateFormat; 055import java.util.Date; 056import java.util.Locale; 057 058import org.jfree.ui.HorizontalAlignment; 059import org.jfree.ui.RectangleEdge; 060import org.jfree.ui.RectangleInsets; 061import 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} 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 */ 075public 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}, 097 * {@code MEDIUM}, {@code LONG} or {@code FULL} 098 * (defined in {@code java.util.DateFormat}). 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}, 111 * {@code MEDIUM}, {@code LONG} or {@code FULL} (defined 112 * in {@code java.util.DateFormat}). 113 * <P> 114 * For the locale, you can use {@code Locale.getDefault()} 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}, 132 * {@code MEDIUM}, {@code LONG} or {@code FULL} (defined 133 * in {@code java.util.DateFormat}). 134 * <P> 135 * For the locale, you can use {@code Locale.getDefault()} 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, HorizontalAlignment horizontalAlignment, 153 VerticalAlignment verticalAlignment, RectangleInsets padding) { 154 super(DateFormat.getDateInstance(style, locale).format(new Date()), 155 font, paint, position, horizontalAlignment, verticalAlignment, 156 padding); 157 } 158 159 /** 160 * Set the format of the date. 161 * <P> 162 * The date style should be one of: {@code SHORT}, 163 * {@code MEDIUM}, {@code LONG} or {@code FULL} (defined 164 * in {@code java.util.DateFormat}). 165 * <P> 166 * For the locale, you can use {@code Locale.getDefault()} for the 167 * default locale. 168 * 169 * @param style the date style. 170 * @param locale the locale. 171 */ 172 public void setDateFormat(int style, Locale locale) { 173 setText(DateFormat.getDateInstance(style, locale).format(new Date())); 174 } 175 176}