KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > sape > carbon > services > console > AttributeGraph


1 package org.sape.carbon.services.console;
2
3 import java.awt.BorderLayout JavaDoc;
4 import java.awt.Color JavaDoc;
5 import java.awt.geom.Point2D JavaDoc;
6
7 import javax.management.MBeanAttributeInfo JavaDoc;
8 import javax.management.MBeanServer JavaDoc;
9 import javax.management.ObjectName JavaDoc;
10
11 import org.sape.carbon.services.swing.graph.GraphCanvas;
12 import org.sape.carbon.services.swing.ui.VerticalLabelUI;
13
14 /**
15  *
16  * Copyright 2002 Sapient
17  * @since carbon 1.0
18  * @author Greg Hinkle, January 2002
19  * @version $Revision: 1.3 $($Author: ghinkl $ / $Date: 2003/04/04 01:11:49 $)
20  */

21 public class AttributeGraph extends javax.swing.JFrame JavaDoc implements Runnable JavaDoc {
22     
23     private GraphCanvas graphCanvas;
24     private ObjectName JavaDoc objectName;
25     private MBeanAttributeInfo JavaDoc[] attributeInfo;
26     private MBeanServer JavaDoc server;
27     
28     private boolean isRunning = true;
29     
30     private static Color JavaDoc[] COLORS =
31         new Color JavaDoc[] {
32             Color.red,
33             Color.blue,
34             Color.black,
35             Color.orange,
36             Color.pink,
37             Color.magenta };
38     
39     
40     public AttributeGraph(ObjectName JavaDoc objectName, MBeanAttributeInfo JavaDoc attributeInfo, MBeanServer JavaDoc server) {
41         this(objectName, new MBeanAttributeInfo JavaDoc[] { attributeInfo }, server);
42     }
43     /** Creates new form AttributeGraph */
44     public AttributeGraph(ObjectName JavaDoc objectName, MBeanAttributeInfo JavaDoc[] attributeInfo, MBeanServer JavaDoc server) {
45         this.objectName = objectName;
46         this.attributeInfo = attributeInfo;
47         this.server = server;
48         
49         initComponents();
50         
51         this.sleepLabel.setUI(new VerticalLabelUI(false));
52         
53         
54         this.graphCanvas = new GraphCanvas();
55         
56         for (int i = 0; i < this.attributeInfo.length; i++) {
57             this.graphCanvas.addTrack(this.attributeInfo[i].getName(), AttributeGraph.COLORS[i % COLORS.length]);
58         }
59         this.setTitle("Graph of: " + this.objectName.toString());
60         
61         this.getContentPane().add(this.graphCanvas, BorderLayout.CENTER);
62     
63         Thread JavaDoc runner = new Thread JavaDoc(this);
64         runner.start();
65         
66     }
67     
68     public void run() {
69         
70         long time = 0L;
71         
72         while (isRunning) {
73             try {
74                 
75                 for (int i = 0; i < this.attributeInfo.length; i++) {
76                     String JavaDoc attributeName = this.attributeInfo[i].getName();
77                     Object JavaDoc value = this.server.getAttribute(this.objectName,attributeName);
78                 
79                     Number JavaDoc num = (Number JavaDoc) value;
80
81                     Point2D JavaDoc pt = new Point2D.Double JavaDoc(time, num.doubleValue());
82                     this.graphCanvas.addPoint(attributeName,pt);
83
84                 }
85                 time++;
86                 
87                 if (time > 100)
88                     this.graphCanvas.translate(1,0);
89
90                 if ((time % 2) == 0)
91                     this.graphCanvas.verticalBound();
92
93                 this.graphCanvas.repaint();
94
95                 long sleep = this.sleepSlider.getValue();
96                 try {
97                     Thread.currentThread().sleep(sleep);
98                 } catch (InterruptedException JavaDoc ie) { /* who cares */ }
99             } catch (Exception JavaDoc e) {
100                 e.printStackTrace();
101             }
102         }
103         
104     }
105     
106     
107     /** This method is called from within the constructor to
108      * initialize the form.
109      * WARNING: Do NOT modify this code. The content of this method is
110      * always regenerated by the Form Editor.
111      */

112     private void initComponents() {//GEN-BEGIN:initComponents
113
jPanel1 = new javax.swing.JPanel JavaDoc();
114         jButton1 = new javax.swing.JButton JavaDoc();
115         jPanel2 = new javax.swing.JPanel JavaDoc();
116         sleepLabel = new javax.swing.JLabel JavaDoc();
117         sleepSlider = new javax.swing.JSlider JavaDoc();
118
119         addWindowListener(new java.awt.event.WindowAdapter JavaDoc() {
120             public void windowClosing(java.awt.event.WindowEvent JavaDoc evt) {
121                 exitForm(evt);
122             }
123         });
124
125         jButton1.setText("Close");
126         jButton1.addActionListener(new java.awt.event.ActionListener JavaDoc() {
127             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
128                 jButton1ActionPerformed(evt);
129             }
130         });
131
132         jPanel1.add(jButton1);
133
134         getContentPane().add(jPanel1, java.awt.BorderLayout.SOUTH);
135
136         sleepLabel.setFont(new java.awt.Font JavaDoc("Dialog", 0, 12));
137         sleepLabel.setText("Update delay (milleseconds)");
138         jPanel2.add(sleepLabel);
139
140         sleepSlider.setFont(new java.awt.Font JavaDoc("Dialog", 0, 10));
141         sleepSlider.setMajorTickSpacing(400);
142         sleepSlider.setMaximum(2050);
143         sleepSlider.setMinimum(50);
144         sleepSlider.setOrientation(javax.swing.JSlider.VERTICAL);
145         sleepSlider.setPaintLabels(true);
146         sleepSlider.setPaintTicks(true);
147         sleepSlider.setToolTipText("Choose the number of milleseconds between updates");
148         sleepSlider.setValue(500);
149         jPanel2.add(sleepSlider);
150
151         getContentPane().add(jPanel2, java.awt.BorderLayout.EAST);
152
153         pack();
154         java.awt.Dimension JavaDoc screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
155         setSize(new java.awt.Dimension JavaDoc(576, 305));
156         setLocation((screenSize.width-576)/2,(screenSize.height-305)/2);
157     }//GEN-END:initComponents
158

159     private void jButton1ActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButton1ActionPerformed
160
// Add your handling code here:
161
this.isRunning = false;
162         this.setVisible(false);
163         this.dispose();
164         
165     }//GEN-LAST:event_jButton1ActionPerformed
166

167     /** Exit the Application */
168     private void exitForm(java.awt.event.WindowEvent JavaDoc evt) {//GEN-FIRST:event_exitForm
169
this.isRunning = false;
170     }//GEN-LAST:event_exitForm
171

172     /**
173      * @param args the command line arguments
174      */

175     public static void main(String JavaDoc args[]) {
176         //new AttributeGraph().show();
177
}
178     
179     
180     // Variables declaration - do not modify//GEN-BEGIN:variables
181
private javax.swing.JButton JavaDoc jButton1;
182     private javax.swing.JLabel JavaDoc sleepLabel;
183     private javax.swing.JPanel JavaDoc jPanel2;
184     private javax.swing.JPanel JavaDoc jPanel1;
185     private javax.swing.JSlider JavaDoc sleepSlider;
186     // End of variables declaration//GEN-END:variables
187

188 }
189
Popular Tags