diff --git a/README.md b/README.md index 9e4780d..a919458 100644 --- a/README.md +++ b/README.md @@ -82,6 +82,16 @@ Default themes for a Category are defined in `pm.eclipse.editbox\src\pm\eclipse\ In eclipse with PDE (e.g. Enide Studio) open `plugin.xml` , click `Launch an Eclipse application`. +Preferences are saved to file +`\.metadata\.plugins\org.eclipse.core.runtime\.settings\pm.eclipse.editbox.prefs` +see `pm.eclipse.editbox\docs` for an example. + +### Terms + +Provider is Category. +Catalog is list of Themes. +Theme is set of colors. + ### Build `mvn package` to make update site and zip archive. diff --git a/pm.eclipse.editbox/docs/1pm.eclipse.editbox.prefs b/pm.eclipse.editbox/docs/1pm.eclipse.editbox.prefs new file mode 100644 index 0000000..74d4762 --- /dev/null +++ b/pm.eclipse.editbox/docs/1pm.eclipse.editbox.prefs @@ -0,0 +1,25 @@ +ENABLED=true +eclipse.preferences.version=1 +pm.eclipse.editbox.provider.JavaScript_catalog=Default +pm.eclipse.editbox.provider.java_Default=\#COMMENT\r\n\#Thu Apr 24 10\:02\:18 CST 2014\r\nHighlightOne\=false\r\nFillGradient\=false\r\nFillSelected\=true\r\nRoundBox\=true\r\nBorderColorType\=1\r\nName\=Default\r\nExpandBox\=false\r\nBorderDrawLine\=false\r\nFillOnMove\=true\r\nAlpha\=0\r\nHighlightWidth\=1\r\nBorderWidth\=1\r\nHighlightColor\=acb3b7\r\nBorderColor\=c0c0c0\r\nFillKeyModifier\=Alt\r\nHighlightColorType\=3\r\nFillGradientColor\=dadcc2\r\nBuilder\=Java\r\nHighlightDrawLine\=false\r\nFillSelectedColor\=ffffff\r\nBorderLineStyle\=2\r\nColors\=ffffff-c5d0ac-d9e3b7-e8ecd9\r\nHighlightLineStyle\=0\r\nNoBackground\=false\r\nCirculateLevelColors\=false\r\n +pm.eclipse.editbox.provider.java_catalog=Default +pm.eclipse.editbox.provider.java_default=Default +pm.eclipse.editbox.provider.java_enabled=true +pm.eclipse.editbox.provider.java_fileNames=*.java,*.class +pm.eclipse.editbox.provider.js_Default=\#COMMENT\r\n\#Thu Apr 24 10\:02\:18 CST 2014\r\nHighlightOne\=true\r\nFillGradient\=false\r\nFillSelected\=true\r\nRoundBox\=true\r\nBorderColorType\=0\r\nName\=Default\r\nExpandBox\=false\r\nBorderDrawLine\=false\r\nFillOnMove\=false\r\nAlpha\=0\r\nHighlightWidth\=1\r\nBorderWidth\=1\r\nHighlightColor\=000000\r\nBorderColor\=00bbbb\r\nFillKeyModifier\=Alt\r\nHighlightColorType\=0\r\nFillGradientColor\=null\r\nBuilder\=Text\r\nHighlightDrawLine\=false\r\nFillSelectedColor\=ffffc4\r\nBorderLineStyle\=0\r\nColors\=null-d0dd9b-cdd8b9-e9f58b\r\nHighlightLineStyle\=0\r\nNoBackground\=false\r\nCirculateLevelColors\=false\r\n +pm.eclipse.editbox.provider.js_default=Default +pm.eclipse.editbox.provider.js_enabled=true +pm.eclipse.editbox.provider.js_fileNames=*.js +pm.eclipse.editbox.provider.markup_Default=\#COMMENT\r\n\#Thu Apr 24 10\:02\:18 CST 2014\r\nHighlightOne\=false\r\nFillGradient\=true\r\nFillSelected\=true\r\nRoundBox\=false\r\nBorderColorType\=1\r\nName\=Default\r\nExpandBox\=false\r\nBorderDrawLine\=false\r\nFillOnMove\=false\r\nAlpha\=0\r\nHighlightWidth\=1\r\nBorderWidth\=1\r\nHighlightColor\=000000\r\nBorderColor\=808080\r\nFillKeyModifier\=null\r\nHighlightColorType\=3\r\nFillGradientColor\=dadcc2\r\nBuilder\=Markup\r\nHighlightDrawLine\=false\r\nFillSelectedColor\=ffffff\r\nBorderLineStyle\=0\r\nColors\=d4d0c8-d9dbc0-dee6b8\r\nHighlightLineStyle\=0\r\nNoBackground\=false\r\nCirculateLevelColors\=true\r\n +pm.eclipse.editbox.provider.markup_default=Default +pm.eclipse.editbox.provider.markup_enabled=true +pm.eclipse.editbox.provider.markup_fileNames=*.*ml,*.jsp +pm.eclipse.editbox.provider.python_Default=\#COMMENT\r\n\#Thu Apr 24 10\:02\:18 CST 2014\r\nHighlightOne\=true\r\nFillGradient\=false\r\nFillSelected\=true\r\nRoundBox\=true\r\nBorderColorType\=1\r\nName\=Default\r\nExpandBox\=false\r\nBorderDrawLine\=true\r\nFillOnMove\=true\r\nAlpha\=0\r\nHighlightWidth\=1\r\nBorderWidth\=1\r\nHighlightColor\=000000\r\nBorderColor\=00bbbb\r\nFillKeyModifier\=Alt\r\nHighlightColorType\=3\r\nFillGradientColor\=e1e1d0\r\nBuilder\=Text2\r\nHighlightDrawLine\=false\r\nFillSelectedColor\=e1e1d0\r\nBorderLineStyle\=0\r\nColors\=ffffff\r\nHighlightLineStyle\=0\r\nNoBackground\=false\r\nCirculateLevelColors\=false\r\n +pm.eclipse.editbox.provider.python_default=Default +pm.eclipse.editbox.provider.python_enabled=true +pm.eclipse.editbox.provider.python_fileNames=*.py +pm.eclipse.editbox.provider.text_Default=\#COMMENT\r\n\#Thu Apr 24 10\:02\:18 CST 2014\r\nHighlightOne\=true\r\nFillGradient\=false\r\nFillSelected\=true\r\nRoundBox\=true\r\nBorderColorType\=1\r\nName\=Default\r\nExpandBox\=false\r\nBorderDrawLine\=false\r\nFillOnMove\=false\r\nAlpha\=0\r\nHighlightWidth\=1\r\nBorderWidth\=1\r\nHighlightColor\=000000\r\nBorderColor\=00bbbb\r\nFillKeyModifier\=Alt\r\nHighlightColorType\=2\r\nFillGradientColor\=null\r\nBuilder\=Text\r\nHighlightDrawLine\=false\r\nFillSelectedColor\=ffffc4\r\nBorderLineStyle\=0\r\nColors\=c4c7b1-d0dd9b-cdd8b9-e2e3ac-f2fabc\r\nHighlightLineStyle\=0\r\nNoBackground\=false\r\nCirculateLevelColors\=false\r\n +pm.eclipse.editbox.provider.text_default=Default +pm.eclipse.editbox.provider.text_enabled=false +pm.eclipse.editbox.provider.text_fileNames=*.txt,*.* +proivders=java,python,markup,text,js diff --git a/pm.eclipse.editbox/src/pm/eclipse/editbox/impl/BoxProviderRegistry.java b/pm.eclipse.editbox/src/pm/eclipse/editbox/impl/BoxProviderRegistry.java index b6d26b1..c0c8f48 100644 --- a/pm.eclipse.editbox/src/pm/eclipse/editbox/impl/BoxProviderRegistry.java +++ b/pm.eclipse.editbox/src/pm/eclipse/editbox/impl/BoxProviderRegistry.java @@ -8,6 +8,7 @@ import java.util.List; import java.util.Map; +import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.ui.IPartListener2; import org.eclipse.ui.IPartService; import org.eclipse.ui.IWorkbenchPart; @@ -17,12 +18,15 @@ import pm.eclipse.editbox.IBoxProvider; /** + * Default settings * @author Piotr Metel * @author Paul Verest : added "RainbowDrops" and ALL_THEMES_LIST to be used in every category */ public class BoxProviderRegistry { - private static final String PROIVDERS = "proivders"; + //used to get Preferences, if changed, user preferences are gone after update + private static final String PROVIDERS = "proivders"; + // always added. Is it useless? private static final String PROVIDER_ID_ = "pm.eclipse.editbox.provider."; //+ private static final List ALL_THEMES_LIST = Arrays.asList( @@ -35,24 +39,47 @@ public class BoxProviderRegistry { protected Map decorators; protected Map partListeners; + // public Collection getBoxProviders() { - if (providers == null) - providers = loadProviders(); - if (providers == null) + if (providers == null){ + providers = loadProvidersFromPreferences(); + } + if (providers == null){ providers = defaultProviders(); + }else{ + // comparing providers from Preferences with defaultProviders + // can be here + // proivders=java,python,markup,text,js + // createProvider(String name) + // + } return providers; } - protected Collection loadProviders() { + //{ like in BoxSettingsStoreImpl + protected IPreferenceStore store; + protected IPreferenceStore getStore(){ + if (store == null) + store = EditBox.getDefault().getPreferenceStore(); + return store; + } + //} + + // Preferences have string like + // proivders=java,python,markup,text,js + // calls createProvider(name) + protected Collection loadProvidersFromPreferences() { List result = null; - String pSetting = EditBox.getDefault().getPreferenceStore().getString(PROIVDERS); + String pSetting = getStore().getString(PROVIDERS); if (pSetting != null && pSetting.length() > 0) { String[] split = pSetting.split(","); if (split.length > 0) result = new ArrayList(); - for (String s : split) - if (s.trim().length() > 0) - result.add(createProvider(s.trim())); + for (String s : split){ + String name = s.trim(); + if (name.length() > 0) + result.add(createProvider(name)); + } } return result; } @@ -68,7 +95,7 @@ public void storeProviders(){ if (sb.length()!=0) sb.append(","); sb.append(p.getName()); } - EditBox.getDefault().getPreferenceStore().setValue(PROIVDERS,sb.toString()); + getStore().setValue(PROVIDERS,sb.toString()); } } @@ -93,14 +120,15 @@ protected Collection defaultProviders() { } /** - * is used in createProviderForNameAndExtentions() and providerForName() + * is used in createProviderForNameAndExtentions(), providerForName() + * and loadProviders() to load from Preferences */ protected BoxProviderImpl createProvider(String name) { BoxProviderImpl provider = new BoxProviderImpl(); provider.setId(PROVIDER_ID_ + name); provider.setName(name); provider.setBuilders(defaultBuilders()); - provider.setDefaultSettingsCatalog(Arrays.asList("Default")); + provider.setDefaultSettingsCatalog(ALL_THEMES_LIST); // was Arrays.asList("Default") return provider; }