hey, is the "graph renderer" api documented?
this is fancy
marc
|-----Original Message-----
|From: [EMAIL PROTECTED]
|[mailto:[EMAIL PROTECTED]]On Behalf Of jBoss CVS
|Development
|Sent: Friday, December 29, 2000 2:36 PM
|To: [EMAIL PROTECTED]
|Subject: [jBoss-Dev] CVS update: admin/src/org/jboss/admin/monitor/graph
|DefaultGraphRenderer.java
|
|
| User: juha
| Date: 00/12/29 14:36:25
|
| Modified: src/org/jboss/admin/monitor/graph DefaultGraphRenderer.java
| Log:
| scale the graphs to fit the view area
|
| Revision Changes Path
| 1.2 +95 -6
|admin/src/org/jboss/admin/monitor/graph/DefaultGraphRenderer.java
|
| Index: DefaultGraphRenderer.java
| ===================================================================
| RCS file:
|/products/cvs/ejboss/admin/src/org/jboss/admin/monitor/graph/Defaul
|tGraphRenderer.java,v
| retrieving revision 1.1
| retrieving revision 1.2
| diff -u -r1.1 -r1.2
| --- DefaultGraphRenderer.java 2000/12/17 20:11:23 1.1
| +++ DefaultGraphRenderer.java 2000/12/29 22:36:25 1.2
| @@ -10,7 +10,10 @@
|
| import java.util.ArrayList;
| import java.util.Collections;
| +import java.util.Comparator;
| import java.util.Iterator;
| +import java.util.NoSuchElementException;
| +import java.io.Serializable;
|
| import javax.swing.JPanel;
|
| @@ -29,14 +32,25 @@
|
| // superclass JComponent implements Serializable
|
| + /** Horizontal "step" on the grid between plot points, in pixels */
| private int horzPlotStep = 4;
|
| + /** Gap between the vertical grid lines, in pixels */
| private int gridGapWidth = 10;
| + /** Gap between the horizontal grid lines, in pixels */
| private int gridGapHeight = 10;
| -
| +
| + /** The color used for drawing the background grid */
| private Color gridLineColor = new Color(0x007700);
| + /** The color used for drawing the plot lines */
| private Color plotColor = Color.green;
|
| + /**
| + * The current maximum value plotted on the grid. This value is the
| + * non-scaled value of a plot point at the top of the grid.
| + */
| + private double max = 1.0d;
| +
| private ArrayList points = new ArrayList();
|
|
| @@ -67,18 +81,36 @@
| */
|
| public Component getGraphRendererObject(GraphView graph) {
| -
| - points = new ArrayList(graph.getModel().getPlotPoints());
|
| - Collections.reverse(points);
| + try {
| + points = new ArrayList(graph.getModel().getPlotPoints());
| +
| + Point maxPoint = (Point)Collections.max(points, new
|PointComparator());
| +
| + if (!isWithinScale(maxPoint.getY()))
| + rescale(maxPoint.getY());
| +
| + Collections.reverse(points);
| + }
| + catch (NoSuchElementException ignored) {
| + // collection was empty, just ignore
| + }
| + catch (ClassCastException e) {
| + System.err.println(e);
| + e.printStackTrace();
| + }
|
| return this;
| }
|
| public void valueAppended(GraphModelEvent evt) {
|
| - points.add(0, new Point(points.size(), (int)evt.getValue()));
| + double value = evt.getValue();
| + points.add(0, new Point(points.size(), (int)value));
|
| + if (!isWithinScale(value))
| + rescale(value);
| +
| repaint();
| }
|
| @@ -90,6 +122,13 @@
|
|*************************************************************************
| */
|
| + public void addNotify() {
| + super.addNotify();
| +
| + //Insets insets = getInsets();
| + //this.max = getHeight() - insets.top - insets.bottom;
| + }
| +
| public void paintComponent(Graphics g) {
|
| // draw background first
| @@ -200,9 +239,59 @@
|
| while ((it.hasNext()) && (x >= 0)) {
| Point p = (Point)it.next();
| - g.drawLine(x, y, (x -= horzPlotStep), (y = height - p.y));
| + g.drawLine(x, y, (x -= horzPlotStep), (y = height -
|(int)(p.y * height / max)));
| --x;
| }
| }
| +
| +
| + private boolean isWithinScale(Double value) {
| + return isWithinScale(value.doubleValue());
| + }
| +
| + private boolean isWithinScale(double value) {
| +
| + if (value < 0.9 * max)
| + return true;
| +
| + return false;
| + }
| +
| + private void rescale(double value) {
| +
| + max = 1.4 * value;
| +
| + }
| +
| +/*
| +
|*************************************************************************
| + *
| + * INNER CLASSES
| + *
| +
|*************************************************************************
| + */
| +
| + private class PointComparator implements Comparator, Serializable {
| +
| + /**
| + * ...
| + *
| + * @exception ClassCastException - if the arguments'
|types prevent them
| + * from being compared by this Comparator.
| + */
| + public int compare(Object a, Object b) {
| + Point pa = (Point)a;
| + Point pb = (Point)b;
| +
| + if (pa.getY() == pb.getY())
| + return 0;
| +
| + else if (pa.getY() < pb.getY())
| + return -1;
| +
| + else return 1;
| + }
| + }
| +
| }
|
|
|
|
|
|