8
8
import java .util .List ;
9
9
import java .util .Map ;
10
10
11
+ import org .eclipse .jface .preference .IPreferenceStore ;
11
12
import org .eclipse .ui .IPartListener2 ;
12
13
import org .eclipse .ui .IPartService ;
13
14
import org .eclipse .ui .IWorkbenchPart ;
17
18
import pm .eclipse .editbox .IBoxProvider ;
18
19
19
20
/**
21
+ * Default settings
20
22
* @author Piotr Metel
21
23
* @author Paul Verest : added "RainbowDrops" and ALL_THEMES_LIST to be used in every category
22
24
*/
23
25
public class BoxProviderRegistry {
24
26
25
- private static final String PROIVDERS = "proivders" ;
27
+ //used to get Preferences, if changed, user preferences are gone after update
28
+ private static final String PROVIDERS = "proivders" ;
29
+ // always added. Is it useless?
26
30
private static final String PROVIDER_ID_ = "pm.eclipse.editbox.provider." ;
27
31
//+
28
32
private static final List <String > ALL_THEMES_LIST = Arrays .asList (
@@ -35,24 +39,47 @@ public class BoxProviderRegistry {
35
39
protected Map <IWorkbenchPart , IBoxDecorator > decorators ;
36
40
protected Map <IPartService , IPartListener2 > partListeners ;
37
41
42
+ //
38
43
public Collection <IBoxProvider > getBoxProviders () {
39
- if (providers == null )
40
- providers = loadProviders ();
41
- if (providers == null )
44
+ if (providers == null ){
45
+ providers = loadProvidersFromPreferences ();
46
+ }
47
+ if (providers == null ){
42
48
providers = defaultProviders ();
49
+ }else {
50
+ // comparing providers from Preferences with defaultProviders
51
+ // can be here
52
+ // proivders=java,python,markup,text,js
53
+ // createProvider(String name)
54
+ //
55
+ }
43
56
return providers ;
44
57
}
45
58
46
- protected Collection <IBoxProvider > loadProviders () {
59
+ //{ like in BoxSettingsStoreImpl
60
+ protected IPreferenceStore store ;
61
+ protected IPreferenceStore getStore (){
62
+ if (store == null )
63
+ store = EditBox .getDefault ().getPreferenceStore ();
64
+ return store ;
65
+ }
66
+ //}
67
+
68
+ // Preferences have string like
69
+ // proivders=java,python,markup,text,js
70
+ // calls createProvider(name)
71
+ protected Collection <IBoxProvider > loadProvidersFromPreferences () {
47
72
List <IBoxProvider > result = null ;
48
- String pSetting = EditBox . getDefault ().getPreferenceStore (). getString (PROIVDERS );
73
+ String pSetting = getStore ().getString (PROVIDERS );
49
74
if (pSetting != null && pSetting .length () > 0 ) {
50
75
String [] split = pSetting .split ("," );
51
76
if (split .length > 0 )
52
77
result = new ArrayList <IBoxProvider >();
53
- for (String s : split )
54
- if (s .trim ().length () > 0 )
55
- result .add (createProvider (s .trim ()));
78
+ for (String s : split ){
79
+ String name = s .trim ();
80
+ if (name .length () > 0 )
81
+ result .add (createProvider (name ));
82
+ }
56
83
}
57
84
return result ;
58
85
}
@@ -68,7 +95,7 @@ public void storeProviders(){
68
95
if (sb .length ()!=0 ) sb .append ("," );
69
96
sb .append (p .getName ());
70
97
}
71
- EditBox . getDefault ().getPreferenceStore (). setValue (PROIVDERS ,sb .toString ());
98
+ getStore ().setValue (PROVIDERS ,sb .toString ());
72
99
}
73
100
}
74
101
@@ -93,14 +120,15 @@ protected Collection<IBoxProvider> defaultProviders() {
93
120
}
94
121
95
122
/**
96
- * is used in createProviderForNameAndExtentions() and providerForName()
123
+ * is used in createProviderForNameAndExtentions(), providerForName()
124
+ * and loadProviders() to load from Preferences
97
125
*/
98
126
protected BoxProviderImpl createProvider (String name ) {
99
127
BoxProviderImpl provider = new BoxProviderImpl ();
100
128
provider .setId (PROVIDER_ID_ + name );
101
129
provider .setName (name );
102
130
provider .setBuilders (defaultBuilders ());
103
- provider .setDefaultSettingsCatalog (Arrays .asList ("Default" ));
131
+ provider .setDefaultSettingsCatalog (ALL_THEMES_LIST ); // was Arrays.asList("Default")
104
132
return provider ;
105
133
}
106
134
0 commit comments