001: /*
002: * GNetWatch
003: * Copyright 2006, 2007 Alexandre Fenyo
004: * gnetwatch@fenyo.net
005: *
006: * This file is part of GNetWatch.
007: *
008: * GNetWatch is free software; you can redistribute it and/or modify
009: * it under the terms of the GNU General Public License as published by
010: * the Free Software Foundation; either version 2 of the License, or
011: * (at your option) any later version.
012: *
013: * GNetWatch is distributed in the hope that it will be useful,
014: * but WITHOUT ANY WARRANTY; without even the implied warranty of
015: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
016: * GNU General Public License for more details.
017: *
018: * You should have received a copy of the GNU General Public License
019: * along with GNetWatch; if not, write to the Free Software
020: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
021: */
022:
023: package net.fenyo.gnetwatch.data;
024:
025: import net.fenyo.gnetwatch.*;
026: import net.fenyo.gnetwatch.GUI.*;
027: import net.fenyo.gnetwatch.targets.*;
028:
029: import java.util.*;
030:
031: import org.apache.commons.logging.Log;
032: import org.apache.commons.logging.LogFactory;
033:
034: /**
035: * This class creates and manages views, depending on the events that are created.
036: * @author Alexandre Fenyo
037: * @version $Id: Views.java,v 1.17 2007/03/09 22:44:20 fenyo Exp $
038: */
039:
040: public class Views {
041: private static Log log = LogFactory.getLog(Views.class);
042:
043: private final GUI gui;
044:
045: /**
046: * Constructor.
047: * @param gui GUI instance.
048: */
049: // main thread
050: public Views(final GUI gui) {
051: this .gui = gui;
052: }
053:
054: /**
055: * Each time a target gets a new event type, this method creates the associated view.
056: * @param target new target.
057: * @return void.
058: */
059: // add data views to this target if needed
060: // GUI thread
061: public void refreshDataViews(final Target target) {
062: synchronized (gui.sync_tree) {
063: for (final Class event_type : target.getEventTypesInUse()) {
064: if (event_type == EventGeneric.class) {
065: // nothing to do : no view can handle generic events
066: }
067:
068: // manage events handled by ReachableView
069: if (event_type == EventReachable.class /* || event_type == A_CLASS_ReachableView_CAN_HANDLE */) {
070: ReachableView reachable_view = null;
071: // look for an instance of ReachableView
072: for (final VisualElement child : target
073: .getChildren())
074: if (child instanceof ReachableView) {
075: reachable_view = (ReachableView) child;
076: break;
077: }
078: if (reachable_view == null)
079: new ReachableView(gui, target);
080: }
081:
082: // manage events handled by FloodView
083: if (event_type == EventFlood.class) {
084: FloodView flood_view = null;
085: // look for an instance of ReachableView
086: for (final VisualElement child : target
087: .getChildren())
088: if (child instanceof FloodView) {
089: flood_view = (FloodView) child;
090: break;
091: }
092: if (flood_view == null)
093: new FloodView(gui, target);
094: }
095:
096: // manage events handled by HTTPView
097: if (event_type == EventHTTP.class) {
098: HTTPView http_view = null;
099: // look for an instance of HTTPView
100: for (final VisualElement child : target
101: .getChildren())
102: if (child instanceof HTTPView) {
103: http_view = (HTTPView) child;
104: break;
105: }
106: if (http_view == null)
107: new HTTPView(gui, target);
108: }
109:
110: // manage events handled by HTTPPagesView
111: if (event_type == EventHTTPPages.class) {
112: HTTPPagesView http_pages_view = null;
113: // look for an instance of HTTPView
114: for (final VisualElement child : target
115: .getChildren())
116: if (child instanceof HTTPPagesView) {
117: http_pages_view = (HTTPPagesView) child;
118: break;
119: }
120: if (http_pages_view == null)
121: new HTTPPagesView(gui, target);
122: }
123:
124: // manage events handled by NmapView
125: if (event_type == EventNmap.class) {
126: NmapView nmap_view = null;
127: // look for an instance of NmapView
128: for (final VisualElement child : target
129: .getChildren())
130: if (child instanceof NmapView) {
131: nmap_view = (NmapView) child;
132: break;
133: }
134: if (nmap_view == null)
135: new NmapView(gui, target);
136: }
137:
138: // manage events handled by BytesReceivedView
139: if (event_type == EventBytesReceived.class) {
140: BytesReceivedView bytes_received_view = null;
141: // look for an instance of BytesReceivedView
142: for (final VisualElement child : target
143: .getChildren())
144: if (child instanceof BytesReceivedView) {
145: bytes_received_view = (BytesReceivedView) child;
146: break;
147: }
148: if (bytes_received_view == null)
149: new BytesReceivedView(gui, target);
150: }
151:
152: // manage events handled by BytesSentView
153: if (event_type == EventBytesSent.class) {
154: BytesSentView bytes_sent_view = null;
155: // look for an instance of BytesSentView
156: for (final VisualElement child : target
157: .getChildren())
158: if (child instanceof BytesSentView) {
159: bytes_sent_view = (BytesSentView) child;
160: break;
161: }
162: if (bytes_sent_view == null)
163: new BytesSentView(gui, target);
164: }
165: }
166: }
167: }
168:
169: /**
170: * Checks that the parameter can be a child of this visual element.
171: * @param visual_element visual element.
172: * @return boolean true is the parameter can be a child of this visual element.
173: */
174: public boolean canManageThisChild(final VisualElement visual_element) {
175: return false;
176: }
177: }
|