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 EVolve.visualization.*; 011 import EVolve.visualization.Dimension; 012 import EVolve.data.*; 013 import EVolve.util.VizInfo; 014 import EVolve.util.Painters.CorrelationPainter; 015 import javax.swing.*; 016 import java.util.HashMap; 017 import java.awt.event.*; 018 019 public class CorrelationViz extends ReferenceReferenceVisualization{ 020 private int valueMax; 021 private JMenuItem itemSelectX, itemSelectY, itemSelectAllX, itemSelectAllY; 022 private static JMenuItem selectionMenu[] = null; 023 024 public Dimension[] createDimension() { 025 Dimension[] returnVal = new Dimension[3]; 026 Dimension[] temp = super.createDimension(); 027 028 zAxis = new ValueDimension(); 029 030 returnVal[0] = temp[0]; 031 returnVal[1] = temp[1]; 032 returnVal[2] = zAxis; 033 034 return returnVal; 035 } 036 037 public void preVisualize() { 038 valueMax = 0; 039 image = new AutoImage(); 040 value = new int[xAxis.getMaxEntityNumber()][yAxis.getMaxEntityNumber()]; 041 for (int i = 0; i < value.length; i++) { 042 for (int j = 0; j < value[i].length; j++) { 043 value[i][j] = 0; 044 } 045 } 046 installPainter(); 047 } 048 049 public void receiveElement(Element element) { 050 if (element.getField()[element.getField().length-1] == Integer.MAX_VALUE) 051 return; 052 value[xAxis.getField(element)][yAxis.getField(element)] += zAxis.getField(element); 053 054 if (value[xAxis.getField(element)][yAxis.getField(element)] > valueMax) { 055 valueMax = value[xAxis.getField(element)][yAxis.getField(element)]; 056 } 057 } 058 059 public void visualize() { 060 painter.paint(image,-1,-1,valueMax); 061 sort(); 062 } 063 064 public HashMap getCurrentConfigure() { 065 HashMap configure = super.getCurrentConfigure(); 066 067 VizInfo vizInfo = new VizInfo(); 068 vizInfo.setFactory((VisualizationFactory)configure.get("Factory")); 069 vizInfo.setSubject((ElementDefinition)configure.get("Subject")); 070 071 String[] dimensionDefs = new String[3]; 072 dimensionDefs[0] = xAxis.getName() ; 073 dimensionDefs[1] = yAxis.getName() ; 074 dimensionDefs[2] = zAxis.getName() ; 075 configure.put("Dimension",vizInfo.createDimension(dimensionDefs)); 076 077 return configure; 078 } 079 080 protected void updateConfiguration() { 081 info[0] = xAxis.getName() +": "; 082 info[1] = " " + yAxis.getName() +": "; 083 info[2] = " Correlation: "; 084 085 super.updateConfiguration(); 086 } 087 088 public int getxMax() { 089 return xAxis.getEntityNumber(); 090 } 091 092 protected void changeOrientation() { 093 int newValue[][] = new int[value[0].length][value.length]; 094 for (int i = 0; i < newValue.length; i++) { 095 for (int j = 0; j < newValue[i].length ; j++) { 096 newValue[i][j] = value[newValue[i].length - j - 1][newValue.length - i - 1]; 097 } 098 } 099 value = newValue; 100 super.changeOrientation(); 101 } 102 103 protected void installPainter() { 104 painter = new CorrelationPainter(value); 105 } 106 107 public JMenuItem[] createSelectionMenuItem() { 108 if (selectionMenu != null) return selectionMenu; 109 110 itemSelectX = new JCheckBoxMenuItem("Occurred Entities on X Axis"); 111 itemSelectX.setMnemonic(KeyEvent.VK_X); 112 itemSelectX.addActionListener(new ActionListener() { 113 public void actionPerformed(ActionEvent e) { 114 boolean selected = itemSelectX.isSelected(); 115 SELECT_OPTION = switchOption(selected, SELECT_OPTION, SELECT_X_AXIS); 116 117 if (itemSelectAllX.isSelected() && selected) { 118 itemSelectAllX.setSelected(false); 119 SELECT_OPTION = switchOption(false,SELECT_OPTION,SELECT_ALL_X_AXIS); 120 } 121 } 122 }); 123 itemSelectX.setSelected(false); 124 125 itemSelectAllX = new JCheckBoxMenuItem("All Entities on X Axis"); 126 itemSelectAllX.setMnemonic(KeyEvent.VK_A); 127 itemSelectAllX.addActionListener(new ActionListener() { 128 public void actionPerformed(ActionEvent e) { 129 boolean selected = itemSelectAllX.isSelected(); 130 SELECT_OPTION = switchOption(selected,SELECT_OPTION,SELECT_ALL_X_AXIS); 131 132 if (itemSelectX.isSelected() && selected) { 133 itemSelectX.setSelected(false); 134 SELECT_OPTION = switchOption(false,SELECT_OPTION,SELECT_X_AXIS); 135 } 136 } 137 }); 138 itemSelectAllX.setSelected(true); 139 140 itemSelectY = new JCheckBoxMenuItem("Occurred Entities on Y Axis"); 141 itemSelectY.setMnemonic(KeyEvent.VK_Y); 142 itemSelectY.addActionListener(new ActionListener() { 143 public void actionPerformed(ActionEvent e) { 144 boolean selected = itemSelectY.isSelected(); 145 SELECT_OPTION = switchOption(selected, SELECT_OPTION, SELECT_Y_AXIS); 146 147 if (itemSelectAllY.isSelected() && selected) { 148 itemSelectAllY.setSelected(false); 149 SELECT_OPTION = switchOption(false,SELECT_OPTION, SELECT_ALL_Y_AXIS); 150 } 151 } 152 }); 153 itemSelectY.setSelected(false); 154 155 itemSelectAllY = new JCheckBoxMenuItem("All Entities on Y Axis"); 156 itemSelectAllY.setMnemonic(KeyEvent.VK_E); 157 itemSelectAllY.addActionListener(new ActionListener() { 158 public void actionPerformed(ActionEvent e) { 159 boolean selected = itemSelectAllY.isSelected(); 160 SELECT_OPTION = switchOption(selected,SELECT_OPTION,SELECT_ALL_Y_AXIS); 161 162 if (itemSelectY.isSelected() && selected) { 163 itemSelectY.setSelected(false); 164 SELECT_OPTION = switchOption(false,SELECT_OPTION,SELECT_Y_AXIS); 165 } 166 } 167 }); 168 itemSelectAllY.setSelected(true); 169 170 selectionMenu = new JMenuItem[4]; 171 selectionMenu[0] = itemSelectX; 172 selectionMenu[1] = itemSelectAllX; 173 selectionMenu[2] = itemSelectY; 174 selectionMenu[3] = itemSelectAllY; 175 176 return selectionMenu; 177 } 178 179 }