1
package org.herac.tuxguitar.gui.system.icons;
3
import java.util.ArrayList;
4
import java.util.Iterator;
7
import org.eclipse.swt.graphics.Image;
8
import org.eclipse.swt.graphics.Resource;
9
import org.herac.tuxguitar.gui.TuxGuitar;
10
import org.herac.tuxguitar.gui.system.config.TGConfigKeys;
11
import org.herac.tuxguitar.gui.util.TGFileUtils;
12
import org.herac.tuxguitar.song.models.TGDuration;
14
public class IconManager {
18
private List disposableIcons;
20
private Image[] durations;
21
private Image editUndo;
22
private Image editRedo;
23
private Image editModeSelection;
24
private Image editModeEdition;
25
private Image editModeEditionNotNatural;
26
private Image layoutPage;
27
private Image layoutLinear;
28
private Image layoutMultitrack;
29
private Image layoutScore;
30
private Image layoutCompact;
31
private Image transport;
32
private Image transportFirst1;
33
private Image transportFirst2;
34
private Image transportLast1;
35
private Image transportLast2;
36
private Image transportPrevious1;
37
private Image transportPrevious2;
38
private Image transportNext1;
39
private Image transportNext2;
40
private Image transportStop1;
41
private Image transportStop2;
42
private Image transportPlay1;
43
private Image transportPlay2;
44
private Image transportPause;
45
private Image transportIconFirst1;
46
private Image transportIconFirst2;
47
private Image transportIconLast1;
48
private Image transportIconLast2;
49
private Image transportIconPrevious1;
50
private Image transportIconPrevious2;
51
private Image transportIconNext1;
52
private Image transportIconNext2;
53
private Image transportIconStop1;
54
private Image transportIconStop2;
55
private Image transportIconPlay1;
56
private Image transportIconPlay2;
57
private Image transportIconPause;
58
private Image transportMetronome;
59
private Image transportMode;
60
private Image markerList;
61
private Image markerAdd;
62
private Image markerRemove;
63
private Image markerFirst;
64
private Image markerLast;
65
private Image markerPrevious;
66
private Image markerNext;
67
private Image aboutDescription;
68
private Image aboutLicense;
69
private Image aboutAuthors;
70
private Image appIcon;
71
private Image appSplash;
72
private Image optionMain;
73
private Image optionStyle;
74
private Image optionSound;
75
private Image optionLanguage;
76
private Image optionToolbars;
77
private Image optionSkin;
78
private Image trackAdd;
79
private Image trackRemove;
80
private Image paintableTempo;
81
private Image paintableGrace;
82
private Image fretboard;
83
private Image fretboardFirstFret;
84
private Image fretboardFret;
85
private Image compositionTimeSignature;
86
private Image compositionTempo;
87
private Image compositionRepeatOpen;
88
private Image compositionRepeatClose;
89
private Image compositionRepeatAlternative;
90
private Image songProperties;
91
private Image durationDotted;
92
private Image durationDoubleDotted;
93
private Image durationTupleto;
94
private Image fileNew;
95
private Image fileOpen;
96
private Image fileSave;
97
private Image fileSaveAs;
98
private Image filePrint;
99
private Image filePrintPreview;
101
private Image noteTied;
103
private Image dynamicPPP;
104
private Image dynamicPP;
105
private Image dynamicP;
106
private Image dynamicMP;
107
private Image dynamicMF;
108
private Image dynamicF;
109
private Image dynamicFF;
110
private Image dynamicFFF;
111
private Image effectDead;
112
private Image effectGhost;
113
private Image effectAccentuated;
114
private Image effectHeavyAccentuated;
115
private Image effectHarmonic;
116
private Image effectGrace;
117
private Image effectBend;
118
private Image effectTremoloBar;
119
private Image effectSlide;
120
private Image effectHammer;
121
private Image effectVibrato;
122
private Image effectTrill;
123
private Image effectTremoloPicking;
124
private Image effectPalmMute;
125
private Image effectStaccato;
126
private Image effectTapping;
127
private Image effectSlapping;
128
private Image effectPopping;
129
private Image effectFadeIn;
130
private Image browserNew;
131
private Image browserFile;
132
private Image browserFolder;
133
private Image browserRoot;
134
private Image browserBack;
135
private Image browserRefresh;
136
private Image settings;
138
public IconManager(){
139
this.loaders = new ArrayList();
140
this.disposableIcons = new ArrayList();
144
public void addLoader(IconLoader loader){
145
this.loaders.add(loader);
148
public void removeLoader(IconLoader loader){
149
this.loaders.remove(loader);
152
private void fireChanges(){
153
Iterator it = this.loaders.iterator();
155
IconLoader loader = (IconLoader)it.next();
160
public void reloadIcons(){
161
List disposableIcons = purgeDisposableIcons();
164
this.disposeIcons(disposableIcons);
167
public void loadIcons(){
168
this.theme = TuxGuitar.instance().getConfig().getStringConfigValue(TGConfigKeys.SKIN);
169
this.durations = new Image[]{
178
this.paintableTempo = loadIcon("tempo.png");
179
this.paintableGrace = loadIcon("grace.png");
180
this.layoutPage = loadIcon("layout_page.png");
181
this.layoutLinear = loadIcon("layout_linear.png");
182
this.layoutMultitrack = loadIcon("layout_multitrack.png");
183
this.layoutScore = loadIcon("layout_score.png");
184
this.layoutCompact = loadIcon("layout_compact.png");
185
this.fileNew = loadIcon("new.png");
186
this.fileOpen = loadIcon("open.png");
187
this.fileSave = loadIcon("save.png");
188
this.fileSaveAs = loadIcon("save-as.png");
189
this.filePrint = loadIcon("print.png");
190
this.filePrintPreview = loadIcon("print-preview.png");
191
this.editUndo = loadIcon("edit_undo.png");
192
this.editRedo = loadIcon("edit_redo.png");
193
this.editModeSelection = loadIcon("edit_mode_selection.png");
194
this.editModeEdition = loadIcon("edit_mode_edition.png");
195
this.editModeEditionNotNatural = loadIcon("edit_mode_edition_no_natural.png");
196
this.appIcon = loadIcon("icon.png");
197
this.appSplash = loadIcon("splash.png");
198
this.aboutDescription = loadIcon("about_description.png");
199
this.aboutLicense = loadIcon("about_license.png");
200
this.aboutAuthors = loadIcon("about_authors.png");
201
this.optionMain = loadIcon("option_view.png");
202
this.optionStyle = loadIcon("option_style.png");
203
this.optionSound = loadIcon("option_sound.png");
204
this.optionSkin = loadIcon("option_skin.png");
205
this.optionLanguage= loadIcon("option_language.png");
206
this.optionToolbars = loadIcon("option_toolbars.png");
207
this.compositionTimeSignature = loadIcon("timesignature.png");
208
this.compositionTempo = loadIcon("tempoicon.png");
209
this.compositionRepeatOpen = loadIcon("openrepeat.png");
210
this.compositionRepeatClose = loadIcon("closerepeat.png");
211
this.compositionRepeatAlternative = loadIcon("repeat_alternative.png");
212
this.songProperties = loadIcon("song_properties.png");
213
this.trackAdd = loadIcon("track_add.png");
214
this.trackRemove = loadIcon("track_remove.png");
215
this.durationDotted = loadIcon("dotted.png");
216
this.durationDoubleDotted = loadIcon("doubledotted.png");
217
this.durationTupleto = loadIcon("tupleto.png");
218
this.fretboard = loadIcon("fretboard.png");
219
this.fretboardFirstFret = loadIcon("firstfret.png");
220
this.fretboardFret = loadIcon("fret.png");
221
this.chord = loadIcon("chord.png");
222
this.noteTied = loadIcon("tiednote.png");
223
this.transport = loadIcon("transport.png");
224
this.transportFirst1 = loadIcon("transport_first_1.png");
225
this.transportFirst2 = loadIcon("transport_first_2.png");
226
this.transportLast1 = loadIcon("transport_last_1.png");
227
this.transportLast2 = loadIcon("transport_last_2.png");
228
this.transportPrevious1 = loadIcon("transport_previous_1.png");
229
this.transportPrevious2 = loadIcon("transport_previous_2.png");
230
this.transportNext1 = loadIcon("transport_next_1.png");
231
this.transportNext2 = loadIcon("transport_next_2.png");
232
this.transportStop1 = loadIcon("transport_stop_1.png");
233
this.transportStop2 = loadIcon("transport_stop_2.png");
234
this.transportPlay1 = loadIcon("transport_play_1.png");
235
this.transportPlay2 = loadIcon("transport_play_2.png");
236
this.transportPause = loadIcon("transport_pause.png");
237
this.transportIconFirst1 = loadIcon("transport_icon_first_1.png");
238
this.transportIconFirst2 = loadIcon("transport_icon_first_2.png");
239
this.transportIconLast1 = loadIcon("transport_icon_last_1.png");
240
this.transportIconLast2 = loadIcon("transport_icon_last_2.png");
241
this.transportIconPrevious1 = loadIcon("transport_icon_previous_1.png");
242
this.transportIconPrevious2 = loadIcon("transport_icon_previous_2.png");
243
this.transportIconNext1 = loadIcon("transport_icon_next_1.png");
244
this.transportIconNext2 = loadIcon("transport_icon_next_2.png");
245
this.transportIconStop1 = loadIcon("transport_icon_stop_1.png");
246
this.transportIconStop2 = loadIcon("transport_icon_stop_2.png");
247
this.transportIconPlay1 = loadIcon("transport_icon_play_1.png");
248
this.transportIconPlay2 = loadIcon("transport_icon_play_2.png");
249
this.transportIconPause = loadIcon("transport_icon_pause.png");
250
this.transportMetronome = loadIcon("transport_metronome.png");
251
this.transportMode = loadIcon("transport_mode.png");
252
this.markerList = loadIcon("marker_list.png");
253
this.markerAdd = loadIcon("marker_add.png");
254
this.markerRemove = loadIcon("marker_remove.png");
255
this.markerFirst = loadIcon("marker_first.png");
256
this.markerLast = loadIcon("marker_last.png");
257
this.markerPrevious = loadIcon("marker_previous.png");
258
this.markerNext = loadIcon("marker_next.png");
259
this.mixer = loadIcon("mixer.png");
260
this.dynamicPPP = loadIcon("dynamic_ppp.png");
261
this.dynamicPP = loadIcon("dynamic_pp.png");
262
this.dynamicP = loadIcon("dynamic_p.png");
263
this.dynamicMP =loadIcon("dynamic_mp.png");
264
this.dynamicMF = loadIcon("dynamic_mf.png");
265
this.dynamicF = loadIcon("dynamic_f.png");
266
this.dynamicFF = loadIcon("dynamic_ff.png");
267
this.dynamicFFF = loadIcon("dynamic_fff.png");
268
this.effectDead = loadIcon("effect_dead.png");
269
this.effectGhost = loadIcon("effect_ghost.png");
270
this.effectAccentuated = loadIcon("effect_accentuated.png");
271
this.effectHeavyAccentuated = loadIcon("effect_heavy_accentuated.png");
272
this.effectHarmonic = loadIcon("effect_harmonic.png");
273
this.effectGrace = loadIcon("effect_grace.png");
274
this.effectBend = loadIcon("effect_bend.png");
275
this.effectTremoloBar = loadIcon("effect_tremolo_bar.png");
276
this.effectSlide = loadIcon("effect_slide.png");
277
this.effectHammer = loadIcon("effect_hammer.png");
278
this.effectVibrato = loadIcon("effect_vibrato.png");
279
this.effectTrill= loadIcon("effect_trill.png");
280
this.effectTremoloPicking = loadIcon("effect_tremolo_picking.png");
281
this.effectPalmMute= loadIcon("effect_palm_mute.png");
282
this.effectStaccato = loadIcon("effect_staccato.png");
283
this.effectTapping = loadIcon("effect_tapping.png");
284
this.effectSlapping = loadIcon("effect_slapping.png");
285
this.effectPopping = loadIcon("effect_popping.png");
286
this.effectFadeIn = loadIcon("effect_fade_in.png");
287
this.browserNew = loadIcon("browser_new.png");
288
this.browserFile = loadIcon("browser_file.png");
289
this.browserFolder = loadIcon("browser_folder.png");
290
this.browserRoot = loadIcon("browser_root.png");
291
this.browserBack = loadIcon("browser_back.png");
292
this.browserRefresh = loadIcon("browser_refresh.png");
293
this.settings = loadIcon("settings.png");
296
private Image loadIcon(String name){
297
Image image = TGFileUtils.loadImage(this.theme,name);
298
this.disposableIcons.add(image);
302
private List purgeDisposableIcons(){
303
List disposableIcons = new ArrayList();
304
Iterator it = this.disposableIcons.iterator();
305
while( it.hasNext() ){
306
Resource resource = (Resource)it.next();
307
disposableIcons.add( resource );
309
this.disposableIcons.clear();
310
return disposableIcons;
313
public void disposeIcons(List resources){
314
Iterator it = resources.iterator();
315
while( it.hasNext() ){
316
Image image = (Image)it.next();
321
public void disposeIcons(){
322
this.disposeIcons(purgeDisposableIcons());
325
public boolean shouldReload(){
326
return (!this.theme.equals(TuxGuitar.instance().getConfig().getStringConfigValue(TGConfigKeys.SKIN)));
329
public Image getDuration(int value){
331
case TGDuration.WHOLE:
332
return this.durations[0];
333
case TGDuration.HALF:
334
return this.durations[1];
335
case TGDuration.QUARTER:
336
return this.durations[2];
337
case TGDuration.EIGHTH:
338
return this.durations[3];
339
case TGDuration.SIXTEENTH:
340
return this.durations[4];
341
case TGDuration.THIRTY_SECOND:
342
return this.durations[5];
343
case TGDuration.SIXTY_FOURTH:
344
return this.durations[6];
349
public Image getAboutAuthors() {
350
return this.aboutAuthors;
353
public Image getAboutDescription() {
354
return this.aboutDescription;
357
public Image getAboutLicense() {
358
return this.aboutLicense;
361
public Image getAppIcon() {
365
public Image getAppSplash() {
366
return this.appSplash;
369
public Image getChord() {
373
public Image getCompositionRepeatClose() {
374
return this.compositionRepeatClose;
377
public Image getCompositionRepeatAlternative() {
378
return this.compositionRepeatAlternative;
381
public Image getCompositionRepeatOpen() {
382
return this.compositionRepeatOpen;
385
public Image getCompositionTempo() {
386
return this.compositionTempo;
389
public Image getCompositionTimeSignature() {
390
return this.compositionTimeSignature;
393
public Image getDurationDotted() {
394
return this.durationDotted;
397
public Image getDurationDoubleDotted() {
398
return this.durationDoubleDotted;
401
public Image getDurationTupleto() {
402
return this.durationTupleto;
405
public Image getDynamicF() {
406
return this.dynamicF;
409
public Image getDynamicFF() {
410
return this.dynamicFF;
413
public Image getDynamicFFF() {
414
return this.dynamicFFF;
417
public Image getDynamicMF() {
418
return this.dynamicMF;
421
public Image getDynamicMP() {
422
return this.dynamicMP;
425
public Image getDynamicP() {
426
return this.dynamicP;
429
public Image getDynamicPP() {
430
return this.dynamicPP;
433
public Image getDynamicPPP() {
434
return this.dynamicPPP;
437
public Image getEditModeEdition() {
438
return this.editModeEdition;
441
public Image getEditModeEditionNotNatural() {
442
return this.editModeEditionNotNatural;
445
public Image getEditModeSelection() {
446
return this.editModeSelection;
449
public Image getEditRedo() {
450
return this.editRedo;
453
public Image getEditUndo() {
454
return this.editUndo;
457
public Image getEffectAccentuated() {
458
return this.effectAccentuated;
461
public Image getEffectBend() {
462
return this.effectBend;
465
public Image getEffectDead() {
466
return this.effectDead;
469
public Image getEffectFadeIn() {
470
return this.effectFadeIn;
473
public Image getEffectGhost() {
474
return this.effectGhost;
477
public Image getEffectGrace() {
478
return this.effectGrace;
481
public Image getEffectHammer() {
482
return this.effectHammer;
485
public Image getEffectHarmonic() {
486
return this.effectHarmonic;
489
public Image getEffectHeavyAccentuated() {
490
return this.effectHeavyAccentuated;
493
public Image getEffectPalmMute() {
494
return this.effectPalmMute;
497
public Image getEffectPopping() {
498
return this.effectPopping;
501
public Image getEffectSlapping() {
502
return this.effectSlapping;
505
public Image getEffectSlide() {
506
return this.effectSlide;
509
public Image getEffectStaccato() {
510
return this.effectStaccato;
513
public Image getEffectTapping() {
514
return this.effectTapping;
517
public Image getEffectTremoloBar() {
518
return this.effectTremoloBar;
521
public Image getEffectTremoloPicking() {
522
return this.effectTremoloPicking;
525
public Image getEffectTrill() {
526
return this.effectTrill;
529
public Image getEffectVibrato() {
530
return this.effectVibrato;
533
public Image getFileNew() {
537
public Image getFileOpen() {
538
return this.fileOpen;
541
public Image getFilePrint() {
542
return this.filePrint;
545
public Image getFilePrintPreview() {
546
return this.filePrintPreview;
549
public Image getFileSave() {
550
return this.fileSave;
553
public Image getFileSaveAs() {
554
return this.fileSaveAs;
557
public Image getFretboard() {
558
return this.fretboard;
561
public Image getFretboardFirstFret() {
562
return this.fretboardFirstFret;
565
public Image getFretboardFret() {
566
return this.fretboardFret;
569
public Image getLayoutLinear() {
570
return this.layoutLinear;
573
public Image getLayoutMultitrack() {
574
return this.layoutMultitrack;
577
public Image getLayoutPage() {
578
return this.layoutPage;
581
public Image getLayoutScore() {
582
return this.layoutScore;
585
public Image getLayoutCompact() {
586
return this.layoutCompact;
589
public Image getMarkerAdd() {
590
return this.markerAdd;
593
public Image getMarkerFirst() {
594
return this.markerFirst;
597
public Image getMarkerLast() {
598
return this.markerLast;
601
public Image getMarkerList() {
602
return this.markerList;
605
public Image getMarkerNext() {
606
return this.markerNext;
609
public Image getMarkerPrevious() {
610
return this.markerPrevious;
613
public Image getMarkerRemove() {
614
return this.markerRemove;
617
public Image getMixer() {
621
public Image getNoteTied() {
622
return this.noteTied;
625
public Image getOptionLanguage() {
626
return this.optionLanguage;
629
public Image getOptionMain() {
630
return this.optionMain;
633
public Image getOptionSound() {
634
return this.optionSound;
637
public Image getOptionStyle() {
638
return this.optionStyle;
641
public Image getOptionToolbars() {
642
return this.optionToolbars;
645
public Image getOptionSkin() {
646
return this.optionSkin;
649
public Image getPaintableGrace() {
650
return this.paintableGrace;
653
public Image getPaintableTempo() {
654
return this.paintableTempo;
657
public Image getSongProperties() {
658
return this.songProperties;
661
public Image getTrackAdd() {
662
return this.trackAdd;
665
public Image getTrackRemove() {
666
return this.trackRemove;
669
public Image getTransport() {
670
return this.transport;
673
public Image getTransportFirst1() {
674
return this.transportFirst1;
677
public Image getTransportFirst2() {
678
return this.transportFirst2;
681
public Image getTransportIconFirst1() {
682
return this.transportIconFirst1;
685
public Image getTransportIconFirst2() {
686
return this.transportIconFirst2;
689
public Image getTransportIconLast1() {
690
return this.transportIconLast1;
693
public Image getTransportIconLast2() {
694
return this.transportIconLast2;
697
public Image getTransportIconNext1() {
698
return this.transportIconNext1;
701
public Image getTransportIconNext2() {
702
return this.transportIconNext2;
705
public Image getTransportIconPause() {
706
return this.transportIconPause;
709
public Image getTransportIconPlay1() {
710
return this.transportIconPlay1;
713
public Image getTransportIconPlay2() {
714
return this.transportIconPlay2;
717
public Image getTransportIconPrevious1() {
718
return this.transportIconPrevious1;
721
public Image getTransportIconPrevious2() {
722
return this.transportIconPrevious2;
725
public Image getTransportIconStop1() {
726
return this.transportIconStop1;
729
public Image getTransportIconStop2() {
730
return this.transportIconStop2;
733
public Image getTransportLast1() {
734
return this.transportLast1;
737
public Image getTransportLast2() {
738
return this.transportLast2;
741
public Image getTransportNext1() {
742
return this.transportNext1;
745
public Image getTransportNext2() {
746
return this.transportNext2;
749
public Image getTransportPause() {
750
return this.transportPause;
753
public Image getTransportPlay1() {
754
return this.transportPlay1;
757
public Image getTransportPlay2() {
758
return this.transportPlay2;
761
public Image getTransportPrevious1() {
762
return this.transportPrevious1;
765
public Image getTransportPrevious2() {
766
return this.transportPrevious2;
769
public Image getTransportStop1() {
770
return this.transportStop1;
773
public Image getTransportStop2() {
774
return this.transportStop2;
777
public Image getTransportMetronome() {
778
return this.transportMetronome;
781
public Image getTransportMode() {
782
return this.transportMode;
785
public Image getBrowserBack() {
786
return this.browserBack;
789
public Image getBrowserFile() {
790
return this.browserFile;
793
public Image getBrowserFolder() {
794
return this.browserFolder;
797
public Image getBrowserRefresh() {
798
return this.browserRefresh;
801
public Image getBrowserRoot() {
802
return this.browserRoot;
805
public Image getBrowserNew() {
806
return this.browserNew;
809
public Image getSettings() {
810
return this.settings;