01: /*
02: * GNetWatch
03: * Copyright 2006, 2007 Alexandre Fenyo
04: * gnetwatch@fenyo.net
05: *
06: * This file is part of GNetWatch.
07: *
08: * GNetWatch is free software; you can redistribute it and/or modify
09: * it under the terms of the GNU General Public License as published by
10: * the Free Software Foundation; either version 2 of the License, or
11: * (at your option) any later version.
12: *
13: * GNetWatch is distributed in the hope that it will be useful,
14: * but WITHOUT ANY WARRANTY; without even the implied warranty of
15: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16: * GNU General Public License for more details.
17: *
18: * You should have received a copy of the GNU General Public License
19: * along with GNetWatch; if not, write to the Free Software
20: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21: */
22:
23: package net.fenyo.gnetwatch.GUI;
24:
25: import java.io.*;
26: import java.util.Date;
27: import java.awt.*;
28: import java.awt.event.WindowEvent;
29: import java.awt.font.*;
30: import java.awt.geom.*;
31: import java.awt.image.*;
32: import javax.swing.*;
33: import javax.imageio.*;
34:
35: import net.fenyo.gnetwatch.data.EventReachable;
36: import net.fenyo.gnetwatch.targets.*;
37:
38: import org.apache.commons.logging.Log;
39: import org.apache.commons.logging.LogFactory;
40:
41: /**
42: * This class implements a component that can display EventReachable events.
43: * @author Alexandre Fenyo
44: * @version $Id: ChartComponent.java,v 1.9 2007/03/03 00:38:19 fenyo Exp $
45: */
46:
47: public class ChartComponent extends BasicComponent {
48: private static Log log = LogFactory.getLog(ChartComponent.class);
49:
50: /**
51: * Constructor.
52: * @param target target this graphic component works on.
53: */
54: // GUI thread
55: public ChartComponent(final Target target) {
56: super (target);
57: }
58:
59: /**
60: * Called when the window is closing.
61: * @param e event.
62: * @return void.
63: */
64: // AWT thread
65: public void windowClosing(final WindowEvent e) {
66: getTarget().unregisterComponent(this , EventReachable.class);
67: }
68:
69: /**
70: * Fetches events that can be displayed.
71: * @param none.
72: * @return void.
73: */
74: // AWT thread
75: // AWT thread << sync_value_per_vinterval << sync_update << registered_components
76: protected void updateValues() {
77: synchronized (getSyncUpdate()) {
78: getTarget().registerComponent(this , EventReachable.class);
79: final long end = System.currentTimeMillis();
80: final long begin = end
81: - getDelayPerInterval()
82: * (getDimension().width - axis_margin_left - axis_margin_right)
83: / pixels_per_interval;
84: setEvents(getTarget().getEvents(new Date(begin),
85: new Date(end), EventReachable.class));
86: updateVerticalScale();
87: }
88: }
89: }
|