001 /** 002 * Created by IntelliJ IDEA. 003 * User: Wei Wang 004 * Date: Nov 27, 2002 005 * Time: 9:11:28 PM 006 */ 007 008 package EVolve.visualization.XYViz.ValRefViz.HotSpotViz; 009 010 import EVolve.data.*; 011 import EVolve.visualization.*; 012 import EVolve.visualization.Dimension; 013 import EVolve.util.Painters.PredictionPainter; 014 import javax.swing.*; 015 import java.awt.*; 016 017 public class PredictionViz extends HotSpotVisualization{ 018 private PredictorFactory[] factory; // predictor factories 019 private PredictorFactory selectedFactory; // predictor factory in use 020 private Predictor[] predictor; // predictors 021 private JComboBox comboPredictor; // combobox for selecting predictor factory 022 023 public PredictionViz(PredictorFactory[] factory) { 024 super(); 025 this.factory = factory; 026 } 027 028 public Dimension[] createDimension() { 029 Dimension [] returnDimension = new Dimension[3]; 030 031 xAxis = new ValueDimension(); 032 yAxis = new ReferenceDimension(); 033 zAxis = new ReferenceDimension(); 034 returnDimension[0] = xAxis; 035 returnDimension[1] = yAxis; 036 returnDimension[2] = zAxis; 037 038 return returnDimension; 039 } 040 041 protected JPanel createConfigurationPanel() { 042 configurationPanel = new JPanel(new GridLayout(2, 1, 5, 5)); 043 044 selectedFactory = factory[0]; 045 046 JPanel panelTop = new JPanel(new FlowLayout()); 047 configurationPanel.add(panelTop); 048 049 panelTop.add(new JLabel("Predictor: ")); 050 051 comboPredictor = new JComboBox(); 052 for (int i = 0; i < factory.length; i++) { 053 comboPredictor.addItem(factory[i].getName()); 054 } 055 panelTop.add(comboPredictor); 056 057 return super.createConfigurationPanel(); 058 } 059 060 public void preVisualize() { 061 predictor = new Predictor[yAxis.getMaxEntityNumber()]; 062 for (int i = 0; i < predictor.length; i++) { 063 predictor[i] = selectedFactory.createPredictor(); 064 } 065 super.preVisualize(); 066 } 067 068 public void receiveElement(Element element) { 069 if (element.getField()[element.getField().length-1] == Integer.MAX_VALUE) 070 return; 071 072 int x = xAxis.getField(element); 073 int y = yAxis.getField(element); 074 int z = zAxis.getField(element); 075 076 paint(x,y,z); 077 } 078 079 public void visualize() { 080 yAxis.addComparator(new ValueComparator("Miss", false, ((PredictionPainter)painter).getMiss())); 081 sort(); 082 } 083 084 protected void updateConfiguration() { 085 if (autoPredictorname == null) 086 selectedFactory = factory[comboPredictor.getSelectedIndex()]; 087 else { 088 for (int i=0; i < factory.length; i++) { 089 if (factory[i].getName().equals(autoPredictorname)) { 090 selectedFactory = factory[i]; 091 break; 092 } 093 } 094 } 095 096 super.updateConfiguration(); 097 } 098 099 public PredictorFactory getPredictor() { 100 return selectedFactory; 101 } 102 103 protected void installPainter() { 104 painter = new PredictionPainter(predictor); 105 } 106 }