001    /*
002     * Created by IntelliJ IDEA.
003     * User: Wei Wang
004     * ACL Lab, School of Computer Science, Montreal, QC
005     * Date: 2002-8-27
006     * Time: 21:48:13
007     */
008    package EVolve.util.predefinedutils;
009    
010    import java.util.*;
011    import EVolve.exceptions.EVolveException;
012    import EVolve.util.xmlutils.datastructures.SerializedData;
013    import EVolve.util.xmlutils.datastructures.SerializedVisualization;
014    import EVolve.Scene;
015    
016    
017    public class PredefinedVisualization {
018    
019        private boolean translated;
020        private String name;
021        private String filename;
022        private ArrayList vizInfoList;
023        private int currentIndex;
024        private boolean autoLoadTrace;
025        private String dataSourceName;
026    
027    
028        public PredefinedVisualization(String configFile,String name) {
029            translated = false;
030            filename = configFile;
031            this.name = name;
032            currentIndex = -1;
033            autoLoadTrace = false;
034            vizInfoList = null;
035            try {
036                SerializedData info = VisualizationSerializer.v().getVizInfoFromDisk(filename);
037                autoLoadTrace = info.AutoLoadTrace.equals("Yes");
038                dataSourceName = info.DataSourceName;
039            } catch (EVolveException e) {
040    
041            }
042        }
043    
044        public String getName() {
045            return name;
046        }
047    
048        public void setName(String name) {
049            this.name = name;
050        }
051    
052        public String getFilename() {
053            return filename;
054        }
055    
056        public void setFilename(String filename) {
057            this.filename = filename;
058        }
059    
060        public boolean isTranslated() {
061            return translated & (!autoLoadTrace);
062        }
063    
064        public void setTranslated(boolean translated) {
065            this.translated = false;
066        }
067    
068        public SerializedVisualization getVizInfo(int index) {
069            return (SerializedVisualization)vizInfoList.get(index);
070        }
071    
072        public void translateVizInfo() throws EVolveException{
073            currentIndex = -1;
074            SerializedData info = VisualizationSerializer.v().getVizInfoFromDisk(filename);
075            autoLoadTrace = info.AutoLoadTrace.equals("Yes");
076            if (autoLoadTrace) {
077                boolean success = Scene.getUIManager().addDataSource(info.DataSourceName);
078    
079                if (!success) return;
080    
081                String currentTrace = Scene.getCurrentDataFilename();
082                if ((currentTrace==null)||(!currentTrace.equals(info.TraceFileName))) {
083                    Scene.setDataFilename(info.TraceFileName);
084                    Scene.autoLoadDataSource();
085                    Scene.setDataFilename(null);
086                }
087                Scene.getFilter().loadSelection(info.SerializedSelections,Integer.parseInt(info.SelectedSelection));
088            }
089            vizInfoList = info.SerializedVisualizations;
090            setTranslated(true);
091        }
092    
093        public boolean hasNext() {
094            if (currentIndex == vizInfoList.size() -1) return false;
095            return true;
096        }
097    
098        public SerializedVisualization getNextVizInfo() {
099            return (SerializedVisualization )vizInfoList.get(++currentIndex);
100        }
101    
102        public void reset() {
103            currentIndex = -1;
104        }
105    
106        public boolean isAutoLoadTrace() {
107            return autoLoadTrace;
108        }
109    
110        public String getUsedDataSourceName() {
111            return dataSourceName;
112        }
113    }