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;
> | + }
> | + }
> | +
> | }
> |
> |
> |
> |
> |
> |
>
>