Source for org.jfree.chart.title.DateTitle

   1: /* ===========================================================
   2:  * JFreeChart : a free chart library for the Java(tm) platform
   3:  * ===========================================================
   4:  *
   5:  * (C) Copyright 2000-2007, by Object Refinery Limited and Contributors.
   6:  *
   7:  * Project Info:  http://www.jfree.org/jfreechart/index.html
   8:  *
   9:  * This library is free software; you can redistribute it and/or modify it 
  10:  * under the terms of the GNU Lesser General Public License as published by 
  11:  * the Free Software Foundation; either version 2.1 of the License, or 
  12:  * (at your option) any later version.
  13:  *
  14:  * This library is distributed in the hope that it will be useful, but 
  15:  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
  16:  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 
  17:  * License for more details.
  18:  *
  19:  * You should have received a copy of the GNU Lesser General Public
  20:  * License along with this library; if not, write to the Free Software
  21:  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, 
  22:  * USA.  
  23:  *
  24:  * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
  25:  * in the United States and other countries.]
  26:  * 
  27:  * --------------
  28:  * DateTitle.java
  29:  * --------------
  30:  * (C) Copyright 2000-2007, by David Berry and Contributors.
  31:  *
  32:  * Original Author:  David Berry;
  33:  * Contributor(s):   David Gilbert (for Object Refinery Limited);
  34:  *
  35:  * Changes (from 18-Sep-2001)
  36:  * --------------------------
  37:  * 18-Sep-2001 : Added standard header (DG);
  38:  * 09-Jan-2002 : Updated Javadoc comments (DG);
  39:  * 07-Feb-2002 : Changed blank space around title from Insets --> Spacer, to 
  40:  *               allow for relative or absolute spacing (DG);
  41:  * 26-Sep-2002 : Fixed errors reported by Checkstyle (DG);
  42:  * 31-Jan-2005 : Updated for changes to super class (DG);
  43:  * ------------- JFREECHART 1.0.x ---------------------------------------------
  44:  * 02-Feb-2007 : Removed author tags all over JFreeChart sources (DG);
  45:  *
  46:  */
  47: 
  48: package org.jfree.chart.title;
  49: 
  50: import java.awt.Color;
  51: import java.awt.Font;
  52: import java.awt.Paint;
  53: import java.io.Serializable;
  54: import java.text.DateFormat;
  55: import java.util.Date;
  56: import java.util.Locale;
  57: 
  58: import org.jfree.ui.HorizontalAlignment;
  59: import org.jfree.ui.RectangleEdge;
  60: import org.jfree.ui.RectangleInsets;
  61: import org.jfree.ui.VerticalAlignment;
  62: 
  63: /**
  64:  * A chart title that displays the date.
  65:  * <p>
  66:  * Keep in mind that a chart can have several titles, and that they can appear 
  67:  * at the top, left, right or bottom of the chart - a <code>DateTitle</code> 
  68:  * will commonly appear at the bottom of a chart, although you can place it 
  69:  * anywhere.
  70:  * <P>
  71:  * By specifying the locale, dates are formatted to the correct standard for
  72:  * the given locale. For example, a date would appear as "January 17, 2000" in
  73:  * the US, but "17 January 2000" in most European locales.
  74:  */
  75: public class DateTitle extends TextTitle implements Serializable {
  76: 
  77:     /** For serialization. */
  78:     private static final long serialVersionUID = -465434812763159881L;
  79:     
  80:     /**
  81:      * Creates a new chart title that displays the current date in the default
  82:      * (LONG) format for the locale, positioned to the bottom right of the 
  83:      * chart.
  84:      * <P>
  85:      * The color will be black in 12 point, plain Helvetica font (maps to Arial
  86:      * on Win32 systems without Helvetica).
  87:      */
  88:     public DateTitle() {
  89:         this(DateFormat.LONG);
  90:     }
  91: 
  92:     /**
  93:      * Creates a new chart title that displays the current date with the 
  94:      * specified style (for the default locale).
  95:      * <P>
  96:      * The date style should be one of:  <code>SHORT</code>, 
  97:      * <code>MEDIUM</code>, <code>LONG</code> or <code>FULL</code> 
  98:      * (defined in <code>java.util.DateFormat<code>).
  99:      *
 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: }