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:  * $Id: DateTitle.java,v 1.3.2.2 2007/02/02 15:03:19 mungady Exp $
  36:  *
  37:  * Changes (from 18-Sep-2001)
  38:  * --------------------------
  39:  * 18-Sep-2001 : Added standard header (DG);
  40:  * 09-Jan-2002 : Updated Javadoc comments (DG);
  41:  * 07-Feb-2002 : Changed blank space around title from Insets --> Spacer, to 
  42:  *               allow for relative or absolute spacing (DG);
  43:  * 26-Sep-2002 : Fixed errors reported by Checkstyle (DG);
  44:  * 31-Jan-2005 : Updated for changes to super class (DG);
  45:  * ------------- JFREECHART 1.0.x ---------------------------------------------
  46:  * 02-Feb-2007 : Removed author tags all over JFreeChart sources (DG);
  47:  *
  48:  */
  49: 
  50: package org.jfree.chart.title;
  51: 
  52: import java.awt.Color;
  53: import java.awt.Font;
  54: import java.awt.Paint;
  55: import java.io.Serializable;
  56: import java.text.DateFormat;
  57: import java.util.Date;
  58: import java.util.Locale;
  59: 
  60: import org.jfree.ui.HorizontalAlignment;
  61: import org.jfree.ui.RectangleEdge;
  62: import org.jfree.ui.RectangleInsets;
  63: import org.jfree.ui.VerticalAlignment;
  64: 
  65: /**
  66:  * A chart title that displays the date.
  67:  * <p>
  68:  * Keep in mind that a chart can have several titles, and that they can appear 
  69:  * at the top, left, right or bottom of the chart - a <code>DateTitle</code> 
  70:  * will commonly appear at the bottom of a chart, although you can place it 
  71:  * anywhere.
  72:  * <P>
  73:  * By specifying the locale, dates are formatted to the correct standard for
  74:  * the given locale. For example, a date would appear as "January 17, 2000" in
  75:  * the US, but "17 January 2000" in most European locales.
  76:  */
  77: public class DateTitle extends TextTitle implements Serializable {
  78: 
  79:     /** For serialization. */
  80:     private static final long serialVersionUID = -465434812763159881L;
  81:     
  82:     /**
  83:      * Creates a new chart title that displays the current date in the default
  84:      * (LONG) format for the locale, positioned to the bottom right of the 
  85:      * chart.
  86:      * <P>
  87:      * The color will be black in 12 point, plain Helvetica font (maps to Arial
  88:      * on Win32 systems without Helvetica).
  89:      */
  90:     public DateTitle() {
  91:         this(DateFormat.LONG);
  92:     }
  93: 
  94:     /**
  95:      * Creates a new chart title that displays the current date with the 
  96:      * specified style (for the default locale).
  97:      * <P>
  98:      * The date style should be one of:  <code>SHORT</code>, 
  99:      * <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: }