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.11.0
(-)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.42</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.encodingModel(originalEncoding));
103
        encoding.setRenderer(new EncodingRenderer());
93
        encoding.setRenderer(ProjectCustomizer.encodingRenderer());
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.clientproject/nbproject/project.properties (-1 / +1 lines)
Lines 38-44 Link Here
38
# made subject to such option by the copyright holder.
38
# made subject to such option by the copyright holder.
39
39
40
javac.compilerargs=-Xlint:unchecked
40
javac.compilerargs=-Xlint:unchecked
41
spec.version.base=1.15.0
41
spec.version.base=1.16.0
42
javadoc.arch=${basedir}/arch.xml
42
javadoc.arch=${basedir}/arch.xml
43
javadoc.preview=true
43
javadoc.preview=true
44
javac.source=1.6
44
javac.source=1.6
(-)a/j2ee.clientproject/nbproject/project.xml (-1 / +1 lines)
Lines 271-277 Link Here
271
                    <compile-dependency/>
271
                    <compile-dependency/>
272
                    <run-dependency>
272
                    <run-dependency>
273
                        <release-version>1</release-version>
273
                        <release-version>1</release-version>
274
                        <specification-version>1.31</specification-version>
274
                        <specification-version>1.42</specification-version>
275
                    </run-dependency>
275
                    </run-dependency>
276
                </dependency>
276
                </dependency>
277
                <dependency>
277
                <dependency>
(-)a/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/ui/customizer/CustomizerSources.java (-81 / +3 lines)
Lines 68-73 Link Here
68
import org.openide.filesystems.FileUtil;
68
import org.openide.filesystems.FileUtil;
69
import org.openide.util.HelpCtx;
69
import org.openide.util.HelpCtx;
70
import org.netbeans.spi.project.support.ant.PropertyUtils;
70
import org.netbeans.spi.project.support.ant.PropertyUtils;
71
import org.netbeans.spi.project.ui.support.ProjectCustomizer;
71
import org.openide.DialogDescriptor;
72
import org.openide.DialogDescriptor;
72
import org.openide.DialogDisplayer;
73
import org.openide.DialogDisplayer;
73
import org.openide.NotifyDescriptor;
74
import org.openide.NotifyDescriptor;
Lines 150-157 Link Here
150
            this.originalEncoding = Charset.defaultCharset().name();
151
            this.originalEncoding = Charset.defaultCharset().name();
151
        }
152
        }
152
        
153
        
153
        this.encoding.setModel(new EncodingModel(this.originalEncoding));
154
        this.encoding.setModel(ProjectCustomizer.encodingModel(originalEncoding));
154
        this.encoding.setRenderer(new EncodingRenderer());
155
        this.encoding.setRenderer(ProjectCustomizer.encodingRenderer());
155
        final String lafid = UIManager.getLookAndFeel().getID();
156
        final String lafid = UIManager.getLookAndFeel().getID();
156
        if (!"Aqua".equals(lafid)) { // NOI18N
157
        if (!"Aqua".equals(lafid)) { // NOI18N
157
             encoding.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE); // NOI18N
158
             encoding.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE); // NOI18N
Lines 638-720 Link Here
638
    private javax.swing.JButton upSourceRoot;
639
    private javax.swing.JButton upSourceRoot;
639
    private javax.swing.JButton upTestRoot;
640
    private javax.swing.JButton upTestRoot;
640
    // End of variables declaration//GEN-END:variables
641
    // End of variables declaration//GEN-END:variables
641
    
642
    private static class EncodingRenderer extends JLabel implements ListCellRenderer, UIResource {
643
        private static final long serialVersionUID = 1L;
644
        
645
        public EncodingRenderer() {
646
            setOpaque(true);
647
        }
648
        
649
        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
650
            assert value instanceof Charset;
651
            setName("ComboBox.listRenderer"); // NOI18N
652
            setText(((Charset) value).displayName());
653
            setIcon(null);
654
            if (isSelected) {
655
                setBackground(list.getSelectionBackground());
656
                setForeground(list.getSelectionForeground());
657
            } else {
658
                setBackground(list.getBackground());
659
                setForeground(list.getForeground());
660
            }
661
            return this;
662
        }
663
        
664
        @Override
665
        public String getName() {
666
            String name = super.getName();
667
            return name == null ? "ComboBox.renderer" : name; // NOI18N
668
        }
669
        
670
    }
671
    
672
    private static class EncodingModel extends DefaultComboBoxModel {
673
        private static final long serialVersionUID = 1L;
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
}
642
}
(-)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.42</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 (-81 / +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.encodingModel(originalEncoding));
148
        this.encoding.setRenderer(new EncodingRenderer());
149
        this.encoding.setRenderer(ProjectCustomizer.encodingRenderer());
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
Lines 620-702 Link Here
620
    private javax.swing.JButton upSourceRoot;
621
    private javax.swing.JButton upSourceRoot;
621
    private javax.swing.JButton upTestRoot;
622
    private javax.swing.JButton upTestRoot;
622
    // End of variables declaration//GEN-END:variables
623
    // End of variables declaration//GEN-END:variables
623
    
624
    private static class EncodingRenderer extends JLabel implements ListCellRenderer, UIResource {
625
        private static final long serialVersionUID = 165039671121173778L;
626
        
627
        public EncodingRenderer() {
628
            setOpaque(true);
629
        }
630
        
631
        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
632
            assert value instanceof Charset;
633
            setName("ComboBox.listRenderer"); // NOI18N
634
            setText(((Charset) value).displayName());
635
            setIcon(null);
636
            if (isSelected) {
637
                setBackground(list.getSelectionBackground());
638
                setForeground(list.getSelectionForeground());
639
            } else {
640
                setBackground(list.getBackground());
641
                setForeground(list.getForeground());
642
            }
643
            return this;
644
        }
645
        
646
        @Override
647
        public String getName() {
648
            String name = super.getName();
649
            return name == null ? "ComboBox.renderer" : name; // NOI18N
650
        }
651
        
652
    }
653
    
654
    private static class EncodingModel extends DefaultComboBoxModel {
655
        private static final long serialVersionUID = 242741101262934942L;
656
        
657
        public EncodingModel(String originalEncoding) {
658
            Charset defEnc = null;
659
            for (Charset c : Charset.availableCharsets().values()) {
660
                if (c.name().equals(originalEncoding)) {
661
                    defEnc = c;
662
                }
663
                addElement(c);
664
            }
665
            if (defEnc == null) {
666
                //Create artificial Charset to keep the original value
667
                //May happen when the project was set up on the platform
668
                //which supports more encodings
669
                try {
670
                    defEnc = new UnknownCharset(originalEncoding);
671
                    addElement(defEnc);
672
                } catch (java.nio.charset.IllegalCharsetNameException e) {
673
                    //The source.encoding property is completely broken
674
                    Logger.getLogger(this.getClass().getName()).info("IllegalCharsetName: " + originalEncoding);
675
                }
676
            }
677
            if (defEnc == null) {
678
                defEnc = Charset.defaultCharset();
679
            }
680
            setSelectedItem(defEnc);
681
        }
682
    }
683
    
684
    private static class UnknownCharset extends Charset {
685
        
686
        UnknownCharset(String name) {
687
            super(name, new String[0]);
688
        }
689
        
690
        public boolean contains(Charset c) {
691
            throw new UnsupportedOperationException();
692
        }
693
        
694
        public CharsetDecoder newDecoder() {
695
            throw new UnsupportedOperationException();
696
        }
697
        
698
        public CharsetEncoder newEncoder() {
699
            throw new UnsupportedOperationException();
700
        }
701
    }
702
}
624
}
(-)a/java.freeform/manifest.mf (-1 / +1 lines)
Lines 1-6 Link Here
1
Manifest-Version: 1.0
1
Manifest-Version: 1.0
2
OpenIDE-Module: org.netbeans.modules.java.freeform/1
2
OpenIDE-Module: org.netbeans.modules.java.freeform/1
3
OpenIDE-Module-Specification-Version: 1.16
3
OpenIDE-Module-Specification-Version: 1.17
4
OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/java/freeform/Bundle.properties
4
OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/java/freeform/Bundle.properties
5
OpenIDE-Module-Layer: org/netbeans/modules/java/freeform/resources/layer.xml
5
OpenIDE-Module-Layer: org/netbeans/modules/java/freeform/resources/layer.xml
6
AutoUpdate-Show-In-Client: false
6
AutoUpdate-Show-In-Client: false
(-)a/java.freeform/nbproject/project.xml (-1 / +1 lines)
Lines 129-135 Link Here
129
                    <build-prerequisite/>
129
                    <build-prerequisite/>
130
                    <compile-dependency/>
130
                    <compile-dependency/>
131
                    <run-dependency>
131
                    <run-dependency>
132
                        <release-version>1</release-version>
132
                        <release-version>1.42</release-version>
133
                    </run-dependency>
133
                    </run-dependency>
134
                </dependency>
134
                </dependency>
135
                <dependency>
135
                <dependency>
(-)a/java.freeform/src/org/netbeans/modules/java/freeform/ui/SourceFoldersPanel.form (-2 / +2 lines)
Lines 1-4 Link Here
1
<?xml version="1.0" encoding="UTF-8" ?>
1
<?xml version="1.1" encoding="UTF-8" ?>
2
2
3
<Form version="1.2" maxVersion="1.2" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
3
<Form version="1.2" maxVersion="1.2" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
4
  <Properties>
4
  <Properties>
Lines 418-424 Link Here
418
    <Component class="javax.swing.JComboBox" name="encodingComboBox">
418
    <Component class="javax.swing.JComboBox" name="encodingComboBox">
419
      <Properties>
419
      <Properties>
420
        <Property name="renderer" type="javax.swing.ListCellRenderer" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
420
        <Property name="renderer" type="javax.swing.ListCellRenderer" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
421
          <Connection code="new EncodingRenderer()" type="code"/>
421
          <Connection code="ProjectCustomizer.encodingRenderer()" type="code"/>
422
        </Property>
422
        </Property>
423
      </Properties>
423
      </Properties>
424
      <AccessibilityProperties>
424
      <AccessibilityProperties>
(-)a/java.freeform/src/org/netbeans/modules/java/freeform/ui/SourceFoldersPanel.java (-63 / +3 lines)
Lines 54-60 Link Here
54
import java.util.HashSet;
54
import java.util.HashSet;
55
import java.util.List;
55
import java.util.List;
56
import java.util.Set;
56
import java.util.Set;
57
import javax.swing.DefaultComboBoxModel;
58
import javax.swing.DefaultListCellRenderer;
57
import javax.swing.DefaultListCellRenderer;
59
import javax.swing.JButton;
58
import javax.swing.JButton;
60
import javax.swing.JComponent;
59
import javax.swing.JComponent;
Lines 68-74 Link Here
68
import javax.swing.event.ChangeListener;
67
import javax.swing.event.ChangeListener;
69
import javax.swing.event.ListSelectionEvent;
68
import javax.swing.event.ListSelectionEvent;
70
import javax.swing.event.ListSelectionListener;
69
import javax.swing.event.ListSelectionListener;
71
import javax.swing.plaf.UIResource;
72
import javax.swing.table.AbstractTableModel;
70
import javax.swing.table.AbstractTableModel;
73
import javax.swing.table.DefaultTableCellRenderer;
71
import javax.swing.table.DefaultTableCellRenderer;
74
import org.netbeans.api.project.FileOwnerQuery;
72
import org.netbeans.api.project.FileOwnerQuery;
Lines 87-92 Link Here
87
import org.netbeans.spi.project.support.ant.AntProjectHelper;
85
import org.netbeans.spi.project.support.ant.AntProjectHelper;
88
import org.netbeans.spi.project.support.ant.PropertyEvaluator;
86
import org.netbeans.spi.project.support.ant.PropertyEvaluator;
89
import org.netbeans.spi.project.support.ant.PropertyUtils;
87
import org.netbeans.spi.project.support.ant.PropertyUtils;
88
import org.netbeans.spi.project.ui.support.ProjectCustomizer;
90
import org.openide.DialogDescriptor;
89
import org.openide.DialogDescriptor;
91
import org.openide.DialogDisplayer;
90
import org.openide.DialogDisplayer;
92
import org.openide.NotifyDescriptor;
91
import org.openide.NotifyDescriptor;
Lines 190-196 Link Here
190
    }
189
    }
191
    
190
    
192
    private void updateEncodingCombo() {
191
    private void updateEncodingCombo() {
193
        encodingComboBox.setModel(new EncodingModel());
192
        encodingComboBox.setModel(ProjectCustomizer.encodingModel(Charset.defaultCharset().name()));
194
    }
193
    }
195
    
194
    
196
    private String getSourceLevelValue(int index) {
195
    private String getSourceLevelValue(int index) {
Lines 478-484 Link Here
478
        encodingLabel.getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(SourceFoldersPanel.class, "ACSD_Encoding_Label_Name")); // NOI18N
477
        encodingLabel.getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(SourceFoldersPanel.class, "ACSD_Encoding_Label_Name")); // NOI18N
479
        encodingLabel.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(SourceFoldersPanel.class, "ACSD_Encoding_Label_Desc")); // NOI18N
478
        encodingLabel.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(SourceFoldersPanel.class, "ACSD_Encoding_Label_Desc")); // NOI18N
480
479
481
        encodingComboBox.setRenderer(new EncodingRenderer());
480
        encodingComboBox.setRenderer(ProjectCustomizer.encodingRenderer());
482
        encodingComboBox.addActionListener(new java.awt.event.ActionListener() {
481
        encodingComboBox.addActionListener(new java.awt.event.ActionListener() {
483
            public void actionPerformed(java.awt.event.ActionEvent evt) {
482
            public void actionPerformed(java.awt.event.ActionEvent evt) {
484
                encodingComboBoxActionPerformed(evt);
483
                encodingComboBoxActionPerformed(evt);
Lines 1034-1098 Link Here
1034
        
1033
        
1035
    }
1034
    }
1036
    
1035
    
1037
    private class EncodingModel extends DefaultComboBoxModel {
1038
        public EncodingModel() {
1039
            Object selEnc = null;
1040
            if (model.getEncoding() == null) {
1041
                addElement(ProjectModel.NO_ENCODING);
1042
                selEnc = ProjectModel.NO_ENCODING;
1043
            }
1044
            for (Charset cset : Charset.availableCharsets().values()) {
1045
                if (cset.name().equals(model.getEncoding())) {
1046
                    selEnc = cset;
1047
                }
1048
                addElement(cset);
1049
            }
1050
            if (isWizard) {
1051
                setSelectedItem(FileEncodingQuery.getDefaultEncoding());
1052
            } else {
1053
                if (selEnc != null) {
1054
                    setSelectedItem(selEnc);
1055
                }
1056
            }
1057
        }
1058
    }
1059
    
1060
    private static class EncodingRenderer extends DefaultListCellRenderer implements UIResource {
1061
        
1062
        public EncodingRenderer() {
1063
            setOpaque(true);
1064
        }
1065
        
1066
        @Override
1067
        public Component getListCellRendererComponent(JList list, Object value, 
1068
                int index, boolean isSelected, boolean cellHasFocus) {
1069
            setName("ComboBox.listRenderer"); // NOI18N
1070
            String dispName = null;
1071
            if (value instanceof Charset) {
1072
                dispName = ((Charset) value).displayName();
1073
            } else {
1074
                dispName = value.toString();
1075
            }
1076
            setText(dispName);
1077
            setIcon(null);
1078
            if (isSelected) {
1079
                setBackground(list.getSelectionBackground());
1080
                setForeground(list.getSelectionForeground());
1081
            } else {
1082
                setBackground(list.getBackground());
1083
                setForeground(list.getForeground());
1084
            }
1085
            return this;
1086
        }
1087
        
1088
        @Override
1089
        public String getName() {
1090
            String name = super.getName();
1091
            return name == null ? "ComboBox.renderer" : name; // NOI18N
1092
        }
1093
        
1094
    }
1095
    
1096
    private class ToolTipRenderer extends DefaultTableCellRenderer { 
1036
    private class ToolTipRenderer extends DefaultTableCellRenderer { 
1097
        
1037
        
1098
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,int row, int column) {
1038
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,int row, int column) {
(-)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.37.0
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/nbproject/project.xml (-1 / +1 lines)
Lines 207-213 Link Here
207
                    <compile-dependency/>
207
                    <compile-dependency/>
208
                    <run-dependency>
208
                    <run-dependency>
209
                        <release-version>1</release-version>
209
                        <release-version>1</release-version>
210
                        <specification-version>1.31</specification-version>
210
                        <specification-version>1.42</specification-version>
211
                    </run-dependency>
211
                    </run-dependency>
212
                </dependency>
212
                </dependency>
213
                <dependency>
213
                <dependency>
(-)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.encodingModel(originalEncoding));
156
        this.encoding.setRenderer(new EncodingRenderer());
147
        this.encoding.setRenderer(ProjectCustomizer.encodingRenderer());
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.42</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.encodingModel(originalEncoding));
119
        this.encoding.setRenderer(new EncodingRenderer());
115
        this.encoding.setRenderer(ProjectCustomizer.encodingRenderer());
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/nbproject/project.xml (-1 / +1 lines)
Lines 239-245 Link Here
239
                    <compile-dependency/>
239
                    <compile-dependency/>
240
                    <run-dependency>
240
                    <run-dependency>
241
                        <release-version>1</release-version>
241
                        <release-version>1</release-version>
242
                        <specification-version>1.32</specification-version>
242
                        <specification-version>1.42</specification-version>
243
                    </run-dependency>
243
                    </run-dependency>
244
                </dependency>
244
                </dependency>
245
                <dependency>
245
                <dependency>
(-)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.encodingModel(encoding));
119
        comEncoding.setRenderer(new EncodingRenderer());
120
        comEncoding.setRenderer(ProjectCustomizer.encodingRenderer());
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.42</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.encodingRenderer());
178
        encodingComboBox.setModel(new EncodingModel(originalEncoding));
177
        encodingComboBox.setModel(ProjectCustomizer.encodingModel(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.encodingModel(Charset.defaultCharset().name()));
86
        encodingComboBox.setRenderer(new EncodingRenderer());
85
        encodingComboBox.setRenderer(ProjectCustomizer.encodingRenderer());
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.encodingModel(Charset.defaultCharset().name()));
88
        encodingComboBox.setRenderer(new EncodingRenderer());
87
        encodingComboBox.setRenderer(ProjectCustomizer.encodingRenderer());
89
    }
88
    }
90
89
91
    @Override
90
    @Override
(-)a/projectuiapi/apichanges.xml (+19 lines)
Lines 104-109 Link Here
104
    <!-- ACTUAL CHANGES BEGIN HERE: -->
104
    <!-- ACTUAL CHANGES BEGIN HERE: -->
105
105
106
    <changes>
106
    <changes>
107
        <change id="ProjectChooser.encodingRenderer">
108
            <api name="general"/>
109
            <summary>Added public static ProjectCustomizer.encodingModel(String) and public static ProjectCustomizer.encodingRenderer()</summary>
110
            <version major="1" minor="42"/>
111
            <date day="25" month="3" year="2010"/>
112
            <author login="tboudreau"/>
113
            <compatibility addition="yes" source="compatible" semantic="compatible"/>
114
            <description>
115
                <p>
116
                    Added factory methods to ProjectCustomizer,
117
                    for creating a ComboBoxModel of Charsets for all available
118
                    character encodings with an initial selection, and a
119
                    ListCellRenderer for Charset objects, for use in
120
                    combo boxes.
121
                </p>
122
            </description>
123
            <class package="org.netbeans.spi.project.ui.support" name="ProjectCustomizer"/>
124
            <issue number="182711"/>
125
        </change>
107
        <change id="CompositeCategoryProvider.Registration">
126
        <change id="CompositeCategoryProvider.Registration">
108
            <api name="general"/>
127
            <api name="general"/>
109
            <summary>Customizer panel registrations using annotations</summary>
128
            <summary>Customizer panel registrations using annotations</summary>
(-)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.42.0
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 (+102 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
     * @since 1.42
793
     */
794
    public static ListCellRenderer encodingRenderer() {
795
        return new EncodingRenderer();
796
    }
797
798
    /**
799
     * Create a new combo box model of all available Charsets
800
     * whose initial selection is a Charset with the provided name.
801
     * If the provided name is null or not a known character set,
802
     * a dummy Charset instance will be used for the selection.
803
     *
804
     * @param initialCharset The initial character encoding, e.g. "UTF-8" or
805
     * Charset.defaultCharset().name()
806
     * @return A combo box model of all available character encodings
807
     * @since 1.42
808
     */
809
    public static ComboBoxModel encodingModel(String initialCharset) {
810
        return new EncodingModel(initialCharset);
811
    }
812
813
    private static final class EncodingRenderer extends DefaultListCellRenderer {
814
        EncodingRenderer() {
815
            //Needed for synth?
816
            setName ("ComboBox.listRenderer"); //NOI18N
817
        }
818
819
        @Override
820
        public Component getListCellRendererComponent(JList list, Object value,
821
                int index, boolean isSelected, boolean isLeadSelection) {
822
            if (value instanceof Charset) {
823
                value = ((Charset) value).displayName();
824
            }
825
            return super.getListCellRendererComponent(list, value, index,
826
                    isSelected, isLeadSelection);
827
        }
828
    }
829
830
    private static final class EncodingModel extends DefaultComboBoxModel {
831
832
        EncodingModel (String originalEncoding) {
833
            Charset defEnc = null;
834
            for (Charset c : Charset.availableCharsets().values()) {
835
                if (c.name().equals(originalEncoding)) {
836
                    defEnc = c;
837
                } else if (c.aliases().contains(originalEncoding)) { //Mobility - can have hand-entered encoding
838
                    defEnc = c;
839
                }
840
                addElement(c);
841
            }
842
            if (originalEncoding != null && defEnc == null) {
843
                //Create artificial Charset to keep the original value
844
                //May happen when the project was set up on the platform
845
                //which supports more encodings
846
                try {
847
                    defEnc = new UnknownCharset (originalEncoding);
848
                    addElement(defEnc);
849
                } catch (IllegalCharsetNameException e) {
850
                    //The source.encoding property is completely broken
851
                    Logger.getLogger(this.getClass().getName()).info(
852
                            "IllegalCharsetName: " + originalEncoding); //NOI18N
853
                }
854
            }
855
            if (defEnc == null) {
856
                defEnc = Charset.defaultCharset();
857
            }
858
            setSelectedItem(defEnc);
859
        }
860
861
        private static final class UnknownCharset extends Charset {
862
            UnknownCharset (String name) {
863
                super (name, new String[0]);
864
            }
865
866
            public boolean contains(Charset c) {
867
                return false;
868
            }
869
870
            public CharsetDecoder newDecoder() {
871
                throw new UnsupportedOperationException();
872
            }
873
874
            public CharsetEncoder newEncoder() {
875
                throw new UnsupportedOperationException();
876
            }
877
        }
878
    }
777
}
879
}
(-)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.42</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 (-89 / +3 lines)
Lines 41-47 Link Here
41
41
42
package org.netbeans.modules.python.project.ui.customizer;
42
package org.netbeans.modules.python.project.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-77 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.LinkedList;
52
import java.util.LinkedList;
57
import java.util.List;
53
import java.util.List;
58
import java.util.logging.Logger;
59
import javax.swing.DefaultCellEditor;
54
import javax.swing.DefaultCellEditor;
60
import javax.swing.DefaultComboBoxModel;
61
import javax.swing.JLabel;
62
import javax.swing.JList;
63
import javax.swing.JTable;
55
import javax.swing.JTable;
64
import javax.swing.JTextField;
56
import javax.swing.JTextField;
65
import javax.swing.ListCellRenderer;
66
import javax.swing.ListSelectionModel;
57
import javax.swing.ListSelectionModel;
67
import javax.swing.UIManager;
58
import javax.swing.UIManager;
68
import javax.swing.event.ChangeEvent;
59
import javax.swing.event.ChangeEvent;
69
import javax.swing.event.ChangeListener;
60
import javax.swing.event.ChangeListener;
70
import javax.swing.plaf.UIResource;
71
import javax.swing.table.TableColumn;
61
import javax.swing.table.TableColumn;
72
import javax.swing.table.TableModel;
62
import javax.swing.table.TableModel;
73
import org.netbeans.modules.python.project.ui.Utils;
63
import org.netbeans.modules.python.project.ui.Utils;
74
import org.netbeans.modules.python.project.util.Pair;
64
import org.netbeans.modules.python.project.util.Pair;
65
import org.netbeans.spi.project.ui.support.ProjectCustomizer;
75
import org.openide.DialogDisplayer;
66
import org.openide.DialogDisplayer;
76
import org.openide.NotifyDescriptor;
67
import org.openide.NotifyDescriptor;
77
import org.openide.filesystems.FileObject;
68
import org.openide.filesystems.FileObject;
Lines 140-147 Link Here
140
            this.originalEncoding = Charset.defaultCharset().name();
131
            this.originalEncoding = Charset.defaultCharset().name();
141
        }
132
        }
142
        
133
        
143
        this.encoding.setModel(new EncodingModel(this.originalEncoding));
134
        this.encoding.setModel(ProjectCustomizer.encodingModel(originalEncoding));
144
        this.encoding.setRenderer(new EncodingRenderer());
135
        this.encoding.setRenderer(ProjectCustomizer.encodingRenderer());
145
        final String lafid = UIManager.getLookAndFeel().getID();
136
        final String lafid = UIManager.getLookAndFeel().getID();
146
        if (!"Aqua".equals(lafid)) { //NOI18N
137
        if (!"Aqua".equals(lafid)) { //NOI18N
147
            this.encoding.putClientProperty ("JComboBox.isTableCellEditor", Boolean.TRUE);    //NOI18N
138
            this.encoding.putClientProperty ("JComboBox.isTableCellEditor", Boolean.TRUE);    //NOI18N
Lines 227-261 Link Here
227
        return new HelpCtx (CustomizerSources.class);
218
        return new HelpCtx (CustomizerSources.class);
228
    }            
219
    }            
229
    
220
    
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 {
221
    private class MediatorListener implements ChangeListener {
260
222
261
        public void stateChanged(ChangeEvent e) {
223
        public void stateChanged(ChangeEvent e) {
Lines 280-333 Link Here
280
        
242
        
281
    }
243
    }
282
    
244
    
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 {
245
    private static class ResizableRowHeightTable extends JTable {
332
246
333
        private boolean needResize = true;
247
        private boolean needResize = true;
(-)a/ruby.merbproject/manifest.mf (-1 / +1 lines)
Lines 3-7 Link Here
3
OpenIDE-Module-Layer: org/netbeans/modules/ruby/merbproject/ui/resources/layer.xml
3
OpenIDE-Module-Layer: org/netbeans/modules/ruby/merbproject/ui/resources/layer.xml
4
OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/ruby/merbproject/Bundle.properties
4
OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/ruby/merbproject/Bundle.properties
5
OpenIDE-Module-Needs: javax.script.ScriptEngine.freemarker
5
OpenIDE-Module-Needs: javax.script.ScriptEngine.freemarker
6
OpenIDE-Module-Specification-Version: 1.2
6
OpenIDE-Module-Specification-Version: 1.3
7
AutoUpdate-Show-In-Client: false
7
AutoUpdate-Show-In-Client: false
(-)a/ruby.merbproject/nbproject/project.xml (-1 / +1 lines)
Lines 74-80 Link Here
74
                    <compile-dependency/>
74
                    <compile-dependency/>
75
                    <run-dependency>
75
                    <run-dependency>
76
                        <release-version>1</release-version>
76
                        <release-version>1</release-version>
77
                        <specification-version>1.31</specification-version>
77
                        <specification-version>1.42</specification-version>
78
                    </run-dependency>
78
                    </run-dependency>
79
                </dependency>
79
                </dependency>
80
                <dependency>
80
                <dependency>
(-)a/ruby.merbproject/src/org/netbeans/modules/ruby/merbproject/ui/customizer/CustomizerSources.java (-90 / +3 lines)
Lines 41-63 Link Here
41
41
42
package org.netbeans.modules.ruby.merbproject.ui.customizer;
42
package org.netbeans.modules.ruby.merbproject.ui.customizer;
43
43
44
import java.awt.Component;
45
import java.awt.event.ActionEvent;
44
import java.awt.event.ActionEvent;
46
import java.awt.event.ActionListener;
45
import java.awt.event.ActionListener;
47
import java.nio.charset.CharsetDecoder;
48
import java.nio.charset.CharsetEncoder;
49
import java.nio.charset.IllegalCharsetNameException;
50
import java.util.logging.Logger;
51
import javax.swing.DefaultComboBoxModel;
52
import javax.swing.JLabel;
53
import javax.swing.JList;
54
import javax.swing.ListCellRenderer;
55
import javax.swing.plaf.UIResource;
56
import java.io.File;
46
import java.io.File;
57
import java.nio.charset.Charset;
47
import java.nio.charset.Charset;
58
import javax.swing.JPanel;
48
import javax.swing.JPanel;
59
import javax.swing.UIManager;
49
import javax.swing.UIManager;
60
import org.netbeans.modules.ruby.merbproject.MerbProject;
50
import org.netbeans.modules.ruby.merbproject.MerbProject;
51
import org.netbeans.spi.project.ui.support.ProjectCustomizer;
61
import org.openide.DialogDisplayer;
52
import org.openide.DialogDisplayer;
62
import org.openide.NotifyDescriptor;
53
import org.openide.NotifyDescriptor;
63
import org.openide.filesystems.FileObject;
54
import org.openide.filesystems.FileObject;
Lines 118-125 Link Here
118
            this.originalEncoding = Charset.defaultCharset().name();
109
            this.originalEncoding = Charset.defaultCharset().name();
119
        }
110
        }
120
        
111
        
121
        this.encoding.setModel(new EncodingModel(this.originalEncoding));
112
        this.encoding.setModel(ProjectCustomizer.encodingModel(this.originalEncoding));
122
        this.encoding.setRenderer(new EncodingRenderer());
113
        this.encoding.setRenderer(ProjectCustomizer.encodingRenderer());
123
        
114
        
124
        final String lafid = UIManager.getLookAndFeel().getID();
115
        final String lafid = UIManager.getLookAndFeel().getID();
125
        if (!"Aqua".equals(lafid)) { //NOI18N
116
        if (!"Aqua".equals(lafid)) { //NOI18N
Lines 161-244 Link Here
161
    public HelpCtx getHelpCtx() {
152
    public HelpCtx getHelpCtx() {
162
        return new HelpCtx (CustomizerSources.class);
153
        return new HelpCtx (CustomizerSources.class);
163
    }
154
    }
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
155
    /** This method is called from within the constructor to
243
     * initialize the form.
156
     * initialize the form.
244
     * WARNING: Do NOT modify this code. The content of this method is
157
     * WARNING: Do NOT modify this code. The content of this method is
(-)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.42</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 (-91 / +4 lines)
Lines 41-63 Link Here
41
41
42
package org.netbeans.modules.ruby.rubyproject.ui.customizer;
42
package org.netbeans.modules.ruby.rubyproject.ui.customizer;
43
43
44
import java.awt.Component;
45
import java.awt.event.ActionEvent;
44
import java.awt.event.ActionEvent;
46
import java.awt.event.ActionListener;
45
import java.awt.event.ActionListener;
47
import java.nio.charset.CharsetDecoder;
48
import java.nio.charset.CharsetEncoder;
49
import java.nio.charset.IllegalCharsetNameException;
50
import java.util.logging.Logger;
51
import javax.swing.DefaultComboBoxModel;
52
import javax.swing.JLabel;
53
import javax.swing.JList;
54
import javax.swing.ListCellRenderer;
55
import javax.swing.plaf.UIResource;
56
import java.io.File;
46
import java.io.File;
57
import java.nio.charset.Charset;
47
import java.nio.charset.Charset;
58
import javax.swing.JPanel;
48
import javax.swing.JPanel;
59
import javax.swing.UIManager;
49
import javax.swing.UIManager;
60
import org.netbeans.modules.ruby.rubyproject.RubyProject;
50
import org.netbeans.modules.ruby.rubyproject.RubyProject;
51
import org.netbeans.spi.project.ui.support.ProjectCustomizer;
61
import org.openide.DialogDisplayer;
52
import org.openide.DialogDisplayer;
62
import org.openide.NotifyDescriptor;
53
import org.openide.NotifyDescriptor;
63
import org.openide.filesystems.FileObject;
54
import org.openide.filesystems.FileObject;
Lines 118-125 Link Here
118
            this.originalEncoding = Charset.defaultCharset().name();
109
            this.originalEncoding = Charset.defaultCharset().name();
119
        }
110
        }
120
        
111
        
121
        this.encoding.setModel(new EncodingModel(this.originalEncoding));
112
        this.encoding.setModel(ProjectCustomizer.encodingModel(originalEncoding));
122
        this.encoding.setRenderer(new EncodingRenderer());
113
        this.encoding.setRenderer(ProjectCustomizer.encodingRenderer());
123
        
114
        
124
        final String lafid = UIManager.getLookAndFeel().getID();
115
        final String lafid = UIManager.getLookAndFeel().getID();
125
        if (!"Aqua".equals(lafid)) { //NOI18N
116
        if (!"Aqua".equals(lafid)) { //NOI18N
Lines 160-244 Link Here
160
151
161
    public HelpCtx getHelpCtx() {
152
    public HelpCtx getHelpCtx() {
162
        return new HelpCtx (CustomizerSources.class);
153
        return new HelpCtx (CustomizerSources.class);
163
    }
154
    }    
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
155
    /** This method is called from within the constructor to
243
     * initialize the form.
156
     * initialize the form.
244
     * WARNING: Do NOT modify this code. The content of this method is
157
     * WARNING: Do NOT modify this code. The content of this method is
(-)a/ruby.railsprojects/manifest.mf (-1 / +1 lines)
Lines 3-7 Link Here
3
OpenIDE-Module-Layer: org/netbeans/modules/ruby/railsprojects/ui/resources/layer.xml
3
OpenIDE-Module-Layer: org/netbeans/modules/ruby/railsprojects/ui/resources/layer.xml
4
OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/ruby/railsprojects/Bundle.properties
4
OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/ruby/railsprojects/Bundle.properties
5
OpenIDE-Module-Needs: javax.script.ScriptEngine.freemarker
5
OpenIDE-Module-Needs: javax.script.ScriptEngine.freemarker
6
OpenIDE-Module-Specification-Version: 1.8
6
OpenIDE-Module-Specification-Version: 1.9
7
AutoUpdate-Show-In-Client: false
7
AutoUpdate-Show-In-Client: false
(-)a/ruby.railsprojects/nbproject/project.xml (-1 / +1 lines)
Lines 118-124 Link Here
118
                    <compile-dependency/>
118
                    <compile-dependency/>
119
                    <run-dependency>
119
                    <run-dependency>
120
                        <release-version>1</release-version>
120
                        <release-version>1</release-version>
121
                        <specification-version>1.16.0.5</specification-version>
121
                        <specification-version>1.42</specification-version>
122
                    </run-dependency>
122
                    </run-dependency>
123
                </dependency>
123
                </dependency>
124
                <dependency>
124
                <dependency>
(-)a/ruby.railsprojects/src/org/netbeans/modules/ruby/railsprojects/ui/customizer/CustomizerRun.java (-85 / +3 lines)
Lines 42-52 Link Here
42
package org.netbeans.modules.ruby.railsprojects.ui.customizer;
42
package org.netbeans.modules.ruby.railsprojects.ui.customizer;
43
43
44
import java.nio.charset.Charset;
44
import java.nio.charset.Charset;
45
import java.nio.charset.CharsetDecoder;
46
import java.nio.charset.CharsetEncoder;
47
import java.nio.charset.IllegalCharsetNameException;
48
import java.util.logging.Logger;
49
import javax.swing.plaf.UIResource;
50
import java.awt.Component;
45
import java.awt.Component;
51
import java.awt.Font;
46
import java.awt.Font;
52
import java.awt.event.ActionEvent;
47
import java.awt.event.ActionEvent;
Lines 66-72 Link Here
66
import javax.swing.JList;
61
import javax.swing.JList;
67
import javax.swing.JPanel;
62
import javax.swing.JPanel;
68
import javax.swing.JTextField;
63
import javax.swing.JTextField;
69
import javax.swing.ListCellRenderer;
70
import javax.swing.UIManager;
64
import javax.swing.UIManager;
71
import javax.swing.event.DocumentEvent;
65
import javax.swing.event.DocumentEvent;
72
import javax.swing.event.DocumentListener;
66
import javax.swing.event.DocumentListener;
Lines 80-85 Link Here
80
import org.netbeans.modules.ruby.railsprojects.server.ServerRegistry;
74
import org.netbeans.modules.ruby.railsprojects.server.ServerRegistry;
81
import org.netbeans.modules.ruby.railsprojects.server.spi.RubyInstance;
75
import org.netbeans.modules.ruby.railsprojects.server.spi.RubyInstance;
82
import org.netbeans.modules.ruby.rubyproject.ui.customizer.CustomizerSupport;
76
import org.netbeans.modules.ruby.rubyproject.ui.customizer.CustomizerSupport;
77
import org.netbeans.spi.project.ui.support.ProjectCustomizer;
83
import org.openide.DialogDisplayer;
78
import org.openide.DialogDisplayer;
84
import org.openide.NotifyDescriptor;
79
import org.openide.NotifyDescriptor;
85
import org.openide.filesystems.FileObject;
80
import org.openide.filesystems.FileObject;
Lines 191-198 Link Here
191
            this.originalEncoding = Charset.defaultCharset().name();
186
            this.originalEncoding = Charset.defaultCharset().name();
192
        }
187
        }
193
        
188
        
194
        this.encoding.setModel(new EncodingModel(this.originalEncoding));
189
        this.encoding.setModel(ProjectCustomizer.encodingModel(this.originalEncoding));
195
        this.encoding.setRenderer(new EncodingRenderer());
190
        this.encoding.setRenderer(ProjectCustomizer.encodingRenderer());
196
        
191
        
197
        final String lafid  = UIManager.getLookAndFeel().getID();
192
        final String lafid  = UIManager.getLookAndFeel().getID();
198
        if (!"Aqua".equals(lafid)) { //NOI18N
193
        if (!"Aqua".equals(lafid)) { //NOI18N
Lines 708-788 Link Here
708
    private javax.swing.JLabel urlLabel;
703
    private javax.swing.JLabel urlLabel;
709
    private javax.swing.JTextField urlTextField;
704
    private javax.swing.JTextField urlTextField;
710
    // End of variables declaration//GEN-END:variables
705
    // End of variables declaration//GEN-END:variables
711
    
712
    private static class EncodingRenderer extends JLabel implements ListCellRenderer, UIResource {
713
        
714
        public EncodingRenderer() {
715
            setOpaque(true);
716
        }
717
        
718
        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
719
            assert value instanceof Charset;
720
            setName("ComboBox.listRenderer"); // NOI18N
721
            setText(((Charset) value).displayName());
722
            setIcon(null);
723
            if (isSelected) {
724
                setBackground(list.getSelectionBackground());
725
                setForeground(list.getSelectionForeground());             
726
            } else {
727
                setBackground(list.getBackground());
728
                setForeground(list.getForeground());
729
            }
730
            return this;
731
        }
732
        
733
        @Override
734
        public String getName() {
735
            String name = super.getName();
736
            return name == null ? "ComboBox.renderer" : name; // NOI18N
737
        }
738
    }
739
    
740
    private static class EncodingModel extends DefaultComboBoxModel {
741
        
742
        public EncodingModel (String originalEncoding) {
743
            Charset defEnc = null;
744
            for (Charset c : Charset.availableCharsets().values()) {
745
                if (c.name().equals(originalEncoding)) {
746
                    defEnc = c;
747
                }
748
                addElement(c);
749
            }
750
            if (defEnc == null) {
751
                //Create artificial Charset to keep the original value
752
                //May happen when the project was set up on the platform
753
                //which supports more encodings
754
                try {
755
                    defEnc = new UnknownCharset (originalEncoding);
756
                    addElement(defEnc);
757
                } catch (IllegalCharsetNameException e) {
758
                    //The source.encoding property is completely broken
759
                    Logger.getLogger(this.getClass().getName()).info("IllegalCharsetName: " + originalEncoding);
760
                }
761
            }
762
            if (defEnc == null) {
763
                defEnc = Charset.defaultCharset();
764
            }
765
            setSelectedItem(defEnc);
766
        }
767
    }
768
769
    private static class UnknownCharset extends Charset {
770
771
        UnknownCharset(String name) {
772
            super(name, new String[0]);
773
        }
774
775
        public boolean contains(Charset c) {
776
            throw new UnsupportedOperationException();
777
        }
778
779
        public CharsetDecoder newDecoder() {
780
            throw new UnsupportedOperationException();
781
        }
782
783
        public CharsetEncoder newEncoder() {
784
            throw new UnsupportedOperationException();
785
        }
786
    }
787
788
}
706
}
(-)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.24.0
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/nbproject/project.xml (-1 / +1 lines)
Lines 301-307 Link Here
301
                    <compile-dependency/>
301
                    <compile-dependency/>
302
                    <run-dependency>
302
                    <run-dependency>
303
                        <release-version>1</release-version>
303
                        <release-version>1</release-version>
304
                        <specification-version>1.31</specification-version>
304
                        <specification-version>1.42</specification-version>
305
                    </run-dependency>
305
                    </run-dependency>
306
                </dependency>
306
                </dependency>
307
                <dependency>
307
                <dependency>
(-)a/web.project/src/org/netbeans/modules/web/project/ui/customizer/CustomizerSources.java (-88 / +3 lines)
Lines 41-69 Link Here
41
41
42
package org.netbeans.modules.web.project.ui.customizer;
42
package org.netbeans.modules.web.project.ui.customizer;
43
43
44
import java.awt.Component;
45
import java.awt.event.ActionEvent;
44
import java.awt.event.ActionEvent;
46
import java.awt.event.ActionListener;
45
import java.awt.event.ActionListener;
47
import java.awt.event.ItemEvent;
46
import java.awt.event.ItemEvent;
48
import java.awt.event.ItemListener;
47
import java.awt.event.ItemListener;
49
import java.io.File;
48
import java.io.File;
50
import java.nio.charset.Charset;
49
import java.nio.charset.Charset;
51
import java.nio.charset.CharsetDecoder;
52
import java.nio.charset.CharsetEncoder;
53
import java.util.logging.Logger;
54
import javax.swing.DefaultComboBoxModel;
55
import javax.swing.JComboBox;
50
import javax.swing.JComboBox;
56
import javax.swing.JFileChooser;
51
import javax.swing.JFileChooser;
57
import javax.swing.JLabel;
58
import javax.swing.JList;
59
import javax.swing.JTable;
52
import javax.swing.JTable;
60
import javax.swing.JTextField;
53
import javax.swing.JTextField;
61
import javax.swing.ListCellRenderer;
62
import javax.swing.ListSelectionModel;
54
import javax.swing.ListSelectionModel;
63
import javax.swing.UIManager;
55
import javax.swing.UIManager;
64
import javax.swing.event.ListDataEvent;
56
import javax.swing.event.ListDataEvent;
65
import javax.swing.event.ListDataListener;
57
import javax.swing.event.ListDataListener;
66
import javax.swing.plaf.UIResource;
67
import javax.swing.table.TableColumn;
58
import javax.swing.table.TableColumn;
68
import org.openide.filesystems.FileObject;
59
import org.openide.filesystems.FileObject;
69
import org.openide.filesystems.FileUtil;
60
import org.openide.filesystems.FileUtil;
Lines 74-79 Link Here
74
import org.netbeans.spi.project.support.ant.PropertyUtils;
65
import org.netbeans.spi.project.support.ant.PropertyUtils;
75
import org.netbeans.modules.web.project.WebProject;
66
import org.netbeans.modules.web.project.WebProject;
76
import org.netbeans.spi.java.project.support.ui.IncludeExcludeVisualizer;
67
import org.netbeans.spi.java.project.support.ui.IncludeExcludeVisualizer;
68
import org.netbeans.spi.project.ui.support.ProjectCustomizer;
77
import org.openide.DialogDescriptor;
69
import org.openide.DialogDescriptor;
78
import org.openide.DialogDisplayer;
70
import org.openide.DialogDisplayer;
79
import org.openide.NotifyDescriptor;
71
import org.openide.NotifyDescriptor;
Lines 154-161 Link Here
154
            this.originalEncoding = Charset.defaultCharset().name();
146
            this.originalEncoding = Charset.defaultCharset().name();
155
        }
147
        }
156
        
148
        
157
        this.encoding.setModel(new EncodingModel(this.originalEncoding));
149
        this.encoding.setModel(ProjectCustomizer.encodingModel(originalEncoding));
158
        this.encoding.setRenderer(new EncodingRenderer());
150
        this.encoding.setRenderer(ProjectCustomizer.encodingRenderer());
159
        final String lafid = UIManager.getLookAndFeel().getID();
151
        final String lafid = UIManager.getLookAndFeel().getID();
160
        if (!"Aqua".equals(lafid)) { // NOI18N
152
        if (!"Aqua".equals(lafid)) { // NOI18N
161
             encoding.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE); // NOI18N
153
             encoding.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE); // NOI18N
Lines 640-720 Link Here
640
    private javax.swing.JLabel webInfLabel;
632
    private javax.swing.JLabel webInfLabel;
641
    private javax.swing.JTextField webInfTextField;
633
    private javax.swing.JTextField webInfTextField;
642
    // End of variables declaration//GEN-END:variables
634
    // 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
}
635
}

Return to bug 182711