001    /*
002     * Created by IntelliJ IDEA.
003     * User: Wei Wang
004     * Date: 4-Sep-2002
005     * Time: 1:44:25 PM
006     * To change template for new class use
007     * Code Style | Class Templates options (Tools | IDE Options).
008     */
009    package EVolve.util.unifyutils;
010    
011    import java.util.ArrayList;
012    import java.util.HashSet;
013    
014    import EVolve.Scene;
015    import EVolve.exceptions.NoDataPlotException;
016    import EVolve.visualization.AutoImage;
017    import EVolve.visualization.ReferenceDimension;
018    import EVolve.visualization.Visualization;
019    
020    public class UnifiedVisualization {
021        private ArrayList viz;
022        private int dimension;
023        private HashSet fullEntitySet;
024    
025        public UnifiedVisualization(int dimension) {
026            this.dimension = dimension;
027            viz = new ArrayList();
028            fullEntitySet = new HashSet();
029        }
030    
031        public boolean exists(Visualization visual) {
032            boolean retValue = false;
033            for (int i=0;i<viz.size();i++) {
034                if (((Visualization)viz.get(i)).getVisualizationID() == visual.getVisualizationID()) {
035                    retValue = true;
036                }
037            }
038            return retValue;
039        }
040    
041        public void addVisualization(Visualization [] visuals) {
042    
043            for (int i=0;i<visuals.length;i++) {
044                if (exists(visuals[i])) continue;
045                viz.add(viz.size(),visuals[i]);
046            }
047        }
048    
049        public void visualize() {
050            ArrayList tobeViz = new ArrayList();
051            fullEntitySet.clear();
052    
053            for (int i=0; i<viz.size(); i++) {
054                Visualization visual = (Visualization)viz.get(i);
055                AutoImage image = visual.getImage();
056                if (image == null)
057                    tobeViz.add(visual);
058            }
059    
060            if (tobeViz.size() != 0) {
061                Scene.getVisualizationManager().prepareForLinkedViz(tobeViz,0);
062                Scene.visualize();
063            }
064    
065            Unification.getUnifiedEntity(fullEntitySet,viz,dimension);
066    
067            for (int i = 0; i< viz.size(); i++) {
068                Visualization visual = (Visualization)viz.get(i);
069                ReferenceDimension dim = visual.getLinkableDimension(dimension);
070                dim.linkEntities(fullEntitySet);
071                try {
072                    dim.visualize();
073                } catch (NoDataPlotException e) {
074                    Scene.showErrorMessage(e.getMessage());
075                }
076            }
077    
078            for (int i=0; i<viz.size(); i++) {
079                ((Visualization)viz.get(i)).visualize();
080            }
081        }
082    
083        public int unregisterViz(Visualization visual) {
084            int delCount = 0;
085            for (int i=0;i<viz.size();i++) {
086                if (((Visualization)viz.get(i-delCount)).getVisualizationID() == visual.getVisualizationID()) {
087                    viz.remove(i-delCount);
088                    delCount++;
089                }
090            }
091            if (viz.size() == 1) viz.clear();
092    
093            return viz.size();
094        }
095    
096    }