88import java .util .List ;
99import java .util .Map ;
1010
11+ import org .eclipse .jface .preference .IPreferenceStore ;
1112import org .eclipse .ui .IPartListener2 ;
1213import org .eclipse .ui .IPartService ;
1314import org .eclipse .ui .IWorkbenchPart ;
1718import pm .eclipse .editbox .IBoxProvider ;
1819
1920/**
21+ * Default settings
2022 * @author Piotr Metel
2123 * @author Paul Verest : added "RainbowDrops" and ALL_THEMES_LIST to be used in every category
2224 */
2325public class BoxProviderRegistry {
2426
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?
2630 private static final String PROVIDER_ID_ = "pm.eclipse.editbox.provider." ;
2731 //+
2832 private static final List <String > ALL_THEMES_LIST = Arrays .asList (
@@ -35,24 +39,47 @@ public class BoxProviderRegistry {
3539 protected Map <IWorkbenchPart , IBoxDecorator > decorators ;
3640 protected Map <IPartService , IPartListener2 > partListeners ;
3741
42+ //
3843 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 ){
4248 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+ }
4356 return providers ;
4457 }
4558
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 () {
4772 List <IBoxProvider > result = null ;
48- String pSetting = EditBox . getDefault ().getPreferenceStore (). getString (PROIVDERS );
73+ String pSetting = getStore ().getString (PROVIDERS );
4974 if (pSetting != null && pSetting .length () > 0 ) {
5075 String [] split = pSetting .split ("," );
5176 if (split .length > 0 )
5277 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+ }
5683 }
5784 return result ;
5885 }
@@ -68,7 +95,7 @@ public void storeProviders(){
6895 if (sb .length ()!=0 ) sb .append ("," );
6996 sb .append (p .getName ());
7097 }
71- EditBox . getDefault ().getPreferenceStore (). setValue (PROIVDERS ,sb .toString ());
98+ getStore ().setValue (PROVIDERS ,sb .toString ());
7299 }
73100 }
74101
@@ -93,14 +120,15 @@ protected Collection<IBoxProvider> defaultProviders() {
93120 }
94121
95122 /**
96- * is used in createProviderForNameAndExtentions() and providerForName()
123+ * is used in createProviderForNameAndExtentions(), providerForName()
124+ * and loadProviders() to load from Preferences
97125 */
98126 protected BoxProviderImpl createProvider (String name ) {
99127 BoxProviderImpl provider = new BoxProviderImpl ();
100128 provider .setId (PROVIDER_ID_ + name );
101129 provider .setName (name );
102130 provider .setBuilders (defaultBuilders ());
103- provider .setDefaultSettingsCatalog (Arrays .asList ("Default" ));
131+ provider .setDefaultSettingsCatalog (ALL_THEMES_LIST ); // was Arrays.asList("Default")
104132 return provider ;
105133 }
106134
0 commit comments