added quick fix for passing alternative external tools configuration files at startup.

This commit is contained in:
fros4943 2007-04-03 16:21:12 +00:00
parent 2a216122b3
commit c8190f55e6

View File

@ -24,7 +24,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* *
* $Id: GUI.java,v 1.40 2007/04/02 16:50:07 fros4943 Exp $ * $Id: GUI.java,v 1.41 2007/04/03 16:21:12 fros4943 Exp $
*/ */
package se.sics.cooja; package se.sics.cooja;
@ -82,7 +82,11 @@ public class GUI {
* External tools user settings filename. * External tools user settings filename.
*/ */
public static final String EXTERNAL_TOOLS_USER_SETTINGS_FILENAME = ".cooja.user.properties"; public static final String EXTERNAL_TOOLS_USER_SETTINGS_FILENAME = ".cooja.user.properties";
private static File externalToolsUserSettingsFile =
new File(System.getProperty("user.home"), EXTERNAL_TOOLS_USER_SETTINGS_FILENAME);
private static String specifiedContikiPath = null;
/** /**
* Logger settings filename. * Logger settings filename.
*/ */
@ -200,7 +204,11 @@ public class GUI {
// Load default and overwrite with user settings (if any) // Load default and overwrite with user settings (if any)
loadExternalToolsDefaultSettings(); loadExternalToolsDefaultSettings();
loadExternalToolsUserSettings(); loadExternalToolsUserSettings();
if (specifiedContikiPath != null) {
setExternalToolsSetting("PATH_CONTIKI", specifiedContikiPath);
}
// Add menu bar // Add menu bar
if (frame != null) { if (frame != null) {
frame.setJMenuBar(createMenuBar()); frame.setJMenuBar(createMenuBar());
@ -2279,11 +2287,8 @@ public class GUI {
* Load user values from external properties file * Load user values from external properties file
*/ */
private static void loadExternalToolsUserSettings() { private static void loadExternalToolsUserSettings() {
File configFile = new File(System.getProperty("user.home"),
GUI.EXTERNAL_TOOLS_USER_SETTINGS_FILENAME);
try { try {
FileInputStream in = new FileInputStream(configFile); FileInputStream in = new FileInputStream(externalToolsUserSettingsFile);
Properties settings = new Properties(); Properties settings = new Properties();
settings.load(in); settings.load(in);
in.close(); in.close();
@ -2298,7 +2303,7 @@ public class GUI {
// No default configuration file found, using default // No default configuration file found, using default
} catch (IOException e) { } catch (IOException e) {
// Error while importing saved properties, using default // Error while importing saved properties, using default
logger.warn("Error when reading default settings from " + configFile); logger.warn("Error when reading default settings from " + externalToolsUserSettingsFile);
} }
} }
@ -2306,20 +2311,18 @@ public class GUI {
* Save external tools user settings to file. * Save external tools user settings to file.
*/ */
public static void saveExternalToolsUserSettings() { public static void saveExternalToolsUserSettings() {
File configFile = new File(System.getProperty("user.home"),
GUI.EXTERNAL_TOOLS_USER_SETTINGS_FILENAME);
try { try {
FileOutputStream out = new FileOutputStream(configFile); FileOutputStream out = new FileOutputStream(externalToolsUserSettingsFile);
currentExternalToolsSettings.store(out, "COOJA User Settings"); currentExternalToolsSettings.store(out, "COOJA User Settings");
out.close(); out.close();
} catch (FileNotFoundException ex) { } catch (FileNotFoundException ex) {
// Could not open settings file for writing, aborting // Could not open settings file for writing, aborting
logger.warn("Could not save external tools user settings to " logger.warn("Could not save external tools user settings to "
+ configFile + ", aborting"); + externalToolsUserSettingsFile + ", aborting");
} catch (IOException ex) { } catch (IOException ex) {
// Could not open settings file for writing, aborting // Could not open settings file for writing, aborting
logger.warn("Error while saving external tools user settings to " logger.warn("Error while saving external tools user settings to "
+ configFile + ", aborting"); + externalToolsUserSettingsFile + ", aborting");
} }
} }
@ -2558,6 +2561,14 @@ public class GUI {
DOMConfigurator.configure(GUI.class.getResource("/" + LOG_CONFIG_FILE)); DOMConfigurator.configure(GUI.class.getResource("/" + LOG_CONFIG_FILE));
} }
// Check for Contiki path argument
for (int i = 1; i < args.length; i++) {
if (args[i].startsWith("-contiki=")) {
String arg = args[i].substring("-contiki=".length());
GUI.specifiedContikiPath = arg;
}
}
// Check if simulator should be quick-started // Check if simulator should be quick-started
if (args.length > 0 && args[0].startsWith("-quickstart=")) { if (args.length > 0 && args[0].startsWith("-quickstart=")) {
String filename = args[0].substring("-quickstart=".length()); String filename = args[0].substring("-quickstart=".length());
@ -2574,7 +2585,7 @@ public class GUI {
boolean startSimulation = true; boolean startSimulation = true;
String contikiPath = null; String contikiPath = null;
// Parse quick start arguments // Parse arguments
for (int i = 1; i < args.length; i++) { for (int i = 1; i < args.length; i++) {
if (args[i].startsWith("-id=")) { if (args[i].startsWith("-id=")) {
@ -2644,6 +2655,23 @@ public class GUI {
} else if (args.length > 0 && args[0].startsWith("-nogui")) { } else if (args.length > 0 && args[0].startsWith("-nogui")) {
// Parse arguments
for (int i = 1; i < args.length; i++) {
if (args[i].startsWith("-external_tools_config=")) {
String arg = args[i].substring("-external_tools_config=".length());
File specifiedExternalToolsConfigFile = new File(arg);
if (!specifiedExternalToolsConfigFile.exists()) {
logger.fatal("Specified external tools configuration not found: " + specifiedExternalToolsConfigFile);
specifiedExternalToolsConfigFile = null;
System.exit(1);
} else {
GUI.externalToolsUserSettingsFile = specifiedExternalToolsConfigFile;
}
}
}
// No GUI start-up // No GUI start-up
javax.swing.SwingUtilities.invokeLater(new Runnable() { javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() { public void run() {