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 }