001 /** 002 * Created by IntelliJ IDEA. 003 * User: Wei Wang 004 * Date: Nov 28, 2002 005 * Time: 12:45:22 AM 006 */ 007 008 package EVolve.visualization.XYViz.RefRefViz; 009 010 import EVolve.visualization.XYViz.XYVisualization; 011 import EVolve.visualization.*; 012 import EVolve.visualization.Dimension; 013 import EVolve.Scene; 014 import java.util.ArrayList; 015 016 public abstract class ReferenceReferenceVisualization extends XYVisualization{ 017 protected ReferenceDimension xAxis, yAxis; 018 protected ValueDimension zAxis; // used as correlation 019 protected int[][] value; // value of the points 020 protected String[] info; 021 protected static int SELECT_OPTION; 022 023 024 public Dimension[] createDimension() { 025 value = null; 026 xAxis = new ReferenceDimension(); 027 yAxis = new ReferenceDimension(); 028 zAxis = null; 029 info = new String[3]; 030 031 Dimension[] returnVal = new Dimension[2]; 032 returnVal[0] = xAxis; 033 returnVal[1] = yAxis; 034 035 SELECT_OPTION = 0x0011; 036 return returnVal; 037 } 038 039 protected void updateConfiguration() { 040 ((AxesPanel)panel).setName(xAxis.getName(), yAxis.getName()); 041 super.updateConfiguration(); 042 } 043 044 public ReferenceDimension getLinkableDimension(int dim) { 045 if (dim > 1) 046 return null; 047 return (ReferenceDimension)dimension[dim]; 048 } 049 050 public void makeSelection() { 051 if (SELECT_OPTION == 0) { 052 Scene.showErrorMessage("Nothing will be selected, please check Selection menu."); 053 return; 054 } 055 056 int x1 = ((AxesPanel)panel).getStartX(); 057 int x2 = ((AxesPanel)panel).getEndX(); 058 int y1 = ((AxesPanel)panel).getEndY(); 059 int y2 = ((AxesPanel)panel).getStartY(); 060 061 if (x1 < 0) { 062 x1 = 0; 063 } 064 065 if (x2 > (xAxis.getEntityNumber() - 1)) { 066 x2 = xAxis.getEntityNumber() - 1; 067 } 068 069 if (y1 < 0) { 070 y1 = 0; 071 } 072 073 if (y2 > (yAxis.getEntityNumber() - 1)) { 074 y2 = yAxis.getEntityNumber() - 1; 075 } 076 077 int[] selection = null; 078 switch (SELECT_OPTION & 0xf0f0) { 079 case 0x1000: // select occurred entities on x axis 080 ArrayList idList = new ArrayList(); 081 for (int i=x1; i<=x2; i++) { 082 for (int j=y1; j<=y2; j++) { 083 if (image.getSortedColor(xAxis,yAxis,i,j) != null) 084 idList.add(new Integer(i)); 085 } 086 } 087 selection = new int[idList.size()]; 088 for (int i=0; i<idList.size(); i++) 089 selection[i] = ((Integer)idList.get(i)).intValue(); 090 xAxis.makeSelection(selection); 091 break; 092 case 0x0010: // select all entities on x axis 093 selection = new int[x2-x1+1]; 094 for (int i=x1; i<=x2; i++) 095 selection[i-x1] = i; 096 xAxis.makeSelection(selection); 097 break; 098 case 0x0000: // x axis is not seletcted 099 /*x1 = 0; 100 x2 = xAxis.getEntityNumber() - 1; 101 selection = new int[x2-x1+1]; 102 for (int i=0; i<=x2; i++) 103 selection[i] = i;*/ 104 break; 105 } 106 107 switch (SELECT_OPTION & 0x0f0f) { 108 case 0x0100: //select occurred entities 109 ArrayList idList = new ArrayList(); 110 for (int i=x1; i<=x2; i++) { 111 for (int j=y1; j<=y2; j++) { 112 if (image.getSortedColor(xAxis,yAxis,i,j) != null) 113 idList.add(new Integer(i)); 114 } 115 } 116 selection = new int[idList.size()]; 117 for (int i=0; i<idList.size(); i++) 118 selection[i] = ((Integer)idList.get(i)).intValue(); 119 yAxis.makeSelection(selection); 120 break; 121 case 0x0001: // select all entities 122 selection = new int[y2-y1+1]; 123 for (int i=y1; i<=y2; i++) 124 selection[i-y1] = i; 125 yAxis.makeSelection(selection); 126 break; 127 case 0x0000: 128 /*y1 = 0; 129 y2 = yAxis.getEntityNumber() - 1; 130 selection = new int[y2-y1+1]; 131 for (int i=0; i<=y2; i++) 132 selection[i] = i;*/ 133 break; 134 } 135 136 } 137 138 /** 139 * Mouse moved. 140 * 141 * @param x position on X-axis 142 * @param y position on Y-axis 143 */ 144 protected void mouseMove(int x, int y) { 145 int X = ((AxesPanel)panel).getImageX(x); 146 int Y = ((AxesPanel)panel).getImageY(y); 147 148 if ((X >= 0) && (X < xAxis.getEntityNumber()) && (Y >= 0) && (Y < yAxis.getEntityNumber())) { 149 150 if (shift_pressed && (image.getSortedColor(xAxis,yAxis,X,Y)==null)) 151 Scene.setStatus(" "); 152 else { 153 if (value == null) 154 Scene.setStatus(info[0] + xAxis.getEntity(X).getName() + info[1] + 155 yAxis.getEntity(Y).getName() + info[2]); 156 else { 157 Scene.setStatus(info[0] + xAxis.getEntity(X).getName() + info[1] + 158 yAxis.getEntity(Y).getName() + info[2] + value[xAxis.getEntity(X).getId()][yAxis.getEntity(Y).getId()]); 159 } 160 } 161 } else { 162 Scene.setStatus(" "); 163 } 164 } 165 166 public void sort() { 167 magnifier.setAxises(xAxis,yAxis); 168 ((AxesPanel)panel).setName(xAxis.getName() + " (" + xAxis.getEntityNumber() + 169 ", " + xAxis.getSelectedComparatorName() + ")", 170 yAxis.getName() + " (" + yAxis.getEntityNumber() + 171 ", " + yAxis.getSelectedComparatorName() + ")"); 172 ((AxesPanel)panel).setImage(image.getSortedImage(xAxis, yAxis).getImage()); 173 panel.repaint(); 174 enableBrowseSourceMenu(); 175 } 176 177 protected void changeOrientation() { 178 super.changeOrientation(); 179 ReferenceDimension temp = xAxis; 180 xAxis = yAxis; 181 yAxis = temp; 182 String tempInfo = info[0]; 183 info[0] = info[1]; 184 info[1] = tempInfo; 185 sort(); 186 } 187 188 public int[][] getValue() { 189 return value; 190 } 191 192 public void setValue(int[][] newValue) { 193 value = newValue; 194 } 195 196 protected String getEntityUnderMouse() { 197 return null; 198 } 199 }