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-2005, 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-2005, 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.1 2005/10/25 20:58:34 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:  *
  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:  * @author David Berry
  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: 
  92:         this(DateFormat.LONG);
  93: 
  94:     }
  95: 
  96:     /**
  97:      * Creates a new chart title that displays the current date with the 
  98:      * specified style (for the default locale).
  99:      * <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: }