001 /** 002 * Created by IntelliJ IDEA. 003 * User: Wei Wang 004 * Date: Nov 28, 2002 005 * Time: 11:50:25 PM 006 */ 007 008 package EVolve.visualization.XYViz.RefRefViz; 009 010 import java.awt.event.ActionEvent; 011 import java.awt.event.ActionListener; 012 import java.awt.event.KeyEvent; 013 014 import javax.swing.JCheckBox; 015 016 import EVolve.data.Element; 017 import EVolve.util.painters.CorrelationPainter; 018 import EVolve.util.xmlutils.datastructures.SerializedVisualization; 019 import EVolve.visualization.AutoImage; 020 import EVolve.visualization.Dimension; 021 import EVolve.visualization.ValueDimension; 022 023 public class CorrelationViz extends ReferenceReferenceVisualization{ 024 private int valueMax; 025 private JCheckBox chkSelectX, chkSelectY, chkSelectAllX, chkSelectAllY; 026 private static JCheckBox selectionOptions[] = null; 027 028 public Dimension[] createDimension() { 029 Dimension[] returnVal = new Dimension[3]; 030 Dimension[] temp = super.createDimension(); 031 032 zAxis = new ValueDimension(); 033 034 returnVal[0] = temp[0]; 035 returnVal[1] = temp[1]; 036 returnVal[2] = zAxis; 037 038 return returnVal; 039 } 040 041 public void preVisualize() { 042 super.preVisualize(); 043 valueMax = 0; 044 image = new AutoImage(); 045 value = new int[xAxis.getMaxEntityNumber()][yAxis.getMaxEntityNumber()]; 046 for (int i = 0; i < value.length; i++) { 047 for (int j = 0; j < value[i].length; j++) { 048 value[i][j] = 0; 049 } 050 } 051 installPainter(); 052 } 053 054 public void receiveElement(Element element) { 055 if (element.isOptional()) return; 056 057 value[(int)xAxis.getField(element)][(int)yAxis.getField(element)] += zAxis.getField(element); 058 059 if (value[(int)xAxis.getField(element)][(int)yAxis.getField(element)] > valueMax) { 060 valueMax = value[(int)xAxis.getField(element)][(int)yAxis.getField(element)]; 061 } 062 } 063 064 public void visualize() { 065 painter.paint(image,-1,-1,valueMax); 066 xAxis.selectComparator(comboSortSchemes[0].getSelectedItem().toString()); 067 yAxis.selectComparator(comboSortSchemes[1].getSelectedItem().toString()); 068 sort(); 069 } 070 071 public SerializedVisualization getCurrentConfiguration() { 072 073 SerializedVisualization data = super.getCurrentConfiguration(); 074 data.xAxis = xAxis.getName(); 075 data.xAxisSortScheme = comboSortSchemes[0].getSelectedItem().toString(); 076 //data.xAxisSortScheme = xAxis.getSelectedComparatorName(); 077 data.yAxis = yAxis.getName(); 078 data.yAxisSortScheme = comboSortSchemes[1].getSelectedItem().toString(); 079 //data.yAxisSortScheme = yAxis.getSelectedComparatorName(); 080 data.zAxis = zAxis.getName(); 081 return data; 082 } 083 084 protected void updateConfiguration() { 085 info[0] = xAxis.getName() +": "; 086 info[1] = " " + yAxis.getName() +": "; 087 info[2] = " Correlation: "; 088 089 super.updateConfiguration(); 090 } 091 092 public long getxMax() { 093 return xAxis.getEntityNumber(); 094 } 095 096 protected void changeOrientation() { 097 int newValue[][] = new int[value[0].length][value.length]; 098 for (int i = 0; i < newValue.length; i++) { 099 for (int j = 0; j < newValue[i].length ; j++) { 100 newValue[i][j] = value[newValue[i].length - j - 1][newValue.length - i - 1]; 101 } 102 } 103 value = newValue; 104 super.changeOrientation(); 105 } 106 107 protected void installPainter() { 108 painter = new CorrelationPainter(value); 109 } 110 111 public JCheckBox[] createSelectionOptions() { 112 if (selectionOptions != null) return selectionOptions; 113 114 chkSelectX = new JCheckBox("Occurred Entities on X Axis"); 115 chkSelectX.setMnemonic(KeyEvent.VK_X); 116 chkSelectX.addActionListener(new ActionListener() { 117 public void actionPerformed(ActionEvent e) { 118 boolean selected = chkSelectX.isSelected(); 119 SELECT_OPTION = switchOption(selected, SELECT_OPTION, SELECT_X_AXIS); 120 121 if (chkSelectAllX.isSelected() && selected) { 122 chkSelectAllX.setSelected(false); 123 SELECT_OPTION = switchOption(false,SELECT_OPTION,SELECT_ALL_X_AXIS); 124 } 125 } 126 }); 127 chkSelectX.setSelected(false); 128 129 chkSelectAllX = new JCheckBox("All Entities on X Axis"); 130 chkSelectAllX.setMnemonic(KeyEvent.VK_A); 131 chkSelectAllX.addActionListener(new ActionListener() { 132 public void actionPerformed(ActionEvent e) { 133 boolean selected = chkSelectAllX.isSelected(); 134 SELECT_OPTION = switchOption(selected,SELECT_OPTION,SELECT_ALL_X_AXIS); 135 136 if (chkSelectX.isSelected() && selected) { 137 chkSelectX.setSelected(false); 138 SELECT_OPTION = switchOption(false,SELECT_OPTION,SELECT_X_AXIS); 139 } 140 } 141 }); 142 chkSelectAllX.setSelected(true); 143 144 chkSelectY = new JCheckBox("Occurred Entities on Y Axis"); 145 chkSelectY.setMnemonic(KeyEvent.VK_Y); 146 chkSelectY.addActionListener(new ActionListener() { 147 public void actionPerformed(ActionEvent e) { 148 boolean selected = chkSelectY.isSelected(); 149 SELECT_OPTION = switchOption(selected, SELECT_OPTION, SELECT_Y_AXIS); 150 151 if (chkSelectAllY.isSelected() && selected) { 152 chkSelectAllY.setSelected(false); 153 SELECT_OPTION = switchOption(false,SELECT_OPTION, SELECT_ALL_Y_AXIS); 154 } 155 } 156 }); 157 chkSelectY.setSelected(false); 158 159 chkSelectAllY = new JCheckBox("All Entities on Y Axis"); 160 chkSelectAllY.setMnemonic(KeyEvent.VK_E); 161 chkSelectAllY.addActionListener(new ActionListener() { 162 public void actionPerformed(ActionEvent e) { 163 boolean selected = chkSelectAllY.isSelected(); 164 SELECT_OPTION = switchOption(selected,SELECT_OPTION,SELECT_ALL_Y_AXIS); 165 166 if (chkSelectY.isSelected() && selected) { 167 chkSelectY.setSelected(false); 168 SELECT_OPTION = switchOption(false,SELECT_OPTION,SELECT_Y_AXIS); 169 } 170 } 171 }); 172 chkSelectAllY.setSelected(true); 173 174 selectionOptions = new JCheckBox[4]; 175 selectionOptions[0] = chkSelectX; 176 selectionOptions[1] = chkSelectAllX; 177 selectionOptions[2] = chkSelectY; 178 selectionOptions[3] = chkSelectAllY; 179 180 return selectionOptions; 181 } 182 183 184 }