001 /** 002 * Created by IntelliJ IDEA. 003 * User: Wei Wang 004 * Date: Nov 30, 2002 005 * Time: 2:11:24 PM 006 */ 007 008 package EVolve.visualization.XYViz.ValValViz; 009 010 import EVolve.visualization.XYViz.XYVisualization; 011 import EVolve.visualization.*; 012 import EVolve.visualization.Dimension; 013 import EVolve.util.VizInfo; 014 import EVolve.data.ElementDefinition; 015 import EVolve.data.Selection; 016 import EVolve.Scene; 017 018 import javax.swing.*; 019 import java.util.HashMap; 020 import java.util.ArrayList; 021 022 public abstract class ValueValueVisualization extends XYVisualization{ 023 protected ValueDimension xAxis; 024 protected ReferenceDimension zAxis; // use to decide color of a dot 025 protected Dimension internalDimension[]; 026 protected String[] dataFilterName; 027 protected String subject; 028 protected int subjectIndex; 029 protected int beginCall, endCall, start; 030 protected ArrayList eventCounter; 031 032 public Dimension[] createDimension() { 033 Dimension [] returnDimension = new Dimension[2]; 034 035 xAxis = new ValueDimension(); 036 zAxis = new ReferenceDimension(); 037 038 returnDimension[0] = xAxis; 039 returnDimension[1] = xAxis; 040 041 createInternalDimension(); 042 043 return returnDimension; 044 } 045 046 public ReferenceDimension getLinkableDimension(int dim) { 047 return null; 048 } 049 050 public void sort() { 051 ((AxesPanel)panel).setImage(image.getImage());// .getSortedImage(null, null).getImage()); 052 panel.repaint(); 053 enableBrowseSourceMenu(); 054 } 055 056 public void preVisualize() { 057 eventCounter = new ArrayList(); 058 xOffset = -1; 059 } 060 061 public HashMap getCurrentConfigure() { 062 HashMap configure = super.getCurrentConfigure(); 063 064 VizInfo vizInfo = new VizInfo(); 065 vizInfo.setFactory((VisualizationFactory)configure.get("Factory")); 066 vizInfo.setSubject((ElementDefinition)configure.get("Subject")); 067 068 String[] dimensionDefs = new String[2]; 069 dimensionDefs[0] = xAxis.getName() ; 070 dimensionDefs[1] = zAxis.getName() ; 071 configure.put("Dimension",vizInfo.createDimension(dimensionDefs)); 072 073 return configure; 074 } 075 076 public void autoUpdateConfiguration(HashMap config) { 077 super.autoUpdateConfiguration(config); 078 if (config.get("BeginCall")!=null) { 079 beginCall = ((Integer)(config.get("BeginCall"))).intValue(); 080 } 081 if (config.get("EndCall")!=null) { 082 endCall = ((Integer)(config.get("EndCall"))).intValue(); 083 } 084 } 085 086 protected void updateConfiguration() { 087 for (int i=0; i<elementDefinition.length; i++) { 088 if (elementDefinition[i].getName().equals(subject)) { 089 subjectIndex = i; 090 subjectDefinition = elementDefinition[i]; 091 } 092 } 093 094 for (int i=0; i<dataFilterName.length; i++) { 095 for (int j=0; j<dataFilter[subjectIndex].length; j++) { 096 for (int k=0; k<dataFilter[subjectIndex][j].length;k++) { 097 if (dataFilter[subjectIndex][j][k].getName().equals(dataFilterName[i])) { 098 internalDimension[i].setDataFilter(dataFilter[subjectIndex][j][k]); 099 j = dataFilter[subjectIndex].length; 100 break; 101 } 102 } 103 } 104 } 105 super.updateConfiguration(); 106 } 107 108 public void updateMenu() { 109 super.updateMenu(); 110 111 MenuElement[] menus = popup.getSubElements(); 112 String [] toBeDeleted = {"Sort"}; 113 114 for (int i=0; i<toBeDeleted.length; i++) { 115 for (int j=0; j<menus.length; j++) { 116 if (((JMenuItem)menus[j]).getText().indexOf(toBeDeleted[i]) != -1) 117 popup.remove(j); 118 } 119 } 120 } 121 122 private void createInternalDimension() { 123 internalDimension = new Dimension[3]; 124 125 threadFilter = new ReferenceDimension(); 126 127 internalDimension[0] = xAxis; 128 internalDimension[1] = zAxis; 129 internalDimension[2] = threadFilter; 130 } 131 132 protected void getSelection() { 133 Selection[] selection = Scene.getFilter().getSelection(); 134 135 if (selection.length != 0) { 136 beginCall = 0; 137 endCall = Integer.MAX_VALUE/2; 138 } 139 } 140 141 protected void countEvents(int x) { 142 while (x/Math.abs(interval) >= eventCounter.size()) { 143 eventCounter.add(new Integer(Scene.getEventCounter())); 144 } 145 } 146 147 protected String getEntityUnderMouse() { 148 return null; 149 } 150 }