comparison gnv-artifacts/src/main/java/de/intevation/gnv/chart/TimeSeriesChart.java @ 526:4cbcc130cffc

Copied method from JFreeChart to adapt date formats. gnv-artifacts/trunk@622 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Mon, 25 Jan 2010 16:15:31 +0000
parents d9d933e06875
children 83f8f98a4f11
comparison
equal deleted inserted replaced
525:0eba2f032e0d 526:4cbcc130cffc
5 import de.intevation.gnv.geobackend.base.Result; 5 import de.intevation.gnv.geobackend.base.Result;
6 6
7 import de.intevation.gnv.state.describedata.KeyValueDescibeData; 7 import de.intevation.gnv.state.describedata.KeyValueDescibeData;
8 8
9 import de.intevation.gnv.timeseries.gap.TimeGap; 9 import de.intevation.gnv.timeseries.gap.TimeGap;
10
11 import java.text.DateFormat;
12 import java.text.SimpleDateFormat;
10 13
11 import java.util.Collection; 14 import java.util.Collection;
12 import java.util.Date; 15 import java.util.Date;
13 import java.util.HashMap; 16 import java.util.HashMap;
14 import java.util.Iterator; 17 import java.util.Iterator;
20 import org.jfree.chart.ChartFactory; 23 import org.jfree.chart.ChartFactory;
21 import org.jfree.chart.ChartTheme; 24 import org.jfree.chart.ChartTheme;
22 25
23 import org.jfree.chart.axis.Axis; 26 import org.jfree.chart.axis.Axis;
24 import org.jfree.chart.axis.DateAxis; 27 import org.jfree.chart.axis.DateAxis;
28 import org.jfree.chart.axis.DateTickUnit;
29 import org.jfree.chart.axis.DateTickUnitType;
30 import org.jfree.chart.axis.TickUnits;
31 import org.jfree.chart.axis.TickUnitSource;
32 import org.jfree.chart.axis.ValueAxis;
25 33
26 import org.jfree.chart.plot.PlotOrientation; 34 import org.jfree.chart.plot.PlotOrientation;
27 import org.jfree.chart.plot.XYPlot; 35 import org.jfree.chart.plot.XYPlot;
28 36
29 import org.jfree.data.general.Series; 37 import org.jfree.data.general.Series;
223 } 231 }
224 } 232 }
225 233
226 234
227 protected void localizeDomainAxis(Axis axis, Locale locale) { 235 protected void localizeDomainAxis(Axis axis, Locale locale) {
228 // do nothing 236 ((ValueAxis)axis).setStandardTickUnits(createStandardDateTickUnits(
237 TimeZone.getDefault(),
238 locale));
239 }
240
241
242 public static TickUnitSource createStandardDateTickUnits(
243 TimeZone zone,
244 Locale locale)
245 {
246 /*
247 * This method have been copied from JFreeChart's DateAxis class.
248 * DateFormat objects are hard coded in DateAxis and cannot be adjusted.
249 */
250 if (zone == null) {
251 throw new IllegalArgumentException("Null 'zone' argument.");
252 }
253 if (locale == null) {
254 throw new IllegalArgumentException("Null 'locale' argument.");
255 }
256 TickUnits units = new TickUnits();
257
258 // date formatters
259 DateFormat f1 = new SimpleDateFormat("HH:mm:ss.SSS", locale);
260 DateFormat f2 = new SimpleDateFormat("HH:mm:ss", locale);
261 DateFormat f3 = new SimpleDateFormat("HH:mm", locale);
262 DateFormat f4 = new SimpleDateFormat("d-MMM, HH:mm", locale);
263 DateFormat f5 = new SimpleDateFormat("d-MMM yyyy", locale);
264 DateFormat f6 = new SimpleDateFormat("MMM-yyyy", locale);
265 DateFormat f7 = new SimpleDateFormat("yyyy", locale);
266
267 f1.setTimeZone(zone);
268 f2.setTimeZone(zone);
269 f3.setTimeZone(zone);
270 f4.setTimeZone(zone);
271 f5.setTimeZone(zone);
272 f6.setTimeZone(zone);
273 f7.setTimeZone(zone);
274
275 // milliseconds
276 units.add(new DateTickUnit(DateTickUnitType.MILLISECOND, 1, f1));
277 units.add(new DateTickUnit(DateTickUnitType.MILLISECOND, 5,
278 DateTickUnitType.MILLISECOND, 1, f1));
279 units.add(new DateTickUnit(DateTickUnitType.MILLISECOND, 10,
280 DateTickUnitType.MILLISECOND, 1, f1));
281 units.add(new DateTickUnit(DateTickUnitType.MILLISECOND, 25,
282 DateTickUnitType.MILLISECOND, 5, f1));
283 units.add(new DateTickUnit(DateTickUnitType.MILLISECOND, 50,
284 DateTickUnitType.MILLISECOND, 10, f1));
285 units.add(new DateTickUnit(DateTickUnitType.MILLISECOND, 100,
286 DateTickUnitType.MILLISECOND, 10, f1));
287 units.add(new DateTickUnit(DateTickUnitType.MILLISECOND, 250,
288 DateTickUnitType.MILLISECOND, 10, f1));
289 units.add(new DateTickUnit(DateTickUnitType.MILLISECOND, 500,
290 DateTickUnitType.MILLISECOND, 50, f1));
291
292 // seconds
293 units.add(new DateTickUnit(DateTickUnitType.SECOND, 1,
294 DateTickUnitType.MILLISECOND, 50, f2));
295 units.add(new DateTickUnit(DateTickUnitType.SECOND, 5,
296 DateTickUnitType.SECOND, 1, f2));
297 units.add(new DateTickUnit(DateTickUnitType.SECOND, 10,
298 DateTickUnitType.SECOND, 1, f2));
299 units.add(new DateTickUnit(DateTickUnitType.SECOND, 30,
300 DateTickUnitType.SECOND, 5, f2));
301
302 // minutes
303 units.add(new DateTickUnit(DateTickUnitType.MINUTE, 1,
304 DateTickUnitType.SECOND, 5, f3));
305 units.add(new DateTickUnit(DateTickUnitType.MINUTE, 2,
306 DateTickUnitType.SECOND, 10, f3));
307 units.add(new DateTickUnit(DateTickUnitType.MINUTE, 5,
308 DateTickUnitType.MINUTE, 1, f3));
309 units.add(new DateTickUnit(DateTickUnitType.MINUTE, 10,
310 DateTickUnitType.MINUTE, 1, f3));
311 units.add(new DateTickUnit(DateTickUnitType.MINUTE, 15,
312 DateTickUnitType.MINUTE, 5, f3));
313 units.add(new DateTickUnit(DateTickUnitType.MINUTE, 20,
314 DateTickUnitType.MINUTE, 5, f3));
315 units.add(new DateTickUnit(DateTickUnitType.MINUTE, 30,
316 DateTickUnitType.MINUTE, 5, f3));
317
318 // hours
319 units.add(new DateTickUnit(DateTickUnitType.HOUR, 1,
320 DateTickUnitType.MINUTE, 5, f3));
321 units.add(new DateTickUnit(DateTickUnitType.HOUR, 2,
322 DateTickUnitType.MINUTE, 10, f3));
323 units.add(new DateTickUnit(DateTickUnitType.HOUR, 4,
324 DateTickUnitType.MINUTE, 30, f3));
325 units.add(new DateTickUnit(DateTickUnitType.HOUR, 6,
326 DateTickUnitType.HOUR, 1, f3));
327 units.add(new DateTickUnit(DateTickUnitType.HOUR, 12,
328 DateTickUnitType.HOUR, 1, f4));
329
330 // days
331 units.add(new DateTickUnit(DateTickUnitType.DAY, 1,
332 DateTickUnitType.HOUR, 1, f5));
333 units.add(new DateTickUnit(DateTickUnitType.DAY, 2,
334 DateTickUnitType.HOUR, 1, f5));
335 units.add(new DateTickUnit(DateTickUnitType.DAY, 7,
336 DateTickUnitType.DAY, 1, f5));
337 units.add(new DateTickUnit(DateTickUnitType.DAY, 15,
338 DateTickUnitType.DAY, 1, f5));
339
340 // months
341 units.add(new DateTickUnit(DateTickUnitType.MONTH, 1,
342 DateTickUnitType.DAY, 1, f6));
343 units.add(new DateTickUnit(DateTickUnitType.MONTH, 2,
344 DateTickUnitType.DAY, 1, f6));
345 units.add(new DateTickUnit(DateTickUnitType.MONTH, 3,
346 DateTickUnitType.MONTH, 1, f6));
347 units.add(new DateTickUnit(DateTickUnitType.MONTH, 4,
348 DateTickUnitType.MONTH, 1, f6));
349 units.add(new DateTickUnit(DateTickUnitType.MONTH, 6,
350 DateTickUnitType.MONTH, 1, f6));
351
352 // years
353 units.add(new DateTickUnit(DateTickUnitType.YEAR, 1,
354 DateTickUnitType.MONTH, 1, f7));
355 units.add(new DateTickUnit(DateTickUnitType.YEAR, 2,
356 DateTickUnitType.MONTH, 3, f7));
357 units.add(new DateTickUnit(DateTickUnitType.YEAR, 5,
358 DateTickUnitType.YEAR, 1, f7));
359 units.add(new DateTickUnit(DateTickUnitType.YEAR, 10,
360 DateTickUnitType.YEAR, 1, f7));
361 units.add(new DateTickUnit(DateTickUnitType.YEAR, 25,
362 DateTickUnitType.YEAR, 5, f7));
363 units.add(new DateTickUnit(DateTickUnitType.YEAR, 50,
364 DateTickUnitType.YEAR, 10, f7));
365 units.add(new DateTickUnit(DateTickUnitType.YEAR, 100,
366 DateTickUnitType.YEAR, 20, f7));
367
368 return units;
229 } 369 }
230 370
231 371
232 protected String getMessage(Locale locale, String key, String def) { 372 protected String getMessage(Locale locale, String key, String def) {
233 return RessourceFactory.getInstance().getRessource(locale, key, def); 373 return RessourceFactory.getInstance().getRessource(locale, key, def);

http://dive4elements.wald.intevation.org