001    /*
002     * Created by IntelliJ IDEA.
003     * User: Wei Wang
004     * Date: 2002-8-29
005     * Time: 13:31:24
006     * To change template for new class use 
007     * Code Style | Class Templates options (Tools | IDE Options).
008     */
009    package EVolve.util.predefinedutils;
010    
011    import java.util.*;
012    import java.awt.*;
013    import java.io.*;
014    
015    import EVolve.Scene;
016    import EVolve.util.xmlutils.datastructures.SerializedVisualization;
017    import EVolve.util.settings.SceneSetting;
018    import EVolve.exceptions.EVolveException;
019    import EVolve.visualization.Visualization;
020    
021    public class PredefinedVisualizationRunner {
022        private ArrayList predefinedVizCollection;
023        private int selected;
024    
025        public PredefinedVisualizationRunner() {
026            predefinedVizCollection = new ArrayList();
027            selected = 0;
028        }
029    
030        public int getSelected() {
031            return this.selected;
032        }
033    
034        public void setSelected(int selected) {
035            this.selected = selected;
036        }
037    
038        public int getPredefinedVisualizationNumber() {
039            return predefinedVizCollection.size();
040        }
041    
042        public String getConfigureName(int index) {
043            return ((PredefinedVisualization)predefinedVizCollection.get(index)).getName();
044        }
045    
046        public PredefinedVisualization getSelectedPredefinedViz() {
047            return predefinedVizCollection.size() == 0 ? null : (PredefinedVisualization)predefinedVizCollection.get(selected);
048        }
049    
050        public PredefinedVisualization getPredefinedVizByIndex(int index) {
051            return (PredefinedVisualization)predefinedVizCollection.get(index);
052        }
053    
054        public void addPredefinedVisualization(String filename, String configname) {
055            for (int i=0; i<predefinedVizCollection.size(); i++) {
056                PredefinedVisualization viz = (PredefinedVisualization)predefinedVizCollection.get(i);
057                if (viz.getFilename().equals(filename)) {
058                    viz.setTranslated(false);
059                    viz.setFilename(filename);
060                    viz.setName(configname);
061                    return;
062                }
063            }
064            PredefinedVisualization viz = new PredefinedVisualization(filename,configname);
065            predefinedVizCollection.add(predefinedVizCollection.size(),viz);
066        }
067    
068        public boolean containsConfigure(String name) {
069    
070            for (int i=0; i< predefinedVizCollection.size(); i++) {
071                if (((PredefinedVisualization)predefinedVizCollection.get(i)).getName().equals(name)) return true;
072            }
073    
074            return false;
075        }
076    
077        public int getIdFromName(String name) {
078            int retValue = -1;
079            for (int i=0; i< predefinedVizCollection.size(); i++) {
080                if (((PredefinedVisualization)predefinedVizCollection.get(i)).getName().equals(name)) retValue = i;
081            }
082    
083            return retValue;
084        }
085    
086        public void runPredefinedVisualization() {
087            Visualization visual = null;
088            PredefinedVisualization predefinedViz = getSelectedPredefinedViz();
089    
090            if (predefinedViz == null) return;
091            try {
092                if (!predefinedViz.isTranslated())
093                    predefinedViz.translateVizInfo();
094    
095            } catch (EVolveException e) {
096                Scene.showErrorMessage(e.getMessage());
097                return;
098            }
099    
100            //Scene.getVisualizationManager().cleanup();
101            while (predefinedViz.hasNext()) {
102                SerializedVisualization viz = predefinedViz.getNextVizInfo();
103    
104                visual = Scene.getVisualizationManager().newVisualization(viz.FactoryName);
105    
106                visual.getWindow().setBounds(new Rectangle(Integer.parseInt(viz.WindowX), Integer.parseInt(viz.WindowY),
107                                                           Integer.parseInt(viz.WindowWidth),Integer.parseInt(viz.WindowHeight)));
108                visual.setName(viz.WindowTitle);
109                visual.restoreConfiguration(viz);
110            }
111            Scene.getVisualizationManager().addAllVisualizations();
112            Scene.getFilter().updateSelection();
113            Scene.getVisualizationManager().prepareListToBeVisualized();
114            Scene.visualize();
115            predefinedViz.reset();
116        }
117    
118        public ArrayList getPredefinedVizList() {
119            return predefinedVizCollection;
120        }
121    
122        public void loadPredefinedFiles() {
123            String dirName = SceneSetting.v().getConfigurationPath();
124    
125            if ((dirName == null)||(dirName.length()==0))
126                return ;
127    
128    
129            File dir = new File(dirName);
130            String files[] = dir.list(new FilenameFilter() {
131                public boolean accept(File dir, String name) {
132                    return name.endsWith("xml");
133                }
134            });
135    
136            /* Were we able to read the directory? */
137            if (files == null) {
138                Scene.showErrorMessage("Directory "+ dirName + " does not exist!");
139                return;
140            }
141    
142            for (int i=0; i<files.length; i++) {
143                String fname = dirName + File.separator + files[i];
144                VisualizationSerializer.v().loadConfiguration(fname);
145            }
146    
147        }
148    }