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    }