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 }