001 /**
002 * Created by IntelliJ IDEA.
003 * User: Wei Wang
004 * Date: Mar 11, 2003
005 * Time: 7:25:53 PM
006 */
007
008 package EVolve.visualization.XYViz.ValValViz;
009
010 import EVolve.data.Element;
011 import EVolve.util.painters.*;
012 import EVolve.util.painters.shapes.Line;
013 import EVolve.visualization.AutoShapeImage;
014 import EVolve.visualization.Dimension;
015 import EVolve.Scene;
016
017 import javax.swing.*;
018 import java.awt.*;
019
020 public class AllocDensityMetricViz extends Metric{
021
022 public AllocDensityMetricViz() {
023 super();
024 }
025
026 public Dimension[] createDimension() {
027 super.createDimension();
028 Dimension[] returnVal = new Dimension[2];
029
030 returnVal[0] = xAxis;
031 returnVal[1] = yAxis;
032
033 return returnVal;
034 }
035
036 public JMenuItem[] createSelectionMenuItem() {
037 return null;
038 }
039
040 protected JPanel createConfigurationPanel() {
041 JPanel configurationPanel = new JPanel(new FlowLayout());
042 configurationPanel.add(new JLabel("Interval: "));
043
044 textInterval = new JTextField(String.valueOf(interval), 10);
045 configurationPanel.add(textInterval);
046
047 return configurationPanel;
048 }
049
050 public void preVisualize() {
051 image = new AutoShapeImage(new Line(0,0,1));
052 xMax = 0;
053 installPainter();
054 super.preVisualize();
055 }
056
057 public void receiveElement(Element element) {
058 if (element.getField()[element.getField().length-1] == Integer.MAX_VALUE)
059 return;
060
061 long time = xAxis.getField(element);
062 long x = time / interval;
063 long y = yAxis.getField(element);
064
065 countEvents(time);
066
067 if (xOffset == -1) xOffset = x;
068
069 painter.paint(image,x-xOffset,y,time);
070
071 if (time > xMax) xMax = time;
072 }
073
074 public void visualize() {
075 canvas.setName(xAxis.getName() + " (" + xMax + ")", yAxis.getName() + "(" +
076 ((AllocDensityMetricPainter)painter).getMax() + ")");
077 sort();
078 }
079
080 protected void installPainter() {
081 painter = new AllocDensityMetricPainter();
082 }
083
084 public void mouseMove(int x, int y) {
085 int X = canvas.getImageX(x);
086
087 if (image != null) {
088 float value = ((AllocDensityMetricPainter)painter).getValue(X);
089 if (value != -1)
090 Scene.setStatus("Alloc density: "+value);
091 else
092 Scene.setStatus(" ");
093 }
094
095 }
096 }