private void saveConfigs(IProject project, ICConfigurationDescription[] cfgds) { try { String projectName = project.getName(); IPath output = project.getLocation().append(CFG_FILE_NAME); File f = output.toFile(); if (!f.exists()) f.createNewFile(); if (f.exists()) { try (PrintWriter p = new PrintWriter(new BufferedWriter(new FileWriter(f)))) { Map<String, IAConfiguration> cfgs = configs.get(projectName); p.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); // $NON-NLS-1$ p.println("<configurations>"); // $NON-NLS-1$ Option[] optionList = AutotoolsConfiguration.getOptionList(); // Before saving, force any cloning to occur via the option // value handler. setSyncing(true); for (int i = 0; i < cfgds.length; ++i) { @SuppressWarnings("unused") CConfigurationData data = cfgds[i].getConfigurationData(); } setSyncing(false); for (int i = 0; i < cfgds.length; ++i) { ICConfigurationDescription cfgd = cfgds[i]; String id = cfgd.getId(); IAConfiguration cfg = cfgs.get(id); if (cfg == null) { cfg = createDefaultConfiguration(id); } p.println("<configuration id=\"" + cfg.getId() + "\">"); // $NON-NLS-1$ //$NON-NLS-2$ for (int j = 0; j < optionList.length; ++j) { Option option = optionList[j]; IConfigureOption opt = cfg.getOption(option.getName()); if (opt.isFlag()) { p.println( "<flag id=\"" + option.getName() + "\" value=\"" //$NON-NLS-1$ //$NON-NLS-2$ + xmlEscape(option.getDefaultValue()) + "\">"); //$NON-NLS-1$ FlagConfigureOption fco = (FlagConfigureOption) opt; List<String> children = fco.getChildren(); for (int k = 0; k < children.size(); ++k) { String childName = children.get(k); IConfigureOption childopt = cfg.getOption(childName); p.println( "<flagvalue id=\"" + childopt.getName() + "\" value=\"" //$NON-NLS-1$ //$NON-NLS-2$ + xmlEscape(childopt.getValue()) + "\"/>"); // $NON-NLS-3$ } p.println("</flag>"); // $NON-NLS-1$ } else if (!opt.isCategory() && !opt.isFlagValue()) p.println( "<option id=\"" + option.getName() + "\" value=\"" + xmlEscape(opt.getValue()) // $NON-NLS-1$ //$NON-NLS-2$ + "\"/>"); // $NON-NLS-3$ } p.println("</configuration>"); // $NON-NLS-1$ // Sync name field as this configuration is now // officially saved syncNameField(cfgd); } p.println("</configurations>"); } } } catch (IOException e) { AutotoolsPlugin.log(e); } }