changes to config system:

* user properties saved to user home (.cooja.user.properties) instead of to current working directory
* added config value "standard user platforms"
* class loader bug fix
This commit is contained in:
fros4943 2006-12-01 14:12:50 +00:00
parent 54e8dd9547
commit a86cfbb32e

View File

@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* $Id: GUI.java,v 1.10 2006/11/08 02:17:19 fros4943 Exp $ * $Id: GUI.java,v 1.11 2006/12/01 14:12:50 fros4943 Exp $
*/ */
package se.sics.cooja; package se.sics.cooja;
@ -68,7 +68,7 @@ public class GUI extends JDesktopPane {
/** /**
* External tools user settings filename. * External tools user settings filename.
*/ */
public static final String EXTERNAL_TOOLS_USER_SETTINGS_FILENAME = "external_tools_user.config"; public static final String EXTERNAL_TOOLS_USER_SETTINGS_FILENAME = ".cooja.user.properties";
/** /**
* Logger settings filename. * Logger settings filename.
@ -135,7 +135,7 @@ public class GUI extends JDesktopPane {
"LINKER_ARGS_2", "CONTIKI_STANDARD_PROCESSES", "CMD_GREP_PROCESSES", "LINKER_ARGS_2", "CONTIKI_STANDARD_PROCESSES", "CMD_GREP_PROCESSES",
"REGEXP_PARSE_PROCESSES", "CMD_GREP_INTERFACES", "REGEXP_PARSE_PROCESSES", "CMD_GREP_INTERFACES",
"REGEXP_PARSE_INTERFACES", "CMD_GREP_SENSORS", "REGEXP_PARSE_SENSORS", "REGEXP_PARSE_INTERFACES", "CMD_GREP_SENSORS", "REGEXP_PARSE_SENSORS",
"CONTIKI_MAIN_TEMPLATE_FILENAME"}; "CONTIKI_MAIN_TEMPLATE_FILENAME", "DEFAULT_USERPLATFORMS"};
private static final int FRAME_NEW_OFFSET = 30; private static final int FRAME_NEW_OFFSET = 30;
private static final int FRAME_STANDARD_WIDTH = 150; private static final int FRAME_STANDARD_WIDTH = 150;
@ -182,6 +182,20 @@ public class GUI extends JDesktopPane {
loadExternalToolsDefaultSettings(); loadExternalToolsDefaultSettings();
loadExternalToolsUserSettings(); loadExternalToolsUserSettings();
// Register default user platforms
String defaultUserPlatforms = getExternalToolsSetting("DEFAULT_USERPLATFORMS", null);
if (defaultUserPlatforms != null) {
String[] defaultUserPlatformsArr = defaultUserPlatforms.split(";");
if (defaultUserPlatformsArr.length > 0) {
for (String defaultUserPlatform: defaultUserPlatformsArr) {
File userPlatform = new File(defaultUserPlatform);
if (userPlatform.exists() && userPlatform.isDirectory()) {
currentUserPlatforms.add(userPlatform);
}
}
}
}
// Load extendable parts (using current platform config) // Load extendable parts (using current platform config)
reparsePlatformConfig(); reparsePlatformConfig();
} }
@ -432,6 +446,8 @@ public class GUI extends JDesktopPane {
userPlatforms = new Vector<String>(); userPlatforms = new Vector<String>();
userPlatforms.add("."); userPlatforms.add(".");
} }
//XXX Should add user prop platforms as well here...
logger.info("> Reparsing user platforms and creating config"); logger.info("> Reparsing user platforms and creating config");
for (String userPlatform : userPlatforms) { for (String userPlatform : userPlatforms) {
logger.info(">> Adding: " + userPlatform); logger.info(">> Adding: " + userPlatform);
@ -1742,9 +1758,10 @@ public class GUI extends JDesktopPane {
* Load user values from external properties file * Load user values from external properties file
*/ */
private static void loadExternalToolsUserSettings() { private static void loadExternalToolsUserSettings() {
String filename = GUI.EXTERNAL_TOOLS_USER_SETTINGS_FILENAME; File configFile = new File(System.getProperty("user.home"), GUI.EXTERNAL_TOOLS_USER_SETTINGS_FILENAME);
try { try {
FileInputStream in = new FileInputStream(filename); FileInputStream in = new FileInputStream(configFile);
Properties settings = new Properties(); Properties settings = new Properties();
settings.load(in); settings.load(in);
in.close(); in.close();
@ -1759,7 +1776,7 @@ public class GUI extends JDesktopPane {
// 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 " + filename); logger.warn("Error when reading default settings from " + configFile);
} }
} }
@ -1767,19 +1784,19 @@ public class GUI extends JDesktopPane {
* Save external tools user settings to file. * Save external tools user settings to file.
*/ */
public static void saveExternalToolsUserSettings() { public static void saveExternalToolsUserSettings() {
String filename = GUI.EXTERNAL_TOOLS_USER_SETTINGS_FILENAME; File configFile = new File(System.getProperty("user.home"), GUI.EXTERNAL_TOOLS_USER_SETTINGS_FILENAME);
try { try {
FileOutputStream out = new FileOutputStream(filename); FileOutputStream out = new FileOutputStream(configFile);
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 " + filename logger.warn("Could not save external tools user settings to " + configFile
+ ", aborting"); + ", 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 "
+ filename + ", aborting"); + configFile + ", aborting");
} }
} }
@ -1885,7 +1902,6 @@ public class GUI extends JDesktopPane {
} }
private ClassLoader createClassLoader(Vector<File> currentUserPlatforms) { private ClassLoader createClassLoader(Vector<File> currentUserPlatforms) {
ClassLoader classLoader = ClassLoader.getSystemClassLoader();
return createClassLoader(ClassLoader.getSystemClassLoader(), currentUserPlatforms); return createClassLoader(ClassLoader.getSystemClassLoader(), currentUserPlatforms);
} }
@ -1940,8 +1956,8 @@ public class GUI extends JDesktopPane {
+ ": " + e); + ": " + e);
} }
} }
return new URLClassLoader((URL[]) urls.toArray(new URL[urls.size()]),
userPlatformClassLoader); return new URLClassLoader((URL[]) urls.toArray(new URL[urls.size()]), parent);
} }
/** /**