Index: src/org/netbeans/modules/java/freeform/JavaProjectGenerator.java =================================================================== RCS file: /cvs/java/freeform/src/org/netbeans/modules/java/freeform/JavaProjectGenerator.java,v retrieving revision 1.14 diff -u -r1.14 JavaProjectGenerator.java --- src/org/netbeans/modules/java/freeform/JavaProjectGenerator.java 8 Oct 2007 08:04:47 -0000 1.14 +++ src/org/netbeans/modules/java/freeform/JavaProjectGenerator.java 31 Oct 2007 14:34:21 -0000 @@ -61,6 +61,7 @@ import org.openide.util.Exceptions; import org.w3c.dom.Document; import org.w3c.dom.Element; +import org.w3c.dom.NodeList; /** * Reads/writes project.xml. @@ -72,7 +73,7 @@ public class JavaProjectGenerator { /** Keep root elements in the order specified by project's XML schema. */ - private static final String[] rootElementsOrder = new String[]{"name", "properties", "folders", "ide-actions", "export", "view", "subprojects"}; // NOI18N + private static final String[] rootElementsOrder = new String[]{"name", "properties", "encoding", "folders", "ide-actions", "export", "view", "subprojects"}; // NOI18N private static final String[] viewElementsOrder = new String[]{"items", "context-menu"}; // NOI18N // this order is not required by schema, but follow it to minimize randomness a bit @@ -232,6 +233,38 @@ sourceFolderEl.appendChild(el); } Util.appendChildElement(foldersEl, sourceFolderEl, folderElementsOrder); + } + Util.putPrimaryConfigurationData(helper, data); + } + + public static String getEncoding(AntProjectHelper helper) { + Element data = Util.getPrimaryConfigurationData(helper); + Element encodingEl = Util.findElement(data, "encoding", Util.NAMESPACE); // NOI18N + String retVal; + if (encodingEl == null) { + retVal = null; + } else { + String encodingName = Util.findText(encodingEl); + retVal = (encodingName != null) ? encodingName : null; + } + return retVal; + } + + public static void putEncoding(AntProjectHelper helper, String enc) { + Element data = Util.getPrimaryConfigurationData(helper); + Document doc = data.getOwnerDocument(); + Element encodingEl = Util.findElement(data, "encoding", Util.NAMESPACE); // NOI18N + if (encodingEl == null) { + encodingEl = doc.createElementNS(Util.NAMESPACE, "encoding"); // NOI18N + } else { + NodeList list = encodingEl.getChildNodes(); + for (int i = 0; i < list.getLength(); i++) { + encodingEl.removeChild(list.item(i)); + } + } + if (enc != null) { + encodingEl.appendChild(doc.createTextNode(enc)); + Util.appendChildElement(data, encodingEl, rootElementsOrder); } Util.putPrimaryConfigurationData(helper, data); } Index: src/org/netbeans/modules/java/freeform/ui/ProjectModel.java =================================================================== RCS file: /cvs/java/freeform/src/org/netbeans/modules/java/freeform/ui/ProjectModel.java,v retrieving revision 1.16 diff -u -r1.16 ProjectModel.java --- src/org/netbeans/modules/java/freeform/ui/ProjectModel.java 8 Oct 2007 08:04:41 -0000 1.16 +++ src/org/netbeans/modules/java/freeform/ui/ProjectModel.java 31 Oct 2007 15:35:53 -0000 @@ -54,6 +54,7 @@ import javax.swing.event.ChangeListener; import org.netbeans.api.java.platform.JavaPlatform; import org.netbeans.api.project.ProjectManager; +import org.netbeans.api.queries.FileEncodingQuery; import org.netbeans.modules.ant.freeform.spi.ProjectConstants; import org.netbeans.modules.ant.freeform.spi.support.Util; import org.netbeans.modules.java.freeform.JavaProjectGenerator; @@ -103,7 +104,7 @@ private static final SpecificationVersion JDK_MAX_SUPPORTED_VERSION = new SpecificationVersion ("1.5"); //NOI18N private ProjectModel(File baseFolder, File nbProjectFolder, PropertyEvaluator evaluator, - List sourceFolders, List compUnits) { + List sourceFolders, List compUnits, String enc) { this.baseFolder = baseFolder; this.nbProjectFolder = nbProjectFolder; this.evaluator = evaluator; @@ -115,9 +116,11 @@ if (sourceLevel == null) { setSourceLevel(getDefaultSourceLevel()); } - if (sourceFolders.size() > 0) { + if (enc != null) { + this.encoding = enc; + } else if (sourceFolders.size() > 0) { JavaProjectGenerator.SourceFolder sf = sourceFolders.get(0); - encoding = sf.encoding == null ? null : Charset.forName(sf.encoding).name(); + this.encoding = sf.encoding == null ? null : Charset.forName(sf.encoding).name(); } resetState(); } @@ -147,7 +150,7 @@ public static ProjectModel createEmptyModel(File baseFolder, File nbProjectFolder, PropertyEvaluator evaluator) { return new ProjectModel(baseFolder, nbProjectFolder, evaluator, new ArrayList(), - new ArrayList()); + new ArrayList(), FileEncodingQuery.getDefaultEncoding().name()); } /** Create project model of existing project. Useful for project customization. */ @@ -161,7 +164,8 @@ // reads only "java" type because other types are not editable in UI JavaProjectGenerator.getSourceFolders(helper, TYPE_JAVA), JavaProjectGenerator.getJavaCompilationUnits(helper, - Util.getAuxiliaryConfiguration(helper)) + Util.getAuxiliaryConfiguration(helper)), + JavaProjectGenerator.getEncoding(helper) ); // only "java" type of sources was read so fix style to "pacakges" on all updateStyle(pm.sourceFolders); @@ -190,7 +194,9 @@ if (subprojects.size() > 0) { JavaProjectGenerator.putSubprojects(helper, subprojects); } - + if (model.encoding != null) { + JavaProjectGenerator.putEncoding(helper, model.encoding); + } model.resetState(); } @@ -225,6 +231,8 @@ List buildFiles = JavaProjectGenerator.getBuildFiles(model.getEvaluator(), model.javaCompilationUnitsList, model.baseFolder, model.nbProjectFolder); JavaProjectGenerator.putBuildFiles(helper, buildFiles); + + JavaProjectGenerator.putEncoding(helper, model.encoding); return null; }