never mind, sorry I woke you up...
(3 am ?)
marc
|Api? Documented? Huh?
|
|-- Juha
|
|
|On Thu, 11 Jan 2001, marc fleury wrote:
|
|> 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;
|> | + }
|> | + }
|> | +
|> | }
|> |
|> |
|> |
|> |
|> |
|> |
|>
|>
|
|
|