38
38
import processing .app .I18n ;
39
39
import processing .app .PreferencesData ;
40
40
import processing .app .Theme ;
41
+ import processing .app .Theme .ZippedTheme ;
41
42
import processing .app .helpers .FileUtils ;
42
43
import processing .app .legacy .PApplet ;
43
44
46
47
import java .awt .event .ItemEvent ;
47
48
import java .awt .event .WindowEvent ;
48
49
import java .io .File ;
50
+ import java .util .Collection ;
49
51
import java .util .LinkedList ;
50
52
51
53
import static processing .app .I18n .tr ;
@@ -159,6 +161,9 @@ private void initComponents() {
159
161
autoProxyUsername = new javax .swing .JTextField ();
160
162
autoProxyPassword = new javax .swing .JPasswordField ();
161
163
autoProxyPasswordLabel = new javax .swing .JLabel ();
164
+ comboThemeLabel = new javax .swing .JLabel ();
165
+ comboTheme = new JComboBox ();
166
+ requiresRestartLabel2 = new javax .swing .JLabel ();
162
167
javax .swing .JPanel jPanel3 = new javax .swing .JPanel ();
163
168
javax .swing .JButton okButton = new javax .swing .JButton ();
164
169
javax .swing .JButton cancelButton = new javax .swing .JButton ();
@@ -302,6 +307,12 @@ public void itemStateChanged(java.awt.event.ItemEvent evt) {
302
307
autoScaleCheckBox .getAccessibleContext ().setAccessibleName ("Automatic interface scale (requires restart of Arduino" );
303
308
304
309
jLabel3 .setText ("%" );
310
+
311
+ comboThemeLabel .setText (tr ("Theme: " ));
312
+
313
+ comboTheme .getAccessibleContext ().setAccessibleName ("Theme (requires restart of Arduino)" );
314
+
315
+ requiresRestartLabel2 .setText (tr (" (requires restart of Arduino)" ));
305
316
306
317
javax .swing .GroupLayout jPanel1Layout = new javax .swing .GroupLayout (jPanel1 );
307
318
jPanel1 .setLayout (jPanel1Layout );
@@ -341,9 +352,14 @@ public void itemStateChanged(java.awt.event.ItemEvent evt) {
341
352
.addGroup (jPanel1Layout .createSequentialGroup ()
342
353
.addGroup (jPanel1Layout .createParallelGroup (javax .swing .GroupLayout .Alignment .LEADING )
343
354
.addComponent (comboLanguageLabel )
344
- .addComponent (fontSizeLabel ))
355
+ .addComponent (fontSizeLabel )
356
+ .addComponent (comboThemeLabel ))
345
357
.addPreferredGap (javax .swing .LayoutStyle .ComponentPlacement .RELATED )
346
358
.addGroup (jPanel1Layout .createParallelGroup (javax .swing .GroupLayout .Alignment .LEADING )
359
+ .addGroup (jPanel1Layout .createSequentialGroup ()
360
+ .addComponent (comboTheme , javax .swing .GroupLayout .PREFERRED_SIZE , javax .swing .GroupLayout .DEFAULT_SIZE , javax .swing .GroupLayout .PREFERRED_SIZE )
361
+ .addPreferredGap (javax .swing .LayoutStyle .ComponentPlacement .RELATED )
362
+ .addComponent (requiresRestartLabel2 ))
347
363
.addComponent (fontSizeField , javax .swing .GroupLayout .PREFERRED_SIZE , javax .swing .GroupLayout .DEFAULT_SIZE , javax .swing .GroupLayout .PREFERRED_SIZE )
348
364
.addGroup (jPanel1Layout .createSequentialGroup ()
349
365
.addComponent (comboLanguage , javax .swing .GroupLayout .PREFERRED_SIZE , javax .swing .GroupLayout .DEFAULT_SIZE , javax .swing .GroupLayout .PREFERRED_SIZE )
@@ -363,7 +379,7 @@ public void itemStateChanged(java.awt.event.ItemEvent evt) {
363
379
.addContainerGap ())
364
380
);
365
381
366
- jPanel1Layout .linkSize (javax .swing .SwingConstants .HORIZONTAL , new java .awt .Component [] {comboLanguageLabel , comboWarningsLabel , fontSizeLabel , jLabel1 , showVerboseLabel });
382
+ jPanel1Layout .linkSize (javax .swing .SwingConstants .HORIZONTAL , new java .awt .Component [] {comboLanguageLabel , comboWarningsLabel , fontSizeLabel , jLabel1 , showVerboseLabel , comboThemeLabel });
367
383
368
384
jPanel1Layout .setVerticalGroup (
369
385
jPanel1Layout .createParallelGroup (javax .swing .GroupLayout .Alignment .LEADING )
@@ -391,6 +407,11 @@ public void itemStateChanged(java.awt.event.ItemEvent evt) {
391
407
.addComponent (autoScaleCheckBox )
392
408
.addComponent (jLabel3 ))
393
409
.addPreferredGap (javax .swing .LayoutStyle .ComponentPlacement .RELATED )
410
+ .addGroup (jPanel1Layout .createParallelGroup (javax .swing .GroupLayout .Alignment .BASELINE )
411
+ .addComponent (comboThemeLabel )
412
+ .addComponent (comboTheme , javax .swing .GroupLayout .PREFERRED_SIZE , javax .swing .GroupLayout .DEFAULT_SIZE , javax .swing .GroupLayout .PREFERRED_SIZE )
413
+ .addComponent (requiresRestartLabel2 ))
414
+ .addPreferredGap (javax .swing .LayoutStyle .ComponentPlacement .RELATED )
394
415
.addGroup (jPanel1Layout .createParallelGroup (javax .swing .GroupLayout .Alignment .BASELINE )
395
416
.addComponent (showVerboseLabel )
396
417
.addComponent (verboseCompilationBox )
@@ -742,6 +763,9 @@ private void autoScaleCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//
742
763
private javax .swing .JCheckBox verboseCompilationBox ;
743
764
private javax .swing .JCheckBox verboseUploadBox ;
744
765
private javax .swing .JCheckBox verifyUploadBox ;
766
+ private javax .swing .JComboBox comboTheme ;
767
+ private javax .swing .JLabel comboThemeLabel ;
768
+ private javax .swing .JLabel requiresRestartLabel2 ;
745
769
// End of variables declaration//GEN-END:variables
746
770
747
771
private java .util .List <String > validateData () {
@@ -769,6 +793,12 @@ private void savePreferencesData() {
769
793
770
794
Language newLanguage = (Language ) comboLanguage .getSelectedItem ();
771
795
PreferencesData .set ("editor.languages.current" , newLanguage .getIsoCode ());
796
+
797
+ if (comboTheme .getSelectedIndex () == 0 ) {
798
+ PreferencesData .set ("theme.file" , "" );
799
+ } else {
800
+ PreferencesData .set ("theme.file" , ((ZippedTheme ) comboTheme .getSelectedItem ()).getKey ());
801
+ }
772
802
773
803
String newSizeText = fontSizeField .getText ();
774
804
try {
@@ -834,6 +864,16 @@ private void showPrerefencesData() {
834
864
comboLanguage .setSelectedItem (language );
835
865
}
836
866
}
867
+
868
+ String selectedTheme = PreferencesData .get ("theme.file" , "" );
869
+ Collection <ZippedTheme > availablethemes = Theme .getAvailablethemes ();
870
+ comboTheme .addItem (tr ("Default theme" ));
871
+ for (ZippedTheme theme : availablethemes ) {
872
+ comboTheme .addItem (theme );
873
+ if (theme .getKey ().equals (selectedTheme )) {
874
+ comboTheme .setSelectedItem (theme );
875
+ }
876
+ }
837
877
838
878
Font editorFont = PreferencesData .getFont ("editor.font" );
839
879
fontSizeField .setText (String .valueOf (editorFont .getSize ()));
0 commit comments