ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/conient/uk/org/iscream/cms/conient/datacomponents/ServiceDataComponent.java
Revision: 1.10
Committed: Wed Feb 5 19:35:04 2003 UTC (21 years, 3 months ago) by tdb
Branch: MAIN
Changes since 1.9: +3 -3 lines
Log Message:
Conient now uses the new seperate i-scream util package.

File Contents

# Content
1 /*
2 * i-scream central monitoring system
3 * http://www.i-scream.org.uk
4 * Copyright (C) 2000-2002 i-scream
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
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 */
20
21 //---PACKAGE DECLARATION---
22 package uk.org.iscream.cms.conient.datacomponents;
23
24 //---IMPORTS---
25 import javax.swing.JLabel;
26 import javax.swing.JTextField;
27 import java.awt.Color;
28 import java.awt.GridLayout;
29 import javax.swing.SwingUtilities;
30 import uk.org.iscream.cms.util.XMLPacket;
31
32 /**
33 * This is the most basic of DataComponents.
34 *
35 * It simply displays the value as a String
36 * in a JTextField.
37 *
38 * @author $Author: tdb $
39 * @version $Id: ServiceDataComponent.java,v 1.9 2002/05/21 16:47:10 tdb Exp $
40 */
41 public class ServiceDataComponent extends VisibleDataComponent {
42
43 //---FINAL ATTRIBUTES---
44
45 /**
46 * The current CVS revision of this class
47 */
48 public final String REVISION = "$Revision: 1.9 $";
49
50 /**
51 * The default length of the JTextField
52 */
53 protected final int DEFAULT_TEXT_LENGTH = 20;
54
55 //---STATIC METHODS---
56
57 //---CONSTRUCTORS---
58
59 /**
60 * Creates the component with a friendly name to be
61 * used as label
62 *
63 * @param name the friendly name
64 * @param attribute the data attribute we look after
65 */
66 public ServiceDataComponent(String name, String attribute, String statusAttribute) {
67 _name = name;
68 _statusAttribute = statusAttribute;
69 _attribute = attribute;
70 setLayout(new GridLayout(1,2));
71 _label = new JLabel(_name + ": ");
72 _label.setHorizontalAlignment(JLabel.RIGHT);
73 _item = new JTextField("", DEFAULT_TEXT_LENGTH);
74 _item.setHorizontalAlignment(JTextField.LEFT);
75 _item.setEditable(false);
76 _item.setText("-uninitialised-");
77 add(_label);
78 add(_item);
79 setVisible(false);
80 }
81
82 //---PUBLIC METHODS---
83
84 /**
85 * This run method updates any Swing components
86 * The setValue() method adds this component
87 * to the Swing Event Dispatching Queue to
88 * run this method.
89 */
90 public void run() {
91 if(!isVisible()) {
92 setVisible(true);
93 }
94 if (_statusCache.equals("0")) {
95 _item.setForeground(Color.black);
96 _item.setText("[OK] : " + _cache);
97 } else {
98 _item.setForeground(Color.red);
99 _item.setText("[FAILED] : " + _cache);
100 }
101 _item.setCaretPosition(0);
102 }
103
104 /**
105 * Overrides the {@link java.lang.Object#toString() Object.toString()}
106 * method to provide clean logging (every class should have this).
107 *
108 * @return the name of this class and its CVS revision
109 */
110 public String toString() {
111 return _name + "(" + _attribute + ")";
112 }
113
114 //---PRIVATE METHODS---
115
116 //---ACCESSOR/MUTATOR METHODS---
117
118 /**
119 * This takes the packet to obtain the value from, it then performs all
120 * approriate conversions and adds this class to the Swing Event
121 * Dispatching queue.
122 *
123 * @param packet the XMLPacket to get the data from
124 * @throws DataFormatException if there was a problem converting the data for display
125 */
126 public void setValue(XMLPacket packet) throws DataFormatException {
127 String value = packet.getParam(_attribute);
128 String statusvalue = packet.getParam(_statusAttribute);
129 try {
130 if(!_cache.equals(value) || !_statusCache.equals(statusvalue)) {
131 _cache = value;
132 _statusCache = statusvalue;
133 SwingUtilities.invokeLater(this);
134 }
135 } catch (Exception e) {
136 throw new DataFormatException(value + " is an invalid data type for " + toString());
137 }
138 }
139
140 /**
141 * Returns the string showing the packet
142 * attribute that the component is looking after
143 *
144 * @return the packet reference
145 */
146 public String getPacketAttribute() {
147 return _attribute;
148 }
149
150 //---ATTRIBUTES---
151
152 /**
153 * The friendly name of this component
154 */
155 protected String _name;
156
157 /**
158 * The attribute that this component is concerned with
159 */
160 protected String _attribute;
161
162 /**
163 * The service status attribute that this component is concerned with
164 */
165 protected String _statusAttribute;
166
167 /**
168 * The friendly label for this component
169 */
170 protected JLabel _label;
171
172 /**
173 * Remembers what the last value was, so we
174 * only update if we have to.
175 */
176 protected String _cache = "";
177
178 /**
179 * Remembers what the last value was, so we
180 * only update if we have to.
181 */
182 protected String _statusCache = "";
183
184 /**
185 * The length of the JTextField
186 */
187 protected int _displayLength;
188
189 /**
190 * Just a normal label to display our value as a String
191 */
192 protected JTextField _item;
193
194 //---STATIC ATTRIBUTES---
195
196 }