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

# User Rev Content
1 ajm 1.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 ajm 1.4 * @version $Id: QueueFrame.java,v 1.3 2001/02/26 01:05:10 ajm4 Exp $
17 ajm 1.1 */
18     public class QueueFrame extends JFrame {
19    
20     //---FINAL ATTRIBUTES---
21    
22     /**
23     * The current CVS revision of this class
24     */
25 ajm 1.4 public final String REVISION = "$Revision: 1.3 $";
26 ajm 1.1
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 ajm 1.4 setIconImage((new ImageIcon("./resources/server.gif")).getImage());
47 ajm 1.1 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 ajm 1.3
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 ajm 1.1 }
142 ajm 1.3 // note we ignore all other attributes
143     }
144     if(components.containsKey(dataKey)) {
145     ((DataComponent) components.get(dataKey)).setValue(packet.getParam(dataKey));
146 ajm 1.1 }
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     }