001 /* EVolve - an Extensible Software Visualization Framework
002 * Copyright (C) 2001-2002 Qin Wang
003 *
004 * This library is free software; you can redistribute it and/or
005 * modify it under the terms of the GNU Library General Public
006 * License as published by the Free Software Foundation; either
007 * version 2 of the License, or (at your option) any later version.
008 *
009 * This library is distributed in the hope that it will be useful,
010 * but WITHOUT ANY WARRANTY; without even the implied warranty of
011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
012 * Library General Public License for more details.
013 *
014 * You should have received a copy of the GNU Library General Public
015 * License along with this library; if not, write to the
016 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
017 * Boston, MA 02111-1307, USA.
018 */
019
020 /*
021 * EVolve is distributed at http://www.sable.mcgill.ca/EVolve/
022 */
023
024 package EVolve;
025
026 import EVolve.data.*;
027 import EVolve.visualization.*;
028 import EVolve.util.*;
029 import java.awt.*;
030 import javax.swing.*;
031
032 public class Scene {
033 public static final String VERSION = "EVolve 1.2";
034 private static Scene e;
035
036 private DataManager dm;
037 private VisualizationManager vm;
038 private UIManager um;
039 private ToolsManager tm;
040 private Filter filter;
041 private String autoDataFilename;
042 private String currentDataFilename;
043
044 private Scene() {
045 }
046
047 public static void start(DataSource dataSource, VisualizationFactory[] factory) {
048 e = new Scene();
049
050 e.dm = new DataManager(dataSource);
051 e.vm = new VisualizationManager(factory);
052 e.um = new UIManager();
053 e.tm = new ToolsManager();
054 e.filter = new Filter();
055 e.autoDataFilename = null;
056 e.currentDataFilename = "nothing loaded yet..";
057
058 e.vm.init();
059 e.um.init();
060 SceneSetting.v().initialScene();
061 }
062
063 public static DataManager getDataManager() {
064 return e.dm;
065 }
066
067 public static VisualizationManager getVisualizationManager() {
068 return e.vm;
069 }
070
071 public static UIManager getUIManager() {
072 return e.um;
073 }
074
075 public static ToolsManager getToolsManager() {
076 return e.tm;
077 }
078
079 public static Filter getFilter() {
080 return e.filter;
081 }
082
083 public static JFrame getFrame() {
084 return e.um.getFrame();
085 }
086
087 public static void setStatus(String status) {
088 e.um.setStatus(status);
089 }
090
091 public static int getColorRGB() {
092 return e.dm.getColorRGB();
093 }
094
095 public static Color getColor() {
096 return e.dm.getColor();
097 }
098
099 public static int getEventCounter() {
100 return e.dm.getEventCounter();
101 }
102
103 public static void loadDataSource() {
104 setStatus("Loading data, please wait.");
105 e.filter = new Filter();
106 Thread thread = new Thread() {
107 public void run() {
108 try {
109 e.um.disableFileMenus();
110 e.vm.init();
111 e.um.init();
112 e.dm.init();
113 setStatus("Data loaded.");
114 e.um.enableFileMenus();
115 e.um.enableMenu();
116 } catch (DataProcessingException exp) {
117 e.um.enableFileMenus();
118 setStatus(exp.getMessage());
119 }
120 }
121 };
122 thread.start();
123 }
124
125 public static void autoLoadDataSource() {
126 setStatus("Loading data, please wait.");
127 e.filter = new Filter();
128 try {
129 e.um.disableFileMenus();
130 e.vm.init();
131 e.um.init();
132 e.dm.init();
133 setStatus("Data loaded.");
134 e.um.enableFileMenus();
135 e.um.enableMenu();
136 } catch (DataProcessingException exp) {
137 e.um.enableFileMenus();
138 setStatus(exp.getMessage());
139 }
140 }
141
142 public static void visualize() {
143 setStatus("Processing data, please wait.");
144
145 Thread thread = new Thread() {
146 public void run() {
147 try {
148 e.dm.sendEvents();
149 e.vm.visualize();
150 e.um.endTimer();
151 setStatus("Visualization finished.");
152 } catch (DataProcessingException e) {
153 setStatus(e.getMessage());
154 }
155 }
156 };
157 thread.start();
158 e.um.startTimer();
159 }
160
161 public static void autoVisualize() {
162 setStatus("Processing data, please wait.");
163
164 try {
165 e.dm.sendEvents();
166 e.vm.visualize();
167 setStatus("Visualization finished.");
168 } catch (DataProcessingException e) {
169 setStatus(e.getMessage());
170 }
171 }
172
173 public static String getDataFileName() {
174 return e.autoDataFilename;
175 }
176
177 public static void setDataFilename(String filename) {
178 e.autoDataFilename = filename;
179 if (filename!=null) e.currentDataFilename = filename;
180 }
181
182 public static void clearFilters() {
183 e.filter = new Filter();
184 }
185
186 public static void showErrorMessage(String msg) {
187 JOptionPane.showMessageDialog(null,msg);
188
189 }
190
191 public static void setCurrentDataFilename(String filename) {
192 e.currentDataFilename = filename;
193 }
194
195 public static String getCurrentDataFilename() {
196 return e.currentDataFilename;
197 }
198 }