ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/conient/uk/org/iscream/cms/conient/QueueFrame.java
Revision: 1.4
Committed: Tue Feb 27 15:11:44 2001 UTC (23 years, 2 months ago) by ajm
Branch: MAIN
Changes since 1.3: +3 -3 lines
Log Message:
Made change to handle all resources (images etc).
Modified all scripts and classes which handles resources.
Moves to ./build/resources.
Also fixed bug in makefile which didn't copy ./build/etc on install.

File Contents

# Content
1 //---PACKAGE DECLARATION---
2 package uk.ac.ukc.iscream.conient;
3
4 //---IMPORTS---
5 import uk.ac.ukc.iscream.util.*;
6 import uk.ac.ukc.iscream.conient.datacomponents.*;
7 import javax.swing.*;
8 import javax.swing.border.*;
9 import java.util.*;
10 import java.awt.*;
11 import java.awt.event.*;
12
13 /**
14 *
15 * @author $Author: ajm4 $
16 * @version $Id: QueueFrame.java,v 1.3 2001/02/26 01:05:10 ajm4 Exp $
17 */
18 public class QueueFrame extends JFrame {
19
20 //---FINAL ATTRIBUTES---
21
22 /**
23 * The current CVS revision of this class
24 */
25 public final String REVISION = "$Revision: 1.3 $";
26
27 //---STATIC METHODS---
28
29 //---CONSTRUCTORS---
30
31 /**
32 *
33 */
34 public QueueFrame() {
35 super("Server Queue Status");
36 //addVisibleDataComponent(_conent, new StringDataComponent("Host Name", "packet.attributes.machine_name"));
37
38 getContentPane().add(_content, "Center");
39 JButton close = new JButton("Close Window");
40 close.addActionListener(new ActionListener() {
41 public void actionPerformed(ActionEvent e) {
42 dispose();
43 }
44 });
45 getContentPane().add(close, "South");
46 setIconImage((new ImageIcon("./resources/server.gif")).getImage());
47 pack();
48 setVisible(true);
49 }
50
51 //---PUBLIC METHODS---
52
53 /**
54 * Process an incoming packet, updates the components.
55 *
56 * @param packet the packet to process
57 *
58 * @return if the proceesing was successful
59 */
60 public boolean update(XMLPacket packet) {
61 // iterate over the packets data
62 boolean displaySucessful = true;
63 String queueName = packet.getParam("packet.attributes.name");
64
65 // if there are no components looking after this data
66 // create a new StringDataComponent for it
67 if(!_queues.containsKey(queueName)) {
68 addQueue(packet);
69 }
70
71 // try and update the component, if it doesn't like what it gets
72 // warn the user and set that this was an unsucessful display
73 try {
74 updateQueueInformation(packet);
75 } catch (DataFormatException e) {
76 Conient.addMessage("WARNING{queue frame}: " + e.getMessage());
77 displaySucessful = false;
78 }
79 return displaySucessful;
80 }
81
82 //---PRIVATE METHODS---
83
84 private void addQueue(XMLPacket packet) {
85 HashMap newQueue = new HashMap();
86 String queueName = packet.getParam("packet.attributes.name");
87 VisibleDataComponent date = new DateDataComponent("Last timestamp", "packet.attributes.date");
88 VisibleDataComponent total = new StringDataComponent("Total queued to date", "packet.queue.attributes.total");
89 newQueue.put("packet.attributes.name", new StringDataComponent("Name", "packet.attributes.name"));
90 newQueue.put("packet.queue.attributes.total", total);
91 newQueue.put("packet.attributes.date", date);
92 JPanel newQueueDisplay = new JPanel();
93 newQueueDisplay.setLayout(new BoxLayout(newQueueDisplay, BoxLayout.Y_AXIS));
94 newQueueDisplay.setBorder(new TitledBorder(new LineBorder(new Color(0, 0, 102)), queueName));
95 newQueueDisplay.add(date);
96 newQueueDisplay.add(total);
97 _queuesDisplays.put(queueName, newQueueDisplay);
98 try {
99 SwingSafeAdd task = new SwingSafeAdd(_content, newQueueDisplay);
100 SwingUtilities.invokeAndWait(task);
101 } catch (Exception e) {
102 // don't care
103 }
104 pack();
105 _queues.put(queueName, newQueue);
106 }
107
108 private void updateQueueInformation(XMLPacket packet) throws DataFormatException {
109 String queueName = packet.getParam("packet.attributes.name");
110
111 // if it was a shutdown packet, remove the display
112 if (packet.getParam("packet.attributes.shutdown") != null) {
113 // *** !!! MAY NOT BE SWING SAFE !!! ***
114 JPanel temp = (JPanel)_queuesDisplays.get(queueName);
115 temp.setVisible(false);
116 _content.remove(temp);
117 _queuesDisplays.remove(temp);
118 pack();
119
120 // else update the display
121 } else {
122 HashMap components = (HashMap) _queues.get(queueName);
123 Set packetSet = packet.getSet();
124 Iterator i = packetSet.iterator();
125 while (i.hasNext()) {
126 String dataKey = (String) i.next();
127 // if there are no components looking after this data
128 // create a new StringDataComponent for it
129 if(!components.containsKey(dataKey)) {
130 // check if its a disk drive, if it is then we need to deal with it
131 if(dataKey.startsWith("packet.queue.attributes.queue")) {
132 VisibleDataComponent queue = new StringDataComponent("Current length of " + dataKey.substring(dataKey.lastIndexOf('.') + 1), dataKey);
133 components.put(dataKey, queue);
134 try {
135 SwingSafeAdd task = new SwingSafeAdd((JPanel)_queuesDisplays.get(queueName), queue);
136 SwingUtilities.invokeAndWait(task);
137 } catch (Exception e) {
138 // don't care
139 }
140 pack();
141 }
142 // note we ignore all other attributes
143 }
144 if(components.containsKey(dataKey)) {
145 ((DataComponent) components.get(dataKey)).setValue(packet.getParam(dataKey));
146 }
147 }
148 }
149 }
150
151 //---ACCESSOR/MUTATOR METHODS---
152
153 //---ATTRIBUTES---
154
155 /**
156 * The components that we already know about
157 * connected with the attributes they care about
158 * are stored here.
159 */
160 private HashMap _queues = new HashMap();
161 private HashMap _queuesDisplays = new HashMap();
162
163 private Box _content = Box.createVerticalBox();
164
165 //---STATIC ATTRIBUTES---
166
167 }