KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sslexplorer > agent > client > gui > awt > PortModel


1 /*
2  * SSL-Explorer
3  *
4  * Copyright (C) 2003-2006 3SP LTD. All Rights Reserved
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2 of
9  * the License, or (at your option) any later version.
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public
16  * License along with this program; if not, write to the Free Software
17  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18  */

19             
20 package com.sslexplorer.agent.client.gui.awt;
21
22 import java.util.Date JavaDoc;
23 import java.util.Vector JavaDoc;
24
25 import com.sshtools.ui.awt.grid.TableModel;
26 import com.sshtools.ui.awt.grid.TableModelListener;
27 import com.sslexplorer.agent.client.tunneling.AbstractPortItem;
28
29
30 /**
31  * Implementation of a {@link TableModel} that lists all of
32  * the active ports (local and remote) and totals of any
33  * tunnels that are running over them.
34  *
35  * @author Brett Smith <a HREF="mailto: brett@3sp.com">&lt;brett@3sp.com&gt;</a>
36  * @see AWTPortMonitorWindow
37  * @see AbstractPortItem
38  */

39 public class PortModel implements TableModel {
40     
41     // Private instance variables
42

43     private Vector JavaDoc portItems, listeners;
44     private String JavaDoc[] columns;
45     private Class JavaDoc[] columnClasses;
46     
47     /**
48      * Constructor.
49      *
50      */

51     public PortModel() {
52         portItems = new Vector JavaDoc();
53         listeners = new Vector JavaDoc();
54         columns = new String JavaDoc[] {
55                         Messages.getString("PortModel.type"), Messages.getString("PortModel.name"), Messages.getString("PortModel.localPort"), Messages.getString("PortModel.active"), Messages.getString("PortModel.lastData"), Messages.getString("PortModel.total") //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
56
};
57         columnClasses = new Class JavaDoc[] {
58                         String JavaDoc.class, String JavaDoc.class, Integer JavaDoc.class, Integer JavaDoc.class, Date JavaDoc.class, Integer JavaDoc.class
59         };
60     }
61     
62     /**
63      * Add a new port to this model.
64      *
65      * @param port port to add
66      */

67     public void addPortItem(AbstractPortItem port) {
68         portItems.addElement(port);
69         for(int i = listeners.size() - 1 ; i >= 0 ; i--) {
70             ((TableModelListener)listeners.elementAt(i)).rowInserted(portItems.size() - 1);
71         }
72     }
73
74     /* (non-Javadoc)
75      * @see com.sshtools.ui.awt.grid.TableModel#getRowCount()
76      */

77     public int getRowCount() {
78         return portItems.size();
79     }
80
81     /* (non-Javadoc)
82      * @see com.sshtools.ui.awt.grid.TableModel#getColumnCount()
83      */

84     public int getColumnCount() {
85         return columns.length;
86     }
87
88     /* (non-Javadoc)
89      * @see com.sshtools.ui.awt.grid.TableModel#getColumnName(int)
90      */

91     public String JavaDoc getColumnName(int c) {
92         return columns[c];
93     }
94
95     /* (non-Javadoc)
96      * @see com.sshtools.ui.awt.grid.TableModel#getColumnClass(int)
97      */

98     public Class JavaDoc getColumnClass(int r) {
99         return columnClasses[r];
100     }
101
102     /* (non-Javadoc)
103      * @see com.sshtools.ui.awt.grid.TableModel#getValue(int, int)
104      */

105     public Object JavaDoc getValue(int r, int c) {
106         AbstractPortItem t = getItemAt(r);
107         switch(c) {
108             case 0:
109                 return t.getType();
110             case 1:
111                 return t.getName();
112             case 2:
113                 return new Integer JavaDoc(t.getLocalPort());
114             case 3:
115                 return new Integer JavaDoc(t.getActiveTunnelCount());
116             case 4:
117                 return new Date JavaDoc(t.getDataLastTransferred());
118             default:
119                 return new Integer JavaDoc(t.getTotalTunnelCount());
120         }
121     }
122
123     /* (non-Javadoc)
124      * @see com.sshtools.ui.awt.grid.TableModel#addTableModelListener(com.sshtools.ui.awt.grid.TableModelListener)
125      */

126     public void addTableModelListener(TableModelListener l) {
127         listeners.addElement(l);
128     }
129
130     /* (non-Javadoc)
131      * @see com.sshtools.ui.awt.grid.TableModel#removeTableModelListener(com.sshtools.ui.awt.grid.TableModelListener)
132      */

133     public void removeTableModelListener(TableModelListener l) {
134         listeners.removeElement(l);
135     }
136
137     /**
138      * Get the port at the given row index.
139      *
140      * @param idx row index
141      * @return port item
142      */

143     public AbstractPortItem getItemAt(int idx) {
144         return (AbstractPortItem)portItems.elementAt(idx);
145     }
146
147     /**
148      * Remote the port at the given row index.
149      *
150      * @param idx row index to remove
151      */

152     public void removeItemAt(int idx) {
153         portItems.removeElementAt(idx);
154         for(int i = listeners.size() - 1 ; i >= 0 ; i--) {
155             ((TableModelListener)listeners.elementAt(i)).rowDeleted(idx);
156         }
157     }
158
159     /**
160      * Update the port at the given row index. Note, this doesn't
161      * change the item, it merely first the events.
162      *
163      * @param idx row index to update
164      */

165     public void updateItemAt(int idx) {
166         for(int i = listeners.size() - 1 ; i >= 0 ; i--) {
167             ((TableModelListener)listeners.elementAt(i)).rowChanged(idx);
168         }
169     }
170
171
172     /**
173      * Get the index of an item given the resource ID.
174      *
175      * @param connection connection to find
176      * @return row index
177      */

178     public int getIndexForId(int id) {
179         for(int i = portItems.size() - 1 ; i >= 0 ; i--) {
180             AbstractPortItem pi = (AbstractPortItem)portItems.elementAt(i);
181             if(pi.getConfiguration().getId() == id) {
182                 return i;
183             }
184         }
185         return -1;
186     }
187
188     /**
189      * Refresh the list of ports.
190      */

191     public void refresh() {
192         for(int i = listeners.size() - 1 ; i >= 0 ; i--) {
193             ((TableModelListener)listeners.elementAt(i)).rowChanged(-1);
194         }
195     }
196     
197 }
Popular Tags