This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 120508
Collapse All | Expand All

(-)src/org/netbeans/modules/java/freeform/JavaProjectGenerator.java (-1 / +34 lines)
Lines 61-66 Link Here
61
import org.openide.util.Exceptions;
61
import org.openide.util.Exceptions;
62
import org.w3c.dom.Document;
62
import org.w3c.dom.Document;
63
import org.w3c.dom.Element;
63
import org.w3c.dom.Element;
64
import org.w3c.dom.NodeList;
64
65
65
/**
66
/**
66
 * Reads/writes project.xml.
67
 * Reads/writes project.xml.
Lines 72-78 Link Here
72
public class JavaProjectGenerator {
73
public class JavaProjectGenerator {
73
74
74
    /** Keep root elements in the order specified by project's XML schema. */
75
    /** Keep root elements in the order specified by project's XML schema. */
75
    private static final String[] rootElementsOrder = new String[]{"name", "properties", "folders", "ide-actions", "export", "view", "subprojects"}; // NOI18N
76
    private static final String[] rootElementsOrder = new String[]{"name", "properties", "encoding", "folders", "ide-actions", "export", "view", "subprojects"}; // NOI18N
76
    private static final String[] viewElementsOrder = new String[]{"items", "context-menu"}; // NOI18N
77
    private static final String[] viewElementsOrder = new String[]{"items", "context-menu"}; // NOI18N
77
    
78
    
78
    // this order is not required by schema, but follow it to minimize randomness a bit
79
    // this order is not required by schema, but follow it to minimize randomness a bit
Lines 232-237 Link Here
232
                sourceFolderEl.appendChild(el);
233
                sourceFolderEl.appendChild(el);
233
            }
234
            }
234
            Util.appendChildElement(foldersEl, sourceFolderEl, folderElementsOrder);
235
            Util.appendChildElement(foldersEl, sourceFolderEl, folderElementsOrder);
236
        }
237
        Util.putPrimaryConfigurationData(helper, data);
238
    }
239
    
240
    public static String getEncoding(AntProjectHelper helper) {
241
        Element data = Util.getPrimaryConfigurationData(helper);
242
        Element encodingEl = Util.findElement(data, "encoding", Util.NAMESPACE); // NOI18N
243
        String retVal;
244
        if (encodingEl == null) {
245
            retVal = null;
246
        } else {
247
            String encodingName = Util.findText(encodingEl);
248
            retVal = (encodingName != null) ? encodingName : null;
249
        }
250
        return retVal;
251
    }
252
    
253
    public static void putEncoding(AntProjectHelper helper, String enc) {
254
        Element data = Util.getPrimaryConfigurationData(helper);
255
        Document doc = data.getOwnerDocument();
256
        Element encodingEl = Util.findElement(data, "encoding", Util.NAMESPACE); // NOI18N
257
        if (encodingEl == null) {
258
            encodingEl = doc.createElementNS(Util.NAMESPACE, "encoding"); // NOI18N
259
        } else {
260
            NodeList list = encodingEl.getChildNodes();
261
            for (int i = 0; i < list.getLength(); i++) {
262
                encodingEl.removeChild(list.item(i));
263
            }
264
        }
265
        if (enc != null) {
266
            encodingEl.appendChild(doc.createTextNode(enc));
267
            Util.appendChildElement(data, encodingEl, rootElementsOrder);
235
        }
268
        }
236
        Util.putPrimaryConfigurationData(helper, data);
269
        Util.putPrimaryConfigurationData(helper, data);
237
    }
270
    }
(-)src/org/netbeans/modules/java/freeform/ui/ProjectModel.java (-6 / +14 lines)
Lines 54-59 Link Here
54
import javax.swing.event.ChangeListener;
54
import javax.swing.event.ChangeListener;
55
import org.netbeans.api.java.platform.JavaPlatform;
55
import org.netbeans.api.java.platform.JavaPlatform;
56
import org.netbeans.api.project.ProjectManager;
56
import org.netbeans.api.project.ProjectManager;
57
import org.netbeans.api.queries.FileEncodingQuery;
57
import org.netbeans.modules.ant.freeform.spi.ProjectConstants;
58
import org.netbeans.modules.ant.freeform.spi.ProjectConstants;
58
import org.netbeans.modules.ant.freeform.spi.support.Util;
59
import org.netbeans.modules.ant.freeform.spi.support.Util;
59
import org.netbeans.modules.java.freeform.JavaProjectGenerator;
60
import org.netbeans.modules.java.freeform.JavaProjectGenerator;
Lines 103-109 Link Here
103
    private static final SpecificationVersion JDK_MAX_SUPPORTED_VERSION = new SpecificationVersion ("1.5"); //NOI18N
104
    private static final SpecificationVersion JDK_MAX_SUPPORTED_VERSION = new SpecificationVersion ("1.5"); //NOI18N
104
    
105
    
105
    private ProjectModel(File baseFolder, File nbProjectFolder, PropertyEvaluator evaluator,
106
    private ProjectModel(File baseFolder, File nbProjectFolder, PropertyEvaluator evaluator,
106
            List<JavaProjectGenerator.SourceFolder> sourceFolders, List<JavaProjectGenerator.JavaCompilationUnit> compUnits) {
107
            List<JavaProjectGenerator.SourceFolder> sourceFolders, List<JavaProjectGenerator.JavaCompilationUnit> compUnits, String enc) {
107
        this.baseFolder = baseFolder;
108
        this.baseFolder = baseFolder;
108
        this.nbProjectFolder = nbProjectFolder;
109
        this.nbProjectFolder = nbProjectFolder;
109
        this.evaluator = evaluator;
110
        this.evaluator = evaluator;
Lines 115-123 Link Here
115
        if (sourceLevel == null) {
116
        if (sourceLevel == null) {
116
            setSourceLevel(getDefaultSourceLevel());
117
            setSourceLevel(getDefaultSourceLevel());
117
        }
118
        }
118
        if (sourceFolders.size() > 0) {
119
        if (enc != null) {
120
            this.encoding = enc;
121
        } else if (sourceFolders.size() > 0) {
119
            JavaProjectGenerator.SourceFolder sf = sourceFolders.get(0);
122
            JavaProjectGenerator.SourceFolder sf = sourceFolders.get(0);
120
            encoding = sf.encoding == null ? null : Charset.forName(sf.encoding).name();
123
            this.encoding = sf.encoding == null ? null : Charset.forName(sf.encoding).name();
121
        }
124
        }
122
        resetState();
125
        resetState();
123
    }
126
    }
Lines 147-153 Link Here
147
    public static ProjectModel createEmptyModel(File baseFolder, File nbProjectFolder, PropertyEvaluator evaluator) {
150
    public static ProjectModel createEmptyModel(File baseFolder, File nbProjectFolder, PropertyEvaluator evaluator) {
148
        return new ProjectModel(baseFolder, nbProjectFolder, evaluator,
151
        return new ProjectModel(baseFolder, nbProjectFolder, evaluator,
149
                new ArrayList<JavaProjectGenerator.SourceFolder>(),
152
                new ArrayList<JavaProjectGenerator.SourceFolder>(),
150
                new ArrayList<JavaProjectGenerator.JavaCompilationUnit>());
153
                new ArrayList<JavaProjectGenerator.JavaCompilationUnit>(), FileEncodingQuery.getDefaultEncoding().name());
151
    }
154
    }
152
155
153
    /** Create project model of existing project. Useful for project customization. */
156
    /** Create project model of existing project. Useful for project customization. */
Lines 161-167 Link Here
161
                        // reads only "java" type because other types are not editable in UI
164
                        // reads only "java" type because other types are not editable in UI
162
                        JavaProjectGenerator.getSourceFolders(helper, TYPE_JAVA),
165
                        JavaProjectGenerator.getSourceFolders(helper, TYPE_JAVA),
163
                        JavaProjectGenerator.getJavaCompilationUnits(helper,
166
                        JavaProjectGenerator.getJavaCompilationUnits(helper,
164
                            Util.getAuxiliaryConfiguration(helper))
167
                            Util.getAuxiliaryConfiguration(helper)),
168
                        JavaProjectGenerator.getEncoding(helper)
165
                    );
169
                    );
166
                // only "java" type of sources was read so fix style to "pacakges" on all
170
                // only "java" type of sources was read so fix style to "pacakges" on all
167
                updateStyle(pm.sourceFolders);
171
                updateStyle(pm.sourceFolders);
Lines 190-196 Link Here
190
        if (subprojects.size() > 0) {
194
        if (subprojects.size() > 0) {
191
            JavaProjectGenerator.putSubprojects(helper, subprojects);
195
            JavaProjectGenerator.putSubprojects(helper, subprojects);
192
        }
196
        }
193
        
197
        if (model.encoding != null) {
198
            JavaProjectGenerator.putEncoding(helper, model.encoding);
199
        }
194
        model.resetState();
200
        model.resetState();
195
    }
201
    }
196
    
202
    
Lines 225-230 Link Here
225
                List<String> buildFiles = JavaProjectGenerator.getBuildFiles(model.getEvaluator(), 
231
                List<String> buildFiles = JavaProjectGenerator.getBuildFiles(model.getEvaluator(), 
226
                    model.javaCompilationUnitsList, model.baseFolder, model.nbProjectFolder);
232
                    model.javaCompilationUnitsList, model.baseFolder, model.nbProjectFolder);
227
                JavaProjectGenerator.putBuildFiles(helper, buildFiles);
233
                JavaProjectGenerator.putBuildFiles(helper, buildFiles);
234
                
235
                JavaProjectGenerator.putEncoding(helper, model.encoding);
228
                
236
                
229
                return null;
237
                return null;
230
            }
238
            }

Return to bug 120508