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 182711
Collapse All | Expand All

(-)a/cnd.makeproject/nbproject/project.properties (-1 / +1 lines)
Lines 3-6 Link Here
3
3
4
sigtest.mail=cvs@cnd.netbeans.org
4
sigtest.mail=cvs@cnd.netbeans.org
5
5
6
spec.version.base=1.10.0
6
spec.version.base=1.10.1
(-)a/cnd.makeproject/nbproject/project.xml (-1 / +1 lines)
Lines 142-148 Link Here
142
                    <compile-dependency/>
142
                    <compile-dependency/>
143
                    <run-dependency>
143
                    <run-dependency>
144
                        <release-version>1</release-version>
144
                        <release-version>1</release-version>
145
                        <specification-version>1.13.1.5</specification-version>
145
                        <specification-version>1.41</specification-version>
146
                    </run-dependency>
146
                    </run-dependency>
147
                </dependency>
147
                </dependency>
148
                <dependency>
148
                <dependency>
(-)a/cnd.makeproject/src/org/netbeans/modules/cnd/makeproject/configurations/ui/ProjectPropPanel.java (-94 / +3 lines)
Lines 40-60 Link Here
40
 */
40
 */
41
package org.netbeans.modules.cnd.makeproject.configurations.ui;
41
package org.netbeans.modules.cnd.makeproject.configurations.ui;
42
42
43
import java.util.logging.Level;
44
import javax.swing.plaf.UIResource;
45
import java.awt.Component;
46
import java.awt.event.ActionEvent;
43
import java.awt.event.ActionEvent;
47
import java.awt.event.ActionListener;
44
import java.awt.event.ActionListener;
48
import java.nio.charset.Charset;
45
import java.nio.charset.Charset;
49
import java.nio.charset.CharsetDecoder;
50
import java.nio.charset.CharsetEncoder;
51
import java.nio.charset.IllegalCharsetNameException;
52
import java.util.List;
46
import java.util.List;
53
import java.util.logging.Logger;
54
import javax.swing.DefaultComboBoxModel;
55
import javax.swing.JLabel;
56
import javax.swing.JList;
57
import javax.swing.ListCellRenderer;
58
import org.netbeans.api.project.Project;
47
import org.netbeans.api.project.Project;
59
import org.netbeans.modules.cnd.makeproject.MakeProject;
48
import org.netbeans.modules.cnd.makeproject.MakeProject;
60
import org.netbeans.modules.cnd.makeproject.api.MakeCustomizerProvider;
49
import org.netbeans.modules.cnd.makeproject.api.MakeCustomizerProvider;
Lines 62-67 Link Here
62
import org.netbeans.modules.cnd.makeproject.api.configurations.MakeConfigurationDescriptor;
51
import org.netbeans.modules.cnd.makeproject.api.configurations.MakeConfigurationDescriptor;
63
import org.netbeans.modules.cnd.makeproject.ui.customizer.MakeContext;
52
import org.netbeans.modules.cnd.makeproject.ui.customizer.MakeContext;
64
import org.netbeans.modules.cnd.makeproject.ui.utils.DirectoryChooserInnerPanel;
53
import org.netbeans.modules.cnd.makeproject.ui.utils.DirectoryChooserInnerPanel;
54
import org.netbeans.spi.project.ui.support.ProjectCustomizer;
65
import org.openide.filesystems.FileUtil;
55
import org.openide.filesystems.FileUtil;
66
import org.openide.util.NbBundle;
56
import org.openide.util.NbBundle;
67
57
Lines 99-107 Link Here
99
            originalEncoding = Charset.defaultCharset().name();
89
            originalEncoding = Charset.defaultCharset().name();
100
        }
90
        }
101
91
102
        encoding.setModel(new EncodingModel(this.originalEncoding));
92
        encoding.setModel(ProjectCustomizer.createEncodingModel(originalEncoding));
103
        encoding.setRenderer(new EncodingRenderer());
93
        encoding.setRenderer(ProjectCustomizer.createEncodingRenderer());
104
105
94
106
        encoding.addActionListener(new ActionListener() {
95
        encoding.addActionListener(new ActionListener() {
107
96
Lines 133-218 Link Here
133
        makeConfigurationDescriptor.setFolderVisibilityQuery(ignoreFoldersTextField.getText());
122
        makeConfigurationDescriptor.setFolderVisibilityQuery(ignoreFoldersTextField.getText());
134
    }
123
    }
135
124
136
    private static class EncodingRenderer extends JLabel implements ListCellRenderer, UIResource {
137
138
        public EncodingRenderer() {
139
            setOpaque(true);
140
        }
141
142
        @Override
143
        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
144
            assert value instanceof Charset;
145
            setName("ComboBox.listRenderer"); // NOI18N
146
            setText(((Charset) value).displayName());
147
            setIcon(null);
148
            if (isSelected) {
149
                setBackground(list.getSelectionBackground());
150
                setForeground(list.getSelectionForeground());
151
            } else {
152
                setBackground(list.getBackground());
153
                setForeground(list.getForeground());
154
            }
155
            return this;
156
        }
157
158
        @Override
159
        public String getName() {
160
            String name = super.getName();
161
            return name == null ? "ComboBox.renderer" : name; // NOI18N
162
        }
163
    }
164
165
    private static class EncodingModel extends DefaultComboBoxModel {
166
167
        public EncodingModel(String originalEncoding) {
168
            Charset defEnc = null;
169
            for (Charset c : Charset.availableCharsets().values()) {
170
                if (c.name().equals(originalEncoding)) {
171
                    defEnc = c;
172
                }
173
                addElement(c);
174
            }
175
            if (defEnc == null) {
176
                //Create artificial Charset to keep the original value
177
                //May happen when the project was set up on the platform
178
                //which supports more encodings
179
                try {
180
                    defEnc = new UnknownCharset(originalEncoding);
181
                    addElement(defEnc);
182
                } catch (IllegalCharsetNameException e) {
183
                    //The source.encoding property is completely broken
184
                    Logger.getLogger(this.getClass().getName()).log(Level.INFO, "IllegalCharsetName: {0}", originalEncoding);
185
                }
186
            }
187
            if (defEnc == null) {
188
                defEnc = Charset.defaultCharset();
189
            }
190
            setSelectedItem(defEnc);
191
        }
192
    }
193
194
    private static class UnknownCharset extends Charset {
195
196
        UnknownCharset(String name) {
197
            super(name, new String[0]);
198
        }
199
200
        @Override
201
        public boolean contains(Charset c) {
202
            throw new UnsupportedOperationException();
203
        }
204
205
        @Override
206
        public CharsetDecoder newDecoder() {
207
            throw new UnsupportedOperationException();
208
        }
209
210
        @Override
211
        public CharsetEncoder newEncoder() {
212
            throw new UnsupportedOperationException();
213
        }
214
    }
215
216
    private static class SourceRootChooser extends DirectoryChooserInnerPanel {
125
    private static class SourceRootChooser extends DirectoryChooserInnerPanel {
217
126
218
        public SourceRootChooser(String baseDir, List<String> feed) {
127
        public SourceRootChooser(String baseDir, List<String> feed) {
(-)a/j2ee.ejbjarproject/manifest.mf (-1 / +1 lines)
Lines 2-7 Link Here
2
OpenIDE-Module: org.netbeans.modules.j2ee.ejbjarproject
2
OpenIDE-Module: org.netbeans.modules.j2ee.ejbjarproject
3
OpenIDE-Module-Layer: org/netbeans/modules/j2ee/ejbjarproject/ui/resources/layer.xml
3
OpenIDE-Module-Layer: org/netbeans/modules/j2ee/ejbjarproject/ui/resources/layer.xml
4
OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/j2ee/ejbjarproject/Bundle.properties
4
OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/j2ee/ejbjarproject/Bundle.properties
5
OpenIDE-Module-Specification-Version: 1.21
5
OpenIDE-Module-Specification-Version: 1.22
6
AutoUpdate-Show-In-Client: false
6
AutoUpdate-Show-In-Client: false
7
7
(-)a/j2ee.ejbjarproject/nbproject/project.xml (-1 / +1 lines)
Lines 315-321 Link Here
315
                    <compile-dependency/>
315
                    <compile-dependency/>
316
                    <run-dependency>
316
                    <run-dependency>
317
                        <release-version>1</release-version>
317
                        <release-version>1</release-version>
318
                        <specification-version>1.31</specification-version>
318
                        <specification-version>1.41</specification-version>
319
                    </run-dependency>
319
                    </run-dependency>
320
                </dependency>
320
                </dependency>
321
                <dependency>
321
                <dependency>
(-)a/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/ui/customizer/CustomizerSources.java (-2 / +3 lines)
Lines 70-75 Link Here
70
import org.netbeans.modules.j2ee.ejbjarproject.EjbJarProject;
70
import org.netbeans.modules.j2ee.ejbjarproject.EjbJarProject;
71
import org.netbeans.spi.java.project.support.ui.IncludeExcludeVisualizer;
71
import org.netbeans.spi.java.project.support.ui.IncludeExcludeVisualizer;
72
import org.netbeans.spi.project.support.ant.PropertyUtils;
72
import org.netbeans.spi.project.support.ant.PropertyUtils;
73
import org.netbeans.spi.project.ui.support.ProjectCustomizer;
73
import org.openide.DialogDescriptor;
74
import org.openide.DialogDescriptor;
74
import org.openide.DialogDisplayer;
75
import org.openide.DialogDisplayer;
75
import org.openide.NotifyDescriptor;
76
import org.openide.NotifyDescriptor;
Lines 144-151 Link Here
144
            this.originalEncoding = Charset.defaultCharset().name();
145
            this.originalEncoding = Charset.defaultCharset().name();
145
        }
146
        }
146
        
147
        
147
        this.encoding.setModel(new EncodingModel(this.originalEncoding));
148
        this.encoding.setModel(ProjectCustomizer.createEncodingModel(originalEncoding));
148
        this.encoding.setRenderer(new EncodingRenderer());
149
        this.encoding.setRenderer(ProjectCustomizer.createEncodingRenderer());
149
        final String lafid = UIManager.getLookAndFeel().getID();
150
        final String lafid = UIManager.getLookAndFeel().getID();
150
        if (!"Aqua".equals(lafid)) { // NOI18N
151
        if (!"Aqua".equals(lafid)) { // NOI18N
151
             encoding.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE); // NOI18N
152
             encoding.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE); // NOI18N
(-)a/java.j2seproject/nbproject/project.properties (-1 / +1 lines)
Lines 39-45 Link Here
39
39
40
javac.compilerargs=-Xlint -Xlint:-serial
40
javac.compilerargs=-Xlint -Xlint:-serial
41
javac.source=1.6
41
javac.source=1.6
42
spec.version.base=1.36.0
42
spec.version.base=1.36.1
43
43
44
javadoc.arch=${basedir}/arch.xml
44
javadoc.arch=${basedir}/arch.xml
45
javadoc.apichanges=${basedir}/apichanges.xml
45
javadoc.apichanges=${basedir}/apichanges.xml
(-)a/java.j2seproject/src/org/netbeans/modules/java/j2seproject/ui/customizer/CustomizerSources.java (-90 / +3 lines)
Lines 41-47 Link Here
41
41
42
package org.netbeans.modules.java.j2seproject.ui.customizer;
42
package org.netbeans.modules.java.j2seproject.ui.customizer;
43
43
44
import java.awt.Component;
45
import java.awt.Font;
44
import java.awt.Font;
46
import java.awt.Graphics;
45
import java.awt.Graphics;
47
import java.awt.event.ActionEvent;
46
import java.awt.event.ActionEvent;
Lines 50-75 Link Here
50
import java.awt.event.ComponentEvent;
49
import java.awt.event.ComponentEvent;
51
import java.io.File;
50
import java.io.File;
52
import java.nio.charset.Charset;
51
import java.nio.charset.Charset;
53
import java.nio.charset.CharsetDecoder;
54
import java.nio.charset.CharsetEncoder;
55
import java.nio.charset.IllegalCharsetNameException;
56
import java.util.logging.Logger;
57
import javax.swing.DefaultCellEditor;
52
import javax.swing.DefaultCellEditor;
58
import javax.swing.DefaultComboBoxModel;
59
import javax.swing.JLabel;
60
import javax.swing.JList;
61
import javax.swing.JTable;
53
import javax.swing.JTable;
62
import javax.swing.JTextField;
54
import javax.swing.JTextField;
63
import javax.swing.ListCellRenderer;
64
import javax.swing.ListSelectionModel;
55
import javax.swing.ListSelectionModel;
65
import javax.swing.UIManager;
56
import javax.swing.UIManager;
66
import javax.swing.event.ListDataEvent;
57
import javax.swing.event.ListDataEvent;
67
import javax.swing.event.ListDataListener;
58
import javax.swing.event.ListDataListener;
68
import javax.swing.plaf.UIResource;
69
import javax.swing.table.TableColumn;
59
import javax.swing.table.TableColumn;
70
import javax.swing.table.TableModel;
60
import javax.swing.table.TableModel;
71
import org.netbeans.modules.java.api.common.project.ui.customizer.SourceRootsUi;
61
import org.netbeans.modules.java.api.common.project.ui.customizer.SourceRootsUi;
72
import org.netbeans.spi.java.project.support.ui.IncludeExcludeVisualizer;
62
import org.netbeans.spi.java.project.support.ui.IncludeExcludeVisualizer;
63
import org.netbeans.spi.project.ui.support.ProjectCustomizer;
73
import org.openide.DialogDescriptor;
64
import org.openide.DialogDescriptor;
74
import org.openide.DialogDisplayer;
65
import org.openide.DialogDisplayer;
75
import org.openide.NotifyDescriptor;
66
import org.openide.NotifyDescriptor;
Lines 152-159 Link Here
152
            this.originalEncoding = Charset.defaultCharset().name();
143
            this.originalEncoding = Charset.defaultCharset().name();
153
        }
144
        }
154
        
145
        
155
        this.encoding.setModel(new EncodingModel(this.originalEncoding));
146
        this.encoding.setModel(ProjectCustomizer.createEncodingModel(originalEncoding));
156
        this.encoding.setRenderer(new EncodingRenderer());
147
        this.encoding.setRenderer(ProjectCustomizer.createEncodingRenderer());
157
        final String lafid = UIManager.getLookAndFeel().getID();
148
        final String lafid = UIManager.getLookAndFeel().getID();
158
        if (!"Aqua".equals(lafid)) { //NOI18N
149
        if (!"Aqua".equals(lafid)) { //NOI18N
159
            this.encoding.putClientProperty ("JComboBox.isTableCellEditor", Boolean.TRUE);    //NOI18N
150
            this.encoding.putClientProperty ("JComboBox.isTableCellEditor", Boolean.TRUE);    //NOI18N
Lines 243-326 Link Here
243
        this.sourceLevel.setEnabled(sourceLevel.getItemCount()>0);
234
        this.sourceLevel.setEnabled(sourceLevel.getItemCount()>0);
244
    }
235
    }
245
    
236
    
246
    
247
    private static class EncodingRenderer extends JLabel implements ListCellRenderer, UIResource {
248
        
249
        public EncodingRenderer() {
250
            setOpaque(true);
251
        }
252
        
253
        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
254
            assert value instanceof Charset;
255
            setName("ComboBox.listRenderer"); // NOI18N
256
            setText(((Charset) value).displayName());
257
            setIcon(null);
258
            if (isSelected) {
259
                setBackground(list.getSelectionBackground());
260
                setForeground(list.getSelectionForeground());             
261
            } else {
262
                setBackground(list.getBackground());
263
                setForeground(list.getForeground());
264
            }
265
            return this;
266
        }
267
        
268
        @Override
269
        public String getName() {
270
            String name = super.getName();
271
            return name == null ? "ComboBox.renderer" : name; // NOI18N
272
        }
273
        
274
    }
275
    
276
    private static class EncodingModel extends DefaultComboBoxModel {
277
        
278
        public EncodingModel (String originalEncoding) {
279
            Charset defEnc = null;
280
            for (Charset c : Charset.availableCharsets().values()) {
281
                if (c.name().equals(originalEncoding)) {
282
                    defEnc = c;
283
                }
284
                addElement(c);
285
            }
286
            if (defEnc == null) {
287
                //Create artificial Charset to keep the original value
288
                //May happen when the project was set up on the platform
289
                //which supports more encodings
290
                try {
291
                    defEnc = new UnknownCharset (originalEncoding);
292
                    addElement(defEnc);
293
                } catch (IllegalCharsetNameException e) {
294
                    //The source.encoding property is completely broken
295
                    Logger.getLogger(this.getClass().getName()).info("IllegalCharsetName: " + originalEncoding);
296
                }
297
            }
298
            if (defEnc == null) {
299
                defEnc = Charset.defaultCharset();
300
            }
301
            setSelectedItem(defEnc);
302
        }
303
    }
304
    
305
    private static class UnknownCharset extends Charset {
306
        
307
        UnknownCharset (String name) {
308
            super (name, new String[0]);
309
        }
310
    
311
        public boolean contains(Charset c) {
312
            throw new UnsupportedOperationException();
313
        }
314
315
        public CharsetDecoder newDecoder() {
316
            throw new UnsupportedOperationException();
317
        }
318
319
        public CharsetEncoder newEncoder() {
320
            throw new UnsupportedOperationException();
321
        }
322
}
323
    
324
    private static class ResizableRowHeightTable extends JTable {
237
    private static class ResizableRowHeightTable extends JTable {
325
238
326
        private boolean needResize = true;
239
        private boolean needResize = true;
(-)a/javacard.project/manifest.mf (-1 / +1 lines)
Lines 4-9 Link Here
4
OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/javacard/Bundle.properties
4
OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/javacard/Bundle.properties
5
OpenIDE-Module-Requires: org.openide.windows.IOProvider
5
OpenIDE-Module-Requires: org.openide.windows.IOProvider
6
OpenIDE-Module-Provides: org.netbeans.modules.javacard.JavacardPlatform
6
OpenIDE-Module-Provides: org.netbeans.modules.javacard.JavacardPlatform
7
OpenIDE-Module-Specification-Version: 1.17
7
OpenIDE-Module-Specification-Version: 1.18
8
AutoUpdate-Show-In-Client: false
8
AutoUpdate-Show-In-Client: false
9
9
(-)a/javacard.project/nbproject/project.xml (-1 / +4 lines)
Lines 196-202 Link Here
196
                    <compile-dependency/>
196
                    <compile-dependency/>
197
                    <run-dependency>
197
                    <run-dependency>
198
                        <release-version>1</release-version>
198
                        <release-version>1</release-version>
199
                        <specification-version>1.24.1.6</specification-version>
199
                        <specification-version>1.41</specification-version>
200
                    </run-dependency>
200
                    </run-dependency>
201
                </dependency>
201
                </dependency>
202
                <dependency>
202
                <dependency>
Lines 360-365 Link Here
360
                    <code-name-base>org.openide.util.lookup</code-name-base>
360
                    <code-name-base>org.openide.util.lookup</code-name-base>
361
                    <build-prerequisite/>
361
                    <build-prerequisite/>
362
                    <compile-dependency/>
362
                    <compile-dependency/>
363
                    <run-dependency>
364
                        <specification-version>8.2</specification-version>
365
                    </run-dependency>
363
                </dependency>
366
                </dependency>
364
                <dependency>
367
                <dependency>
365
                    <code-name-base>org.openide.windows</code-name-base>
368
                    <code-name-base>org.openide.windows</code-name-base>
(-)a/javacard.project/src/org/netbeans/modules/javacard/project/customizer/CustomizerSources.java (-89 / +3 lines)
Lines 51-57 Link Here
51
import org.openide.util.NbBundle;
51
import org.openide.util.NbBundle;
52
52
53
import javax.swing.*;
53
import javax.swing.*;
54
import javax.swing.plaf.UIResource;
55
import javax.swing.table.TableColumn;
54
import javax.swing.table.TableColumn;
56
import javax.swing.table.TableModel;
55
import javax.swing.table.TableModel;
57
import java.awt.*;
56
import java.awt.*;
Lines 61-74 Link Here
61
import java.awt.event.ComponentEvent;
60
import java.awt.event.ComponentEvent;
62
import java.io.File;
61
import java.io.File;
63
import java.nio.charset.Charset;
62
import java.nio.charset.Charset;
64
import java.nio.charset.CharsetDecoder;
65
import java.nio.charset.CharsetEncoder;
66
import java.nio.charset.IllegalCharsetNameException;
67
import java.util.HashSet;
63
import java.util.HashSet;
68
import java.util.Set;
64
import java.util.Set;
69
import java.util.logging.Logger;
70
import javax.swing.table.DefaultTableModel;
65
import javax.swing.table.DefaultTableModel;
71
import org.netbeans.modules.javacard.common.GuiUtils;
66
import org.netbeans.modules.javacard.common.GuiUtils;
67
import org.netbeans.spi.project.ui.support.ProjectCustomizer;
72
68
73
/**
69
/**
74
 * Customizer panel "Sources": source roots, level, includes/excludes.
70
 * Customizer panel "Sources": source roots, level, includes/excludes.
Lines 115-122 Link Here
115
            this.originalEncoding = Charset.defaultCharset().name();
111
            this.originalEncoding = Charset.defaultCharset().name();
116
        }
112
        }
117
        
113
        
118
        this.encoding.setModel(new EncodingModel(this.originalEncoding));
114
        this.encoding.setModel(ProjectCustomizer.createEncodingModel(originalEncoding));
119
        this.encoding.setRenderer(new EncodingRenderer());
115
        this.encoding.setRenderer(ProjectCustomizer.createEncodingRenderer());
120
        final String lafid = UIManager.getLookAndFeel().getID();
116
        final String lafid = UIManager.getLookAndFeel().getID();
121
        if (!"Aqua".equals(lafid)) { //NOI18N
117
        if (!"Aqua".equals(lafid)) { //NOI18N
122
            this.encoding.putClientProperty ("JComboBox.isTableCellEditor", Boolean.TRUE);    //NOI18N
118
            this.encoding.putClientProperty ("JComboBox.isTableCellEditor", Boolean.TRUE);    //NOI18N
Lines 208-296 Link Here
208
    private void enableSourceLevel () {
204
    private void enableSourceLevel () {
209
        this.sourceLevel.setEnabled(sourceLevel.getItemCount()>0);
205
        this.sourceLevel.setEnabled(sourceLevel.getItemCount()>0);
210
    }
206
    }
211
    
212
    
213
    private static class EncodingRenderer extends JLabel implements ListCellRenderer, UIResource {
214
        
207
        
215
        public EncodingRenderer() {
216
            setOpaque(true);
217
        }
218
        
219
        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
220
            assert value instanceof Charset;
221
            setName("ComboBox.listRenderer"); // NOI18N
222
            setText(((Charset) value).displayName());
223
            setIcon(null);
224
            if (isSelected) {
225
                setBackground(list.getSelectionBackground());
226
                setForeground(list.getSelectionForeground());             
227
            } else {
228
                setBackground(list.getBackground());
229
                setForeground(list.getForeground());
230
            }
231
            return this;
232
        }
233
        
234
        @Override
235
        public String getName() {
236
            String name = super.getName();
237
            return name == null ? "ComboBox.renderer" : name; // NOI18N
238
        }
239
        
240
    }
241
    
242
    private static class EncodingModel extends DefaultComboBoxModel {
243
        
244
        public EncodingModel (String originalEncoding) {
245
            Charset defEnc = null;
246
            for (Charset c : Charset.availableCharsets().values()) {
247
                if (c.name().equals(originalEncoding)) {
248
                    defEnc = c;
249
                }
250
                addElement(c);
251
            }
252
            if (defEnc == null) {
253
                //Create artificial Charset to keep the original value
254
                //May happen when the project was set up on the platform
255
                //which supports more encodings
256
                try {
257
                    defEnc = new UnknownCharset (originalEncoding);
258
                    addElement(defEnc);
259
                } catch (IllegalCharsetNameException e) {
260
                    //The source.encoding property is completely broken
261
                    Logger.getLogger(this.getClass().getName()).info(
262
                            "IllegalCharsetName: " + originalEncoding); //NOI18N
263
                }
264
            }
265
            if (defEnc == null) {
266
                defEnc = Charset.defaultCharset();
267
            }
268
            setSelectedItem(defEnc);
269
        }
270
    }
271
    
272
    private static class UnknownCharset extends Charset {
273
        
274
        UnknownCharset (String name) {
275
            super (name, new String[0]);
276
        }
277
    
278
        @Override
279
        public boolean contains(Charset c) {
280
            throw new UnsupportedOperationException();
281
        }
282
283
        @Override
284
        public CharsetDecoder newDecoder() {
285
            throw new UnsupportedOperationException();
286
        }
287
288
        @Override
289
        public CharsetEncoder newEncoder() {
290
            throw new UnsupportedOperationException();
291
        }
292
}
293
    
294
    private static class ResizableRowHeightTable extends JTable {
208
    private static class ResizableRowHeightTable extends JTable {
295
209
296
        private boolean needResize = true;
210
        private boolean needResize = true;
(-)a/maven/manifest.mf (-1 / +1 lines)
Lines 1-7 Link Here
1
Manifest-Version: 1.0
1
Manifest-Version: 1.0
2
OpenIDE-Module: org.netbeans.modules.maven/1
2
OpenIDE-Module: org.netbeans.modules.maven/1
3
OpenIDE-Module-Requires: org.netbeans.api.javahelp.Help
3
OpenIDE-Module-Requires: org.netbeans.api.javahelp.Help
4
OpenIDE-Module-Specification-Version: 1.6
4
OpenIDE-Module-Specification-Version: 1.7
5
OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/maven/Bundle.properties
5
OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/maven/Bundle.properties
6
OpenIDE-Module-Layer: org/netbeans/modules/maven/layer.xml
6
OpenIDE-Module-Layer: org/netbeans/modules/maven/layer.xml
7
OpenIDE-Module-Install: org/netbeans/modules/maven/ModInstall.class
7
OpenIDE-Module-Install: org/netbeans/modules/maven/ModInstall.class
(-)a/maven/src/org/netbeans/modules/maven/customizer/SourcesPanel.java (-64 / +3 lines)
Lines 60-65 Link Here
60
import org.netbeans.api.java.queries.SourceLevelQuery;
60
import org.netbeans.api.java.queries.SourceLevelQuery;
61
import org.netbeans.api.queries.FileEncodingQuery;
61
import org.netbeans.api.queries.FileEncodingQuery;
62
import org.netbeans.modules.maven.api.ModelUtils;
62
import org.netbeans.modules.maven.api.ModelUtils;
63
import org.netbeans.spi.project.ui.support.ProjectCustomizer;
63
import org.openide.filesystems.FileObject;
64
import org.openide.filesystems.FileObject;
64
import org.openide.filesystems.FileUtil;
65
import org.openide.filesystems.FileUtil;
65
66
Lines 115-122 Link Here
115
        }
116
        }
116
        defaultEncoding = Charset.defaultCharset().toString();
117
        defaultEncoding = Charset.defaultCharset().toString();
117
        
118
        
118
        comEncoding.setModel(new EncodingModel(encoding));
119
        comEncoding.setModel(ProjectCustomizer.createEncodingModel(encoding));
119
        comEncoding.setRenderer(new EncodingRenderer());
120
        comEncoding.setRenderer(ProjectCustomizer.createEncodingRenderer());
120
        
121
        
121
        comSourceLevel.addActionListener(new ActionListener() {
122
        comSourceLevel.addActionListener(new ActionListener() {
122
            @Override
123
            @Override
Lines 163-230 Link Here
163
        }
164
        }
164
    }
165
    }
165
    
166
    
166
    
167
168
    private static class EncodingRenderer extends DefaultListCellRenderer {
169
        
170
        @Override
171
        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
172
            assert value instanceof Charset; 
173
            return super.getListCellRendererComponent(list, ((Charset)value).displayName(), index, isSelected, cellHasFocus);
174
        }
175
    }
176
    
177
    private static class EncodingModel extends DefaultComboBoxModel {
178
        
179
        public EncodingModel (String originalEncoding) {
180
            Charset defEnc = null;
181
            for (Charset c : Charset.availableCharsets().values()) {
182
                if (c.name().equals(originalEncoding)) {
183
                    defEnc = c;
184
                }
185
                addElement(c);
186
            }
187
            if (defEnc == null) {
188
                //Create artificial Charset to keep the original value
189
                //May happen when the project was set up on the platform
190
                //which supports more encodings
191
                try {
192
                    defEnc = new UnknownCharset (originalEncoding);
193
                    addElement(defEnc);
194
                } catch (IllegalCharsetNameException e) {
195
                    //The source.encoding property is completely broken
196
                    Logger.getLogger(this.getClass().getName()).info("IllegalCharsetName: " + originalEncoding); //NOI18N
197
                }
198
            }
199
            if (defEnc == null) {
200
                defEnc = FileEncodingQuery.getDefaultEncoding();
201
            }
202
            setSelectedItem(defEnc);
203
        }
204
    }
205
    
206
    private static class UnknownCharset extends Charset {
207
        
208
        UnknownCharset (String name) {
209
            super (name, new String[0]);
210
        }
211
    
212
        @Override
213
        public boolean contains(Charset c) {
214
            throw new UnsupportedOperationException();
215
        }
216
217
        @Override
218
        public CharsetDecoder newDecoder() {
219
            throw new UnsupportedOperationException();
220
        }
221
222
        @Override
223
        public CharsetEncoder newEncoder() {
224
            throw new UnsupportedOperationException();
225
        }
226
}
227
    
228
    /** This method is called from within the constructor to
167
    /** This method is called from within the constructor to
229
     * initialize the form.
168
     * initialize the form.
230
     * WARNING: Do NOT modify this code. The content of this method is
169
     * WARNING: Do NOT modify this code. The content of this method is
(-)a/php.project/manifest.mf (-1 / +1 lines)
Lines 1-6 Link Here
1
Manifest-Version: 1.0
1
Manifest-Version: 1.0
2
AutoUpdate-Show-In-Client: false
2
AutoUpdate-Show-In-Client: false
3
OpenIDE-Module-Specification-Version: 2.25
3
OpenIDE-Module-Specification-Version: 2.26
4
OpenIDE-Module: org.netbeans.modules.php.project
4
OpenIDE-Module: org.netbeans.modules.php.project
5
OpenIDE-Module-Layer: org/netbeans/modules/php/project/resources/layer.xml
5
OpenIDE-Module-Layer: org/netbeans/modules/php/project/resources/layer.xml
6
OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/php/project/resources/Bundle.properties
6
OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/php/project/resources/Bundle.properties
(-)a/php.project/nbproject/project.xml (-1 / +1 lines)
Lines 201-207 Link Here
201
                    <compile-dependency/>
201
                    <compile-dependency/>
202
                    <run-dependency>
202
                    <run-dependency>
203
                        <release-version>1</release-version>
203
                        <release-version>1</release-version>
204
                        <specification-version>1.22</specification-version>
204
                        <specification-version>1.41</specification-version>
205
                    </run-dependency>
205
                    </run-dependency>
206
                </dependency>
206
                </dependency>
207
                <dependency>
207
                <dependency>
(-)a/php.project/src/org/netbeans/modules/php/project/ui/Utils.java (-86 lines)
Lines 617-708 Link Here
617
        return secure;
617
        return secure;
618
    }
618
    }
619
619
620
    public static class EncodingModel extends DefaultComboBoxModel {
621
        private static final long serialVersionUID = -3139920099217726436L;
622
623
        public EncodingModel() {
624
            this(null);
625
        }
626
627
        public EncodingModel(String originalEncoding) {
628
            Charset defEnc = null;
629
            for (Charset c : Charset.availableCharsets().values()) {
630
                if (c.name().equals(originalEncoding)) {
631
                    defEnc = c;
632
                }
633
                addElement(c);
634
            }
635
            if (defEnc == null && originalEncoding != null) {
636
                //Create artificial Charset to keep the original value
637
                //May happen when the project was set up on the platform
638
                //which supports more encodings
639
                try {
640
                    defEnc = new UnknownCharset(originalEncoding);
641
                    addElement(defEnc);
642
                } catch (IllegalCharsetNameException e) {
643
                    //The source.encoding property is completely broken
644
                    Logger.getLogger(EncodingModel.class.getName()).info("IllegalCharsetName: " + originalEncoding);
645
                }
646
            }
647
            if (defEnc == null) {
648
                defEnc = Charset.defaultCharset();
649
            }
650
            setSelectedItem(defEnc);
651
        }
652
    }
653
654
    public static class EncodingRenderer extends JLabel implements ListCellRenderer, UIResource {
655
        private static final long serialVersionUID = 3196531352192214602L;
656
657
        public EncodingRenderer() {
658
            setOpaque(true);
659
        }
660
661
        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
662
                boolean cellHasFocus) {
663
            setName("ComboBox.listRenderer"); // NOI18N
664
            // #175238
665
            if (value != null) {
666
                assert value instanceof Charset;
667
                setText(((Charset) value).displayName());
668
            }
669
            setIcon(null);
670
            if (isSelected) {
671
                setBackground(list.getSelectionBackground());
672
                setForeground(list.getSelectionForeground());
673
            } else {
674
                setBackground(list.getBackground());
675
                setForeground(list.getForeground());
676
            }
677
            return this;
678
        }
679
680
        @Override
681
        public String getName() {
682
            String name = super.getName();
683
            return name == null ? "ComboBox.renderer" : name; // NOI18N
684
        }
685
    }
686
687
    private static class UnknownCharset extends Charset {
688
689
        UnknownCharset(String name) {
690
            super(name, new String[0]);
691
        }
692
693
        public boolean contains(Charset c) {
694
            throw new UnsupportedOperationException();
695
        }
696
697
        public CharsetDecoder newDecoder() {
698
            throw new UnsupportedOperationException();
699
        }
700
701
        public CharsetEncoder newEncoder() {
702
            throw new UnsupportedOperationException();
703
        }
704
    }
705
706
    /**
620
    /**
707
     * Display Options dialog with PHP > General panel preselected.
621
     * Display Options dialog with PHP > General panel preselected.
708
     */
622
     */
(-)a/php.project/src/org/netbeans/modules/php/project/ui/customizer/CustomizerSources.java (-4 / +3 lines)
Lines 66-76 Link Here
66
import org.netbeans.modules.php.project.ui.LocalServer;
66
import org.netbeans.modules.php.project.ui.LocalServer;
67
import org.netbeans.modules.php.project.ui.LocalServerController;
67
import org.netbeans.modules.php.project.ui.LocalServerController;
68
import org.netbeans.modules.php.project.ui.Utils;
68
import org.netbeans.modules.php.project.ui.Utils;
69
import org.netbeans.modules.php.project.ui.Utils.EncodingModel;
70
import org.netbeans.modules.php.project.ui.Utils.EncodingRenderer;
71
import org.netbeans.modules.php.project.ui.Utils.PhpVersionComboBoxModel;
69
import org.netbeans.modules.php.project.ui.Utils.PhpVersionComboBoxModel;
72
import org.netbeans.modules.php.project.ui.SourcesFolderProvider;
70
import org.netbeans.modules.php.project.ui.SourcesFolderProvider;
73
import org.netbeans.spi.project.support.ant.PropertyUtils;
71
import org.netbeans.spi.project.support.ant.PropertyUtils;
72
import org.netbeans.spi.project.ui.support.ProjectCustomizer;
74
import org.netbeans.spi.project.ui.support.ProjectCustomizer.Category;
73
import org.netbeans.spi.project.ui.support.ProjectCustomizer.Category;
75
import org.openide.DialogDisplayer;
74
import org.openide.DialogDisplayer;
76
import org.openide.NotifyDescriptor;
75
import org.openide.NotifyDescriptor;
Lines 174-181 Link Here
174
        if (originalEncoding == null) {
173
        if (originalEncoding == null) {
175
            originalEncoding = Charset.defaultCharset().name();
174
            originalEncoding = Charset.defaultCharset().name();
176
        }
175
        }
177
        encodingComboBox.setRenderer(new EncodingRenderer());
176
        encodingComboBox.setRenderer(ProjectCustomizer.createEncodingRenderer());
178
        encodingComboBox.setModel(new EncodingModel(originalEncoding));
177
        encodingComboBox.setModel(ProjectCustomizer.createEncodingModel(originalEncoding));
179
        final String lafid = UIManager.getLookAndFeel().getID();
178
        final String lafid = UIManager.getLookAndFeel().getID();
180
        if (!"Aqua".equals(lafid)) { // NOI18N
179
        if (!"Aqua".equals(lafid)) { // NOI18N
181
             encodingComboBox.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE); // NOI18N
180
             encodingComboBox.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE); // NOI18N
(-)a/php.project/src/org/netbeans/modules/php/project/ui/wizards/ConfigureExistingProjectPanelVisual.java (-4 / +3 lines)
Lines 58-66 Link Here
58
import org.netbeans.modules.php.project.ui.LastUsedFolders;
58
import org.netbeans.modules.php.project.ui.LastUsedFolders;
59
import org.netbeans.modules.php.project.ui.LocalServer;
59
import org.netbeans.modules.php.project.ui.LocalServer;
60
import org.netbeans.modules.php.project.ui.Utils;
60
import org.netbeans.modules.php.project.ui.Utils;
61
import org.netbeans.modules.php.project.ui.Utils.EncodingModel;
62
import org.netbeans.modules.php.project.ui.Utils.EncodingRenderer;
63
import org.netbeans.modules.php.project.ui.Utils.PhpVersionComboBoxModel;
61
import org.netbeans.modules.php.project.ui.Utils.PhpVersionComboBoxModel;
62
import org.netbeans.spi.project.ui.support.ProjectCustomizer;
64
import org.openide.awt.Mnemonics;
63
import org.openide.awt.Mnemonics;
65
import org.openide.util.NbBundle;
64
import org.openide.util.NbBundle;
66
65
Lines 82-89 Link Here
82
81
83
        phpVersionComboBox.setModel(new PhpVersionComboBoxModel());
82
        phpVersionComboBox.setModel(new PhpVersionComboBoxModel());
84
83
85
        encodingComboBox.setModel(new EncodingModel());
84
        encodingComboBox.setModel(ProjectCustomizer.createEncodingModel(Charset.defaultCharset().name()));
86
        encodingComboBox.setRenderer(new EncodingRenderer());
85
        encodingComboBox.setRenderer(ProjectCustomizer.createEncodingRenderer());
87
    }
86
    }
88
87
89
    @Override
88
    @Override
(-)a/php.project/src/org/netbeans/modules/php/project/ui/wizards/ConfigureNewProjectPanelVisual.java (-4 / +3 lines)
Lines 57-65 Link Here
57
import org.netbeans.modules.php.project.ui.LastUsedFolders;
57
import org.netbeans.modules.php.project.ui.LastUsedFolders;
58
import org.netbeans.modules.php.project.ui.LocalServer;
58
import org.netbeans.modules.php.project.ui.LocalServer;
59
import org.netbeans.modules.php.project.ui.LocalServerController;
59
import org.netbeans.modules.php.project.ui.LocalServerController;
60
import org.netbeans.modules.php.project.ui.Utils.EncodingModel;
61
import org.netbeans.modules.php.project.ui.Utils.EncodingRenderer;
62
import org.netbeans.modules.php.project.ui.Utils.PhpVersionComboBoxModel;
60
import org.netbeans.modules.php.project.ui.Utils.PhpVersionComboBoxModel;
61
import org.netbeans.spi.project.ui.support.ProjectCustomizer;
63
import org.openide.awt.Mnemonics;
62
import org.openide.awt.Mnemonics;
64
import org.openide.util.NbBundle;
63
import org.openide.util.NbBundle;
65
64
Lines 84-91 Link Here
84
83
85
        phpVersionComboBox.setModel(new PhpVersionComboBoxModel());
84
        phpVersionComboBox.setModel(new PhpVersionComboBoxModel());
86
85
87
        encodingComboBox.setModel(new EncodingModel());
86
        encodingComboBox.setModel(ProjectCustomizer.createEncodingModel(Charset.defaultCharset().name()));
88
        encodingComboBox.setRenderer(new EncodingRenderer());
87
        encodingComboBox.setRenderer(ProjectCustomizer.createEncodingRenderer());
89
    }
88
    }
90
89
91
    @Override
90
    @Override
(-)a/projectuiapi/nbproject/project.properties (-1 / +1 lines)
Lines 39-45 Link Here
39
39
40
javac.compilerargs=-Xlint -Xlint:-serial
40
javac.compilerargs=-Xlint -Xlint:-serial
41
javac.source=1.6
41
javac.source=1.6
42
spec.version.base=1.41.0
42
spec.version.base=1.41.1
43
is.autoload=true
43
is.autoload=true
44
javadoc.arch=${basedir}/arch.xml
44
javadoc.arch=${basedir}/arch.xml
45
javadoc.apichanges=${basedir}/apichanges.xml
45
javadoc.apichanges=${basedir}/apichanges.xml
(-)a/projectuiapi/src/org/netbeans/spi/project/ui/support/ProjectCustomizer.java (+98 lines)
Lines 41-46 Link Here
41
41
42
package org.netbeans.spi.project.ui.support;
42
package org.netbeans.spi.project.ui.support;
43
43
44
import java.awt.Component;
44
import java.awt.Dialog;
45
import java.awt.Dialog;
45
import java.awt.Image;
46
import java.awt.Image;
46
import java.awt.event.ActionListener;
47
import java.awt.event.ActionListener;
Lines 49-54 Link Here
49
import java.lang.annotation.Retention;
50
import java.lang.annotation.Retention;
50
import java.lang.annotation.RetentionPolicy;
51
import java.lang.annotation.RetentionPolicy;
51
import java.lang.annotation.Target;
52
import java.lang.annotation.Target;
53
import java.nio.charset.Charset;
54
import java.nio.charset.CharsetDecoder;
55
import java.nio.charset.CharsetEncoder;
56
import java.nio.charset.IllegalCharsetNameException;
52
import java.util.ArrayList;
57
import java.util.ArrayList;
53
import java.util.Collections;
58
import java.util.Collections;
54
import java.util.HashMap;
59
import java.util.HashMap;
Lines 56-63 Link Here
56
import java.util.Map;
61
import java.util.Map;
57
import java.util.logging.Level;
62
import java.util.logging.Level;
58
import java.util.logging.Logger;
63
import java.util.logging.Logger;
64
import javax.swing.ComboBoxModel;
65
import javax.swing.DefaultComboBoxModel;
66
import javax.swing.DefaultListCellRenderer;
59
import javax.swing.JComponent;
67
import javax.swing.JComponent;
68
import javax.swing.JList;
60
import javax.swing.JPanel;
69
import javax.swing.JPanel;
70
import javax.swing.ListCellRenderer;
61
71
62
import org.netbeans.modules.project.uiapi.CategoryModel;
72
import org.netbeans.modules.project.uiapi.CategoryModel;
63
import org.netbeans.modules.project.uiapi.CategoryView;
73
import org.netbeans.modules.project.uiapi.CategoryView;
Lines 774-777 Link Here
774
            return context;
784
            return context;
775
        }
785
        }
776
    }
786
    }
787
788
    /**
789
     * Create a new cell renderer for lists or combo boxes whose model
790
     * object type is Charset.
791
     * @return A renderer
792
     */
793
    public static ListCellRenderer createEncodingRenderer() {
794
        return new EncodingRenderer();
795
    }
796
797
    /**
798
     * Create a new combo box model of all available Charsets
799
     * whose initial selection is a Charset with the provided name.
800
     * If the provided name is null or not a known character set,
801
     * a dummy Charset instance will be used for the selection.
802
     *
803
     * @param initialCharset The initial character encoding, e.g. "UTF-8" or
804
     * Charset.defaultCharset().name()
805
     * @return A combo box model of all available character encodings
806
     */
807
    public static ComboBoxModel createEncodingModel(String initialCharset) {
808
        return new EncodingModel(initialCharset);
809
    }
810
811
    private static final class EncodingRenderer extends DefaultListCellRenderer {
812
        EncodingRenderer() {
813
            //Needed for synth?
814
            setName ("ComboBox.listRenderer"); //NOI18N
815
        }
816
817
        @Override
818
        public Component getListCellRendererComponent(JList list, Object value,
819
                int index, boolean isSelected, boolean isLeadSelection) {
820
            Object val = value == null ? "" : //NOI18N
821
                value instanceof Charset ? ((Charset) value).displayName() :
822
                value.toString();
823
            setText(val.toString());
824
            setIcon(null);
825
            return this;
826
        }
827
    }
828
829
    private static final class EncodingModel extends DefaultComboBoxModel {
830
831
        EncodingModel (String originalEncoding) {
832
            Charset defEnc = null;
833
            for (Charset c : Charset.availableCharsets().values()) {
834
                if (c.name().equals(originalEncoding)) {
835
                    defEnc = c;
836
                }
837
                addElement(c);
838
            }
839
            if (defEnc == null) {
840
                //Create artificial Charset to keep the original value
841
                //May happen when the project was set up on the platform
842
                //which supports more encodings
843
                try {
844
                    defEnc = new UnknownCharset (originalEncoding);
845
                    addElement(defEnc);
846
                } catch (IllegalCharsetNameException e) {
847
                    //The source.encoding property is completely broken
848
                    Logger.getLogger(this.getClass().getName()).info("IllegalCharsetName: " + originalEncoding);
849
                }
850
            }
851
            if (defEnc == null) {
852
                defEnc = Charset.defaultCharset();
853
            }
854
            setSelectedItem(defEnc);
855
        }
856
857
        private static final class UnknownCharset extends Charset {
858
            UnknownCharset (String name) {
859
                super (name, new String[0]);
860
            }
861
862
            public boolean contains(Charset c) {
863
                return false;
864
            }
865
866
            public CharsetDecoder newDecoder() {
867
                throw new UnsupportedOperationException();
868
            }
869
870
            public CharsetEncoder newEncoder() {
871
                throw new UnsupportedOperationException();
872
            }
873
        }
874
    }
777
}
875
}
(-)a/python.project/manifest.mf (-1 / +1 lines)
Lines 2-7 Link Here
2
OpenIDE-Module: org.netbeans.modules.python.project
2
OpenIDE-Module: org.netbeans.modules.python.project
3
OpenIDE-Module-Layer: org/netbeans/modules/python/project/layer.xml
3
OpenIDE-Module-Layer: org/netbeans/modules/python/project/layer.xml
4
OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/python/project/Bundle.properties
4
OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/python/project/Bundle.properties
5
OpenIDE-Module-Specification-Version: 0.1
5
OpenIDE-Module-Specification-Version: 0.2
6
AutoUpdate-Show-In-Client: false
6
AutoUpdate-Show-In-Client: false
7
7
(-)a/python.project/nbproject/project.xml (-1 / +1 lines)
Lines 73-79 Link Here
73
                    <compile-dependency/>
73
                    <compile-dependency/>
74
                    <run-dependency>
74
                    <run-dependency>
75
                        <release-version>1</release-version>
75
                        <release-version>1</release-version>
76
                        <specification-version>1.24.1.6</specification-version>
76
                        <specification-version>1.41.1.6</specification-version>
77
                    </run-dependency>
77
                    </run-dependency>
78
                </dependency>
78
                </dependency>
79
                <dependency>
79
                <dependency>
(-)a/python.project/src/org/netbeans/modules/python/project/ui/customizer/CustomizerSources.java (-79 / +3 lines)
Lines 72-77 Link Here
72
import javax.swing.table.TableModel;
72
import javax.swing.table.TableModel;
73
import org.netbeans.modules.python.project.ui.Utils;
73
import org.netbeans.modules.python.project.ui.Utils;
74
import org.netbeans.modules.python.project.util.Pair;
74
import org.netbeans.modules.python.project.util.Pair;
75
import org.netbeans.spi.project.ui.support.ProjectCustomizer;
75
import org.openide.DialogDisplayer;
76
import org.openide.DialogDisplayer;
76
import org.openide.NotifyDescriptor;
77
import org.openide.NotifyDescriptor;
77
import org.openide.filesystems.FileObject;
78
import org.openide.filesystems.FileObject;
Lines 140-147 Link Here
140
            this.originalEncoding = Charset.defaultCharset().name();
141
            this.originalEncoding = Charset.defaultCharset().name();
141
        }
142
        }
142
        
143
        
143
        this.encoding.setModel(new EncodingModel(this.originalEncoding));
144
        this.encoding.setModel(ProjectCustomizer.createEncodingModel(originalEncoding));
144
        this.encoding.setRenderer(new EncodingRenderer());
145
        this.encoding.setRenderer(ProjectCustomizer.createEncodingRenderer());
145
        final String lafid = UIManager.getLookAndFeel().getID();
146
        final String lafid = UIManager.getLookAndFeel().getID();
146
        if (!"Aqua".equals(lafid)) { //NOI18N
147
        if (!"Aqua".equals(lafid)) { //NOI18N
147
            this.encoding.putClientProperty ("JComboBox.isTableCellEditor", Boolean.TRUE);    //NOI18N
148
            this.encoding.putClientProperty ("JComboBox.isTableCellEditor", Boolean.TRUE);    //NOI18N
Lines 227-261 Link Here
227
        return new HelpCtx (CustomizerSources.class);
228
        return new HelpCtx (CustomizerSources.class);
228
    }            
229
    }            
229
    
230
    
230
    private static class EncodingRenderer extends JLabel implements ListCellRenderer, UIResource {
231
        
232
        public EncodingRenderer() {
233
            setOpaque(true);
234
        }
235
        
236
        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
237
            assert value instanceof Charset;
238
            setName("ComboBox.listRenderer"); // NOI18N
239
            setText(((Charset) value).displayName());
240
            setIcon(null);
241
            if (isSelected) {
242
                setBackground(list.getSelectionBackground());
243
                setForeground(list.getSelectionForeground());             
244
            } else {
245
                setBackground(list.getBackground());
246
                setForeground(list.getForeground());
247
            }
248
            return this;
249
        }
250
        
251
        @Override
252
        public String getName() {
253
            String name = super.getName();
254
            return name == null ? "ComboBox.renderer" : name; // NOI18N
255
        }
256
        
257
    }
258
    
259
    private class MediatorListener implements ChangeListener {
231
    private class MediatorListener implements ChangeListener {
260
232
261
        public void stateChanged(ChangeEvent e) {
233
        public void stateChanged(ChangeEvent e) {
Lines 280-333 Link Here
280
        
252
        
281
    }
253
    }
282
    
254
    
283
    private static class EncodingModel extends DefaultComboBoxModel {
284
        
285
        public EncodingModel (String originalEncoding) {
286
            Charset defEnc = null;
287
            for (Charset c : Charset.availableCharsets().values()) {
288
                if (c.name().equals(originalEncoding)) {
289
                    defEnc = c;
290
                }
291
                addElement(c);
292
            }
293
            if (defEnc == null) {
294
                //Create artificial Charset to keep the original value
295
                //May happen when the project was set up on the platform
296
                //which supports more encodings
297
                try {
298
                    defEnc = new UnknownCharset (originalEncoding);
299
                    addElement(defEnc);
300
                } catch (IllegalCharsetNameException e) {
301
                    //The source.encoding property is completely broken
302
                    Logger.getLogger(this.getClass().getName()).info("IllegalCharsetName: " + originalEncoding);
303
                }
304
            }
305
            if (defEnc == null) {
306
                defEnc = Charset.defaultCharset();
307
            }
308
            setSelectedItem(defEnc);
309
        }
310
    }
311
    
312
    private static class UnknownCharset extends Charset {
313
        
314
        UnknownCharset (String name) {
315
            super (name, new String[0]);
316
        }
317
    
318
        public boolean contains(Charset c) {
319
            throw new UnsupportedOperationException();
320
        }
321
322
        public CharsetDecoder newDecoder() {
323
            throw new UnsupportedOperationException();
324
        }
325
326
        public CharsetEncoder newEncoder() {
327
            throw new UnsupportedOperationException();
328
        }
329
}
330
    
331
    private static class ResizableRowHeightTable extends JTable {
255
    private static class ResizableRowHeightTable extends JTable {
332
256
333
        private boolean needResize = true;
257
        private boolean needResize = true;
(-)a/ruby.project/manifest.mf (-1 / +1 lines)
Lines 4-8 Link Here
4
OpenIDE-Module-Install: org/netbeans/modules/ruby/rubyproject/RubyProjectModuleInstaller.class
4
OpenIDE-Module-Install: org/netbeans/modules/ruby/rubyproject/RubyProjectModuleInstaller.class
5
OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/ruby/rubyproject/Bundle.properties
5
OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/ruby/rubyproject/Bundle.properties
6
OpenIDE-Module-Needs: javax.script.ScriptEngine.freemarker
6
OpenIDE-Module-Needs: javax.script.ScriptEngine.freemarker
7
OpenIDE-Module-Specification-Version: 1.23
7
OpenIDE-Module-Specification-Version: 1.24
8
AutoUpdate-Show-In-Client: false
8
AutoUpdate-Show-In-Client: false
(-)a/ruby.project/nbproject/project.xml (-1 / +1 lines)
Lines 136-142 Link Here
136
                    <compile-dependency/>
136
                    <compile-dependency/>
137
                    <run-dependency>
137
                    <run-dependency>
138
                        <release-version>1</release-version>
138
                        <release-version>1</release-version>
139
                        <specification-version>1.31</specification-version>
139
                        <specification-version>1.41</specification-version>
140
                    </run-dependency>
140
                    </run-dependency>
141
                </dependency>
141
                </dependency>
142
                <dependency>
142
                <dependency>
(-)a/ruby.project/src/org/netbeans/modules/ruby/rubyproject/ui/customizer/CustomizerSources.java (-80 / +3 lines)
Lines 58-63 Link Here
58
import javax.swing.JPanel;
58
import javax.swing.JPanel;
59
import javax.swing.UIManager;
59
import javax.swing.UIManager;
60
import org.netbeans.modules.ruby.rubyproject.RubyProject;
60
import org.netbeans.modules.ruby.rubyproject.RubyProject;
61
import org.netbeans.spi.project.ui.support.ProjectCustomizer;
61
import org.openide.DialogDisplayer;
62
import org.openide.DialogDisplayer;
62
import org.openide.NotifyDescriptor;
63
import org.openide.NotifyDescriptor;
63
import org.openide.filesystems.FileObject;
64
import org.openide.filesystems.FileObject;
Lines 119-125 Link Here
119
        }
120
        }
120
        
121
        
121
        this.encoding.setModel(new EncodingModel(this.originalEncoding));
122
        this.encoding.setModel(new EncodingModel(this.originalEncoding));
122
        this.encoding.setRenderer(new EncodingRenderer());
123
        this.encoding.setRenderer(ProjectCustomizer.createEncodingRenderer());
123
        
124
        
124
        final String lafid = UIManager.getLookAndFeel().getID();
125
        final String lafid = UIManager.getLookAndFeel().getID();
125
        if (!"Aqua".equals(lafid)) { //NOI18N
126
        if (!"Aqua".equals(lafid)) { //NOI18N
Lines 160-244 Link Here
160
161
161
    public HelpCtx getHelpCtx() {
162
    public HelpCtx getHelpCtx() {
162
        return new HelpCtx (CustomizerSources.class);
163
        return new HelpCtx (CustomizerSources.class);
163
    }
164
    }    
164
165
    private static class EncodingRenderer extends JLabel implements ListCellRenderer, UIResource {
166
        
167
        public EncodingRenderer() {
168
            setOpaque(true);
169
        }
170
        
171
        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
172
            assert value instanceof Charset;
173
            setName("ComboBox.listRenderer"); // NOI18N
174
            setText(((Charset) value).displayName());
175
            setIcon(null);
176
            if (isSelected) {
177
                setBackground(list.getSelectionBackground());
178
                setForeground(list.getSelectionForeground());             
179
            } else {
180
                setBackground(list.getBackground());
181
                setForeground(list.getForeground());
182
            }
183
            return this;
184
        }
185
        
186
        @Override
187
        public String getName() {
188
            String name = super.getName();
189
            return name == null ? "ComboBox.renderer" : name; // NOI18N
190
        }
191
        
192
    }
193
    
194
    private static class EncodingModel extends DefaultComboBoxModel {
195
        
196
        public EncodingModel (String originalEncoding) {
197
            Charset defEnc = null;
198
            for (Charset c : Charset.availableCharsets().values()) {
199
                if (c.name().equals(originalEncoding)) {
200
                    defEnc = c;
201
                }
202
                addElement(c);
203
            }
204
            if (defEnc == null) {
205
                //Create artificial Charset to keep the original value
206
                //May happen when the project was set up on the platform
207
                //which supports more encodings
208
                try {
209
                    defEnc = new UnknownCharset (originalEncoding);
210
                    addElement(defEnc);
211
                } catch (IllegalCharsetNameException e) {
212
                    //The source.encoding property is completely broken
213
                    Logger.getLogger(this.getClass().getName()).info("IllegalCharsetName: " + originalEncoding);
214
                }
215
            }
216
            if (defEnc == null) {
217
                defEnc = Charset.defaultCharset();
218
            }
219
            setSelectedItem(defEnc);
220
        }
221
    }
222
    
223
    private static class UnknownCharset extends Charset {
224
        
225
        UnknownCharset (String name) {
226
            super (name, new String[0]);
227
        }
228
    
229
        public boolean contains(Charset c) {
230
            throw new UnsupportedOperationException();
231
        }
232
233
        public CharsetDecoder newDecoder() {
234
            throw new UnsupportedOperationException();
235
        }
236
237
        public CharsetEncoder newEncoder() {
238
            throw new UnsupportedOperationException();
239
        }
240
}
241
    
242
    /** This method is called from within the constructor to
165
    /** This method is called from within the constructor to
243
     * initialize the form.
166
     * initialize the form.
244
     * WARNING: Do NOT modify this code. The content of this method is
167
     * WARNING: Do NOT modify this code. The content of this method is
(-)a/web.project/nbproject/project.properties (-1 / +1 lines)
Lines 53-59 Link Here
53
javac.compilerargs=-Xlint:unchecked
53
javac.compilerargs=-Xlint:unchecked
54
javadoc.arch=${basedir}/arch.xml
54
javadoc.arch=${basedir}/arch.xml
55
55
56
spec.version.base=1.23.0
56
spec.version.base=1.23.1
57
57
58
# needed for the TestUtil class
58
# needed for the TestUtil class
59
test.unit.cp.extra=
59
test.unit.cp.extra=
(-)a/web.project/src/org/netbeans/modules/web/project/ui/customizer/CustomizerSources.java (-79 / +3 lines)
Lines 74-79 Link Here
74
import org.netbeans.spi.project.support.ant.PropertyUtils;
74
import org.netbeans.spi.project.support.ant.PropertyUtils;
75
import org.netbeans.modules.web.project.WebProject;
75
import org.netbeans.modules.web.project.WebProject;
76
import org.netbeans.spi.java.project.support.ui.IncludeExcludeVisualizer;
76
import org.netbeans.spi.java.project.support.ui.IncludeExcludeVisualizer;
77
import org.netbeans.spi.project.ui.support.ProjectCustomizer;
77
import org.openide.DialogDescriptor;
78
import org.openide.DialogDescriptor;
78
import org.openide.DialogDisplayer;
79
import org.openide.DialogDisplayer;
79
import org.openide.NotifyDescriptor;
80
import org.openide.NotifyDescriptor;
Lines 154-161 Link Here
154
            this.originalEncoding = Charset.defaultCharset().name();
155
            this.originalEncoding = Charset.defaultCharset().name();
155
        }
156
        }
156
        
157
        
157
        this.encoding.setModel(new EncodingModel(this.originalEncoding));
158
        this.encoding.setModel(ProjectCustomizer.createEncodingModel(originalEncoding));
158
        this.encoding.setRenderer(new EncodingRenderer());
159
        this.encoding.setRenderer(ProjectCustomizer.createEncodingRenderer());
159
        final String lafid = UIManager.getLookAndFeel().getID();
160
        final String lafid = UIManager.getLookAndFeel().getID();
160
        if (!"Aqua".equals(lafid)) { // NOI18N
161
        if (!"Aqua".equals(lafid)) { // NOI18N
161
             encoding.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE); // NOI18N
162
             encoding.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE); // NOI18N
Lines 640-720 Link Here
640
    private javax.swing.JLabel webInfLabel;
641
    private javax.swing.JLabel webInfLabel;
641
    private javax.swing.JTextField webInfTextField;
642
    private javax.swing.JTextField webInfTextField;
642
    // End of variables declaration//GEN-END:variables
643
    // End of variables declaration//GEN-END:variables
643
    
644
    private static class EncodingRenderer extends JLabel implements ListCellRenderer, UIResource {
645
        
646
        public EncodingRenderer() {
647
            setOpaque(true);
648
        }
649
        
650
        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
651
            assert value instanceof Charset;
652
            setName("ComboBox.listRenderer"); // NOI18N
653
            setText(((Charset) value).displayName());
654
            setIcon(null);
655
            if (isSelected) {
656
                setBackground(list.getSelectionBackground());
657
                setForeground(list.getSelectionForeground());
658
            } else {
659
                setBackground(list.getBackground());
660
                setForeground(list.getForeground());
661
            }
662
            return this;
663
        }
664
        
665
        @Override
666
        public String getName() {
667
            String name = super.getName();
668
            return name == null ? "ComboBox.renderer" : name; // NOI18N
669
        }
670
        
671
    }
672
    
673
    private static class EncodingModel extends DefaultComboBoxModel {
674
        
675
        public EncodingModel(String originalEncoding) {
676
            Charset defEnc = null;
677
            for (Charset c : Charset.availableCharsets().values()) {
678
                if (c.name().equals(originalEncoding)) {
679
                    defEnc = c;
680
                }
681
                addElement(c);
682
            }
683
            if (defEnc == null) {
684
                //Create artificial Charset to keep the original value
685
                //May happen when the project was set up on the platform
686
                //which supports more encodings
687
                try {
688
                    defEnc = new UnknownCharset(originalEncoding);
689
                    addElement(defEnc);
690
                } catch (java.nio.charset.IllegalCharsetNameException e) {
691
                    //The source.encoding property is completely broken
692
                    Logger.getLogger(this.getClass().getName()).info("IllegalCharsetName: " + originalEncoding);
693
                }
694
            }
695
            if (defEnc == null) {
696
                defEnc = Charset.defaultCharset();
697
            }
698
            setSelectedItem(defEnc);
699
        }
700
    }
701
    
702
    private static class UnknownCharset extends Charset {
703
        
704
        UnknownCharset(String name) {
705
            super(name, new String[0]);
706
        }
707
        
708
        public boolean contains(Charset c) {
709
            throw new UnsupportedOperationException();
710
        }
711
        
712
        public CharsetDecoder newDecoder() {
713
            throw new UnsupportedOperationException();
714
        }
715
        
716
        public CharsetEncoder newEncoder() {
717
            throw new UnsupportedOperationException();
718
        }
719
    }
720
}
644
}

Return to bug 182711