();
@@ -729,6 +739,7 @@ protected void notifyChange(String propertyName, Object oldValue, Object newValu
listener.propertyChange(e);
}
}
+ //}
public void setBorderLineStyle(int selectionIndex) {
this.borderLineStyle = selectionIndex;
diff --git a/pm.eclipse.editbox/src/pm/eclipse/editbox/impl/BoxSettingsStoreImpl.java b/pm.eclipse.editbox/src/pm/eclipse/editbox/impl/BoxSettingsStoreImpl.java
index aa0a8d7..2ee3967 100644
--- a/pm.eclipse.editbox/src/pm/eclipse/editbox/impl/BoxSettingsStoreImpl.java
+++ b/pm.eclipse.editbox/src/pm/eclipse/editbox/impl/BoxSettingsStoreImpl.java
@@ -14,71 +14,97 @@
import pm.eclipse.editbox.IBoxSettingsStore;
+/** ProviderStore
+ * Saving to pm.eclipse.editbox.prefs just ONE provider:
+ * gives mapping to serialize to Eclipse IPreferenceStore
+
+pm.eclipse.editbox.provider.java_Default=\#COMMENT\r\n\#Mon Jun 30 17\:24\:47 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_RainbowDrops=\#COMMENT\r\n\#Wed Jul 09 17\:06\:50 CST 2014\r\nHighlightOne\=true\r\nFillGradient\=false\r\nFillSelected\=false\r\nRoundBox\=false\r\nBorderColorType\=0\r\nName\=RainbowDrops\r\nExpandBox\=false\r\nBorderDrawLine\=true\r\nFillOnMove\=false\r\nAlpha\=0\r\nHighlightWidth\=1\r\nBorderWidth\=1\r\nHighlightColor\=00ff00\r\nBorderColor\=00bbbb\r\nFillKeyModifier\=Alt\r\nHighlightColorType\=0\r\nFillGradientColor\=null\r\nBuilder\=Java\r\nHighlightDrawLine\=true\r\nFillSelectedColor\=202020\r\nBorderLineStyle\=1\r\nColors\=202020-null\r\nHighlightLineStyle\=0\r\nNoBackground\=false\r\nCirculateLevelColors\=false\r\n
+pm.eclipse.editbox.provider.java_catalog=Default,Whitebox,OnClick,GreyGradient,Java_v_20,RainbowDropsLine,RainbowDropsLineFill,BlueToDeepBlue,OrangeToRed,BlueGradient22WithDarkBoldLeftBorder,BlueLight,Java_PaleBlue,RainbowDrops
+pm.eclipse.editbox.provider.java_default=RainbowDrops
+pm.eclipse.editbox.provider.java_enabled=true
+pm.eclipse.editbox.provider.java_fileNames=*.java,*.class,*.gradle,*.groovy,*.scala
+pm.eclipse.editbox.provider.js_Default=\#COMMENT\r\n\#Fri Jul 04 11\:28\:13 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_RainbowDropsLineFill=\#COMMENT\r\n\#Wed Jul 09 17\:06\:50 CST 2014\r\nHighlightOne\=true\r\nFillGradient\=false\r\nFillSelected\=true\r\nRoundBox\=false\r\nBorderColorType\=0\r\nName\=RainbowDropsLineFill\r\nExpandBox\=false\r\nBorderDrawLine\=true\r\nFillOnMove\=true\r\nAlpha\=0\r\nHighlightWidth\=1\r\nBorderWidth\=1\r\nHighlightColor\=00ff00\r\nBorderColor\=00bbbb\r\nFillKeyModifier\=\r\nHighlightColorType\=0\r\nFillGradientColor\=null\r\nBuilder\=Java\r\nHighlightDrawLine\=true\r\nFillSelectedColor\=000080\r\nBorderLineStyle\=1\r\nColors\=202020-null\r\nHighlightLineStyle\=1\r\nNoBackground\=false\r\nCirculateLevelColors\=false\r\n
+pm.eclipse.editbox.provider.js_default=RainbowDropsLineFill
+pm.eclipse.editbox.provider.js_enabled=true
+pm.eclipse.editbox.provider.js_fileNames=*.js,*.jjs,*.jshintrc,*.mjs,*.njs,*.pjs,*.vjs,*.ts,*.coffee,*.dart
+
+ * where java or js is providerId
+ * keys starting with Capital are actually themes names
+ */
public class BoxSettingsStoreImpl implements IBoxSettingsStore {
private static final String FILE_NAMES = "fileNames";
private static final String TXT_POSTFIX = "$txt";
- private static final String DEFAULT = "default";
+ private static final String DEFAULT = "default"; //what theme to use as default
private static final String ENABLED = "enabled";
+ private static final String CATALOG = "catalog";
protected String providerId;
- protected IPreferenceStore store;
+ protected IPreferenceStore store = EditBox.getDefault().getPreferenceStore();
private Set catalog;
private Collection defaultCatalog;
- protected IPreferenceStore getStore(){
- if (store == null)
- store = EditBox.getDefault().getPreferenceStore();
- return store;
- }
+// protected IPreferenceStore store{
+// if (store == null)
+// store = EditBox.getDefault().getPreferenceStore();
+// return store;
+// }
- protected String key(String postfix){
+ protected String providerKey(String postfix){
return providerId+"_"+postfix;
}
+ @Override
public void setProviderId(String id) {
this.providerId = id;
}
+ @Override
public void loadDefaults(IBoxSettings editorsSettings) {
- String defaultName = getStore().getString(key(DEFAULT));
- if (isEmpty(defaultName)) defaultName = providerId;
- load(defaultName,editorsSettings);
- }
-
- public void load(String name, IBoxSettings editorsSettings) {
- String value = getStore().getString(key(name));
- if (!isEmpty(value))
- editorsSettings.load(value);
+ String defaultThemeName = store.getString(providerKey(DEFAULT));
+ if (isEmpty(defaultThemeName)){
+ defaultThemeName = providerId;
+ }
+ load(defaultThemeName, editorsSettings);
+ }
+
+ @Override
+ public void load(String themeName, IBoxSettings editorsSettings) {
+ String themeInsideString = store.getString(providerKey(themeName));
+ if (!isEmpty(themeInsideString))
+ editorsSettings.load(themeInsideString);
else
try {
- editorsSettings.load(getClass().getResourceAsStream("/"+name + ".eb"));
+ editorsSettings.load(getClass().getResourceAsStream("/"+themeName + ".eb"));
} catch (Exception e) {
- EditBox.logError(this, "Error loading settings: "+name, e);
+ EditBox.logError(this, "Error loading settings: "+themeName, e);
}
- editorsSettings.setEnabled(getIsEnabled());
+ editorsSettings.setEnabled(getIsEnabled()); //XXX smell: is Enabled for Provider, not theme!
editorsSettings.setFileNames(getFileNames());
}
- protected boolean isEmpty(String s) {
+ protected static boolean isEmpty(String s) {
return s == null || s.length() == 0;
}
protected boolean getIsEnabled() {
- String key = key(ENABLED);
- if (getStore().contains(key))
- return getStore().getBoolean(key);
+ String key = providerKey(ENABLED);
+ if (store.contains(key))
+ return store.getBoolean(key);
return true;
}
+ @Override
public void saveDefaults(IBoxSettings settings) {
- getStore().setValue(key(ENABLED), settings.getEnabled()?"true":"false");
- getStore().setValue(key(DEFAULT),settings.getName());
+ store.setValue(providerKey(ENABLED), settings.getEnabled()?"true":"false");
+ store.setValue(providerKey(DEFAULT), settings.getName());
store(settings);
}
public void store(IBoxSettings settings) {
String name = settings.getName();
- getStore().setValue(key(name),settings.export());
+ store.setValue(providerKey(name),settings.export());
setFileNames(settings.getFileNames());
addToCatalog(name);
EditBox.getDefault().savePluginPreferences();
@@ -98,13 +124,14 @@ private void storeCatalog(Set cat) {
if (sb.length()>0) sb.append(",");
sb.append(c);
}
- getStore().setValue(key("catalog"), sb.toString());
+ store.setValue(providerKey(CATALOG), sb.toString());
}
+ @Override
public Set getCatalog() {
if (catalog == null){
catalog = new LinkedHashSet();
- String cstr = getStore().getString(key("catalog"));
+ String cstr = store.getString(providerKey(CATALOG));
if (!isEmpty(cstr))
for (String s : cstr.split(","))
catalog.add(s);
@@ -119,11 +146,12 @@ public void setDefaultSettingsCatalog(Collection cat){
defaultCatalog = cat;
}
+ @Override
public void remove(String name) {
if (getCatalog().remove(name))
storeCatalog(getCatalog());
- getStore().setValue(key(name), "");
- getStore().setValue(key(name+TXT_POSTFIX), "");
+ store.setValue(providerKey(name), "");
+ store.setValue(providerKey(name+TXT_POSTFIX), "");
EditBox.getDefault().savePluginPreferences();
}
@@ -138,30 +166,26 @@ protected void setFileNames(Collection fileNames) {
first = false;
}
}
- getStore().setValue(key(FILE_NAMES), sb.toString());
+ store.setValue(providerKey(FILE_NAMES), sb.toString());
}
/*
* @return null if settings never stored before
*/
protected Collection getFileNames() {
- String key = key(FILE_NAMES);
-
- if (!getStore().contains(key))
+ String fileNames = store.getString(providerKey(FILE_NAMES));
+ if (fileNames == null || fileNames.equals("")) {
return null;
-
- String value = getStore().getString(key);
- List l = new ArrayList();
- if (value != null) {
- StringTokenizer st = new StringTokenizer(value, ",");
- while (st.hasMoreTokens()) {
- String t = st.nextToken().trim();
- if (t.length() > 0)
- l.add(t);
- }
+ }
+ List list = new ArrayList();
+ StringTokenizer st = new StringTokenizer(fileNames, ",");
+ while (st.hasMoreTokens()) {
+ String t = st.nextToken().trim();
+ if (t.length() > 0)
+ list.add(t);
}
- return l;
+ return list;
}
}
diff --git a/pm.eclipse.editbox/src/pm/eclipse/editbox/pref/BoxSettingsTab.java b/pm.eclipse.editbox/src/pm/eclipse/editbox/pref/BoxSettingsTab.java
index 080044f..4670fdc 100644
--- a/pm.eclipse.editbox/src/pm/eclipse/editbox/pref/BoxSettingsTab.java
+++ b/pm.eclipse.editbox/src/pm/eclipse/editbox/pref/BoxSettingsTab.java
@@ -42,9 +42,9 @@
public class BoxSettingsTab {
protected IWorkbench workbench;
- protected IBoxProvider provider;
- protected IBoxSettingsStore store;
- protected IBoxSettings settings;
+ protected IBoxProvider provider; // stored theme settings ?
+ protected IBoxSettingsStore providerStore;
+ protected IBoxSettings theme; // current theme settings ?
protected IBoxDecorator decorator;
private Button enabled;
@@ -83,33 +83,34 @@ public class BoxSettingsTab {
public BoxSettingsTab() {
}
-
+
/**
* Create Tab Control
* */
- public Control createContro(Composite parent, IBoxProvider provider0) {
+ // called from EditboxPreferencePage.newTab(String categoryName)
+ public Control createControlsWithContent(Composite parent, IBoxProvider provider0) {
provider = provider0;
if (provider == null) {
Label l = new Label(parent, SWT.NONE);
l.setText("Error - cannot make configuration");
return l;
}
- store = provider.getSettingsStore();
- settings = provider.createSettings();
+ providerStore = provider.getSettingsStore();
+ theme = provider.createSettings();
decorator = provider.createDecorator();
- decorator.setSettings(settings);
- Control result = createContents0(parent);
- updateContents();
+ decorator.setSettings(theme);
+ Control result = createControls(parent);
+ updateContentFromTheme();
decorator.setStyledText(st);
decorator.decorate(true);
decorator.enableUpdates(true);
- settings.addPropertyChangeListener(new IPropertyChangeListener() {
+ theme.addPropertyChangeListener(new IPropertyChangeListener() {
public void propertyChange(PropertyChangeEvent event) {
changed = true;
if (event.getProperty().equals(IBoxSettings.PropertiesKeys.Color.name()))
updateFromToColors();
- provider.getEditorsBoxSettings().copyFrom(settings);
+ provider.getEditorsBoxSettings().copyFrom(theme);
}
});
@@ -117,7 +118,7 @@ public void propertyChange(PropertyChangeEvent event) {
}
- protected Control createContents0(Composite parent) {
+ protected Control createControls(Composite parent) {
int N = 6;
Composite c = new Composite(parent, SWT.NONE);
this.composite = c;
@@ -134,9 +135,8 @@ protected Control createContents0(Composite parent) {
enabled.setText("Enabled");
enabled.setAlignment(SWT.RIGHT);
enabled.addSelectionListener(new SelectionAdapter() {
-
public void widgetSelected(SelectionEvent e) {
- settings.setEnabled(enabled.getSelection());
+ theme.setEnabled(enabled.getSelection());
}
});
@@ -144,13 +144,13 @@ public void widgetSelected(SelectionEvent e) {
@Override
public void widgetSelected(SelectionEvent e) {
FileDialog dialog = new FileDialog(getShell(), SWT.SAVE);
- dialog.setFileName(settings.getName());
+ dialog.setFileName(theme.getName());
dialog.setFilterExtensions(new String[]{"*.eb"});
dialog.setText("Editbox settings");
String file = dialog.open();
if(file != null) {
try{
- settings.export(new FileOutputStream(file));
+ theme.export(new FileOutputStream(file));
}catch(Exception ex){
EditBox.logError(this, "Failed to export EditBox setttings", ex);
MessageBox mb = new MessageBox(getShell(),SWT.ICON_ERROR);
@@ -168,7 +168,7 @@ public void widgetSelected(SelectionEvent e) {
@Override
public void widgetSelected(SelectionEvent e) {
FileDialog dialog = new FileDialog(getShell(), SWT.OPEN);
- dialog.setFileName(settings.getName());
+ dialog.setFileName(theme.getName());
dialog.setFilterExtensions(new String[]{"*.eb"});
dialog.setText("Editbox settings");
String file = dialog.open();
@@ -176,9 +176,9 @@ public void widgetSelected(SelectionEvent e) {
try{
IBoxSettings newSettings = provider.createSettings();
newSettings.load(new FileInputStream(file));
- newSettings.setEnabled(settings.getEnabled());
- settings.copyFrom(newSettings);
- updateContents();
+ newSettings.setEnabled(theme.getEnabled());
+ theme.copyFrom(newSettings);
+ updateContentFromTheme();
}catch(Exception ex){
EditBox.logError(this, "Failed to import EditBox setttings", ex);
MessageBox mb = new MessageBox(getShell(),SWT.ICON_ERROR);
@@ -194,7 +194,7 @@ public void widgetSelected(SelectionEvent e) {
gd.horizontalSpan = 4;
importConfig.setLayoutData(gd);
- newLabel(c, "Enter/select theme");
+ newLabel(c, "Rename/select theme");
combo = new Combo(c, SWT.DROP_DOWN);
gd = new GridData(GridData.BEGINNING);
gd.widthHint = 150;
@@ -206,10 +206,7 @@ public void widgetSelected(SelectionEvent e) {
public void widgetSelected(SelectionEvent e) {
String s = combo.getText();
if (s != null && s.length() > 0) {
- decorator.enableUpdates(false);
- store.load(s, settings); //: get themes list
- updateContents();
- decorator.enableUpdates(true);
+ loadSettingsForName(s);
}
}
});
@@ -224,7 +221,7 @@ public void widgetSelected(SelectionEvent e) {
int si = combo.indexOf(t);
if (si > -1) {
combo.remove(si);
- store.remove(t);
+ providerStore.remove(t);
} else {
combo.setText("");
}
@@ -250,7 +247,7 @@ public void widgetSelected(SelectionEvent e) {
borderLineStyle = newCombo(c1, new String[]{"Solid","Dot","Dash","DashDot", "DashDotDot"}, new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
- settings.setBorderLineStyle(borderLineStyle.getSelectionIndex());
+ theme.setBorderLineStyle(borderLineStyle.getSelectionIndex());
}
});
borderLineStyle.select(0);
@@ -267,7 +264,7 @@ public void widgetSelected(SelectionEvent e) {
@Override
public void widgetSelected(SelectionEvent e) {
int idx = borderColorType.getSelectionIndex();
- settings.setBorderColorType(idx);
+ theme.setBorderColorType(idx);
borderColorSelector.getButton().setEnabled(idx == 0);
}
});
@@ -276,7 +273,7 @@ public void widgetSelected(SelectionEvent e) {
borderColorSelector = new ColorSelector(c);
borderColorSelector.addListener(new IPropertyChangeListener() {
public void propertyChange(PropertyChangeEvent event) {
- settings.setBorderRGB(borderColorSelector.getColorValue());
+ theme.setBorderRGB(borderColorSelector.getColorValue());
}
});
@@ -286,7 +283,7 @@ public void propertyChange(PropertyChangeEvent event) {
@Override
public void widgetSelected(SelectionEvent e) {
- settings.setBorderWidth(borderWidth.getSelectionIndex());
+ theme.setBorderWidth(borderWidth.getSelectionIndex());
}
});
@@ -295,7 +292,7 @@ public void widgetSelected(SelectionEvent e) {
bordertDrawLine.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
- settings.setBorderDrawLine(bordertDrawLine.getSelection());
+ theme.setBorderDrawLine(bordertDrawLine.getSelection());
}
});
@@ -318,7 +315,7 @@ public void widgetSelected(SelectionEvent e) {
highlightLineStyle = newCombo(c3, new String[]{"Solid","Dot","Dash","DashDot", "DashDotDot"}, new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
- settings.setHighlightLineStyle(highlightLineStyle.getSelectionIndex());
+ theme.setHighlightLineStyle(highlightLineStyle.getSelectionIndex());
}
});
highlightLineStyle.select(0);
@@ -336,7 +333,7 @@ public void widgetSelected(SelectionEvent e) {
@Override
public void widgetSelected(SelectionEvent e) {
int idx = highlightColorType.getSelectionIndex();
- settings.setHighlightColorType(idx);
+ theme.setHighlightColorType(idx);
highlightColorSelector.getButton().setEnabled(idx == 0);
}
});
@@ -345,7 +342,7 @@ public void widgetSelected(SelectionEvent e) {
highlightColorSelector = new ColorSelector(c);
highlightColorSelector.addListener(new IPropertyChangeListener() {
public void propertyChange(PropertyChangeEvent event) {
- settings.setHighlightRGB(highlightColorSelector.getColorValue());
+ theme.setHighlightRGB(highlightColorSelector.getColorValue());
}
});
@@ -355,7 +352,7 @@ public void propertyChange(PropertyChangeEvent event) {
@Override
public void widgetSelected(SelectionEvent e) {
- settings.setHighlightWidth(highlightWidth.getSelectionIndex());
+ theme.setHighlightWidth(highlightWidth.getSelectionIndex());
}
});
@@ -364,7 +361,7 @@ public void widgetSelected(SelectionEvent e) {
highlightDrawLine.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
- settings.setHighlightDrawLine(highlightDrawLine.getSelection());
+ theme.setHighlightDrawLine(highlightDrawLine.getSelection());
}
});
@@ -374,10 +371,10 @@ public void widgetSelected(SelectionEvent e) {
@Override
public void widgetSelected(SelectionEvent e) {
- settings.setRoundBox(roundBox.getSelection());
+ theme.setRoundBox(roundBox.getSelection());
if (roundBox.getSelection()){
fillGradient.setSelection(false);
- settings.setFillGradient(false);
+ theme.setFillGradient(false);
}
}
});
@@ -387,7 +384,7 @@ public void widgetSelected(SelectionEvent e) {
highlightOne.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
- settings.setHighlightOne(highlightOne.getSelection());
+ theme.setHighlightOne(highlightOne.getSelection());
}
});
@@ -396,7 +393,7 @@ public void widgetSelected(SelectionEvent e) {
eolBox.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
- settings.setExpandBox(eolBox.getSelection());
+ theme.setExpandBox(eolBox.getSelection());
}
});
@@ -409,7 +406,7 @@ public void widgetSelected(SelectionEvent e) {
noBackground.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
- settings.setNoBackground(noBackground.getSelection());
+ theme.setNoBackground(noBackground.getSelection());
}
});
@@ -423,14 +420,14 @@ public void widgetSelected(SelectionEvent e) {
@Override
public void widgetSelected(SelectionEvent e) {
- settings.setFillSelected(fillSelected.getSelection());
+ theme.setFillSelected(fillSelected.getSelection());
}
});
fillSelectedColor = new ColorSelector(c);
fillSelectedColor.addListener(new IPropertyChangeListener() {
public void propertyChange(PropertyChangeEvent e) {
- settings.setFillSelectedRGB(fillSelectedColor.getColorValue());
+ theme.setFillSelectedRGB(fillSelectedColor.getColorValue());
}
});
fillSelectedColor.getButton().setLayoutData(new GridData(GridData.BEGINNING));
@@ -440,7 +437,7 @@ public void propertyChange(PropertyChangeEvent e) {
fillOnMove.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
- settings.setFillOnMove(fillOnMove.getSelection());
+ theme.setFillOnMove(fillOnMove.getSelection());
}
});
@@ -451,7 +448,7 @@ public void widgetSelected(SelectionEvent e) {
fillKey = newCombo(c, new String[]{"","Alt","Ctrl","Shift"}, new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
- settings.setFillKeyModifier(fillKey.getText());
+ theme.setFillKeyModifier(fillKey.getText());
}
});
@@ -461,10 +458,10 @@ public void widgetSelected(SelectionEvent e) {
@Override
public void widgetSelected(SelectionEvent e) {
- settings.setFillGradient(fillGradient.getSelection());
+ theme.setFillGradient(fillGradient.getSelection());
if (fillGradient.getSelection()) {
roundBox.setSelection(false);
- settings.setRoundBox(false);
+ theme.setRoundBox(false);
}
}
});
@@ -473,7 +470,7 @@ public void widgetSelected(SelectionEvent e) {
fillGradientColor.addListener(new IPropertyChangeListener() {
public void propertyChange(PropertyChangeEvent event) {
- settings.setFillGradientColorRGB(fillGradientColor.getColorValue());
+ theme.setFillGradientColorRGB(fillGradientColor.getColorValue());
}
});
@@ -497,7 +494,7 @@ public void propertyChange(PropertyChangeEvent event) {
public void widgetSelected(SelectionEvent e) {
int alpha = scale.getSelection() * 255/100;
spinner.setSelection(alpha);
- settings.setAlpha(alpha);
+ theme.setAlpha(alpha);
}
});
@@ -509,7 +506,7 @@ public void widgetSelected(SelectionEvent e) {
@Override
public void widgetSelected(SelectionEvent e) {
scale.setSelection(spinner.getSelection() * 100/255);
- settings.setAlpha(spinner.getSelection());
+ theme.setAlpha(spinner.getSelection());
}
});
@@ -522,8 +519,8 @@ public void widgetSelected(SelectionEvent e) {
new SelectionAdapter() { // EditBox helps to signal that there are too long strings
@Override
public void widgetSelected(SelectionEvent e) {
- settings.setColorsSize(levels.getSelectionIndex());
- st.setText(generateIndentText(settings.getColorsSize() +1));
+ theme.setColorsSize(levels.getSelectionIndex());
+ st.setText(generateIndentText(theme.getColorsSize() +1));
}
});
@@ -532,7 +529,7 @@ public void widgetSelected(SelectionEvent e) {
circulateColors.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
- settings.setCirculateLevelColors(circulateColors.getSelection());
+ theme.setCirculateLevelColors(circulateColors.getSelection());
}
});
@@ -550,7 +547,7 @@ public void widgetSelected(SelectionEvent e) {
@Override
public void widgetSelected(SelectionEvent e) {
- settings.setBuilder(builderCombo.getText());
+ theme.setBuilder(builderCombo.getText());
}
});
@@ -586,10 +583,10 @@ public void propertyChange(PropertyChangeEvent event) {
public void widgetSelected(SelectionEvent e) {
if (fromColorLab.getColorValue() == null || toColorLab.getColorValue()==null)
return;
- Color[] colors = settings.getColors();
+ Color[] colors = theme.getColors();
if (colors == null || colors.length < 2)
return;
- settings.setColorsRGB(rgbGradient(colors));
+ theme.setColorsRGB(rgbGradient(colors));
}
});
@@ -640,58 +637,67 @@ protected Label newLabel(Composite c, String msg) {
l.setBackground(new Color(null, bc.getRGB()));
return l;
}
+
+ // called from EditboxPreferencePage
+ public void loadSettingsForName(String name){
+ decorator.enableUpdates(false);
+ providerStore.load(name, theme);
+ updateContentFromTheme();
+ decorator.enableUpdates(true);
+ }
-
- protected void updateContents() {
- enabled.setSelection(settings.getEnabled());
- combo.setItems(store.getCatalog().toArray(new String[0]));
- if (settings.getName() != null) {
- int idx = combo.indexOf(settings.getName());
+ /** update content from settings */
+ protected void updateContentFromTheme() {
+ enabled.setSelection(theme.getEnabled()); // enable is applied from provider!
+
+ combo.setItems(providerStore.getCatalog().toArray(new String[0]));
+ if (theme.getName() != null) {
+ int idx = combo.indexOf(theme.getName());
if (idx > -1)
combo.select(idx);
- else combo.setText(settings.getName());
+ else combo.setText(theme.getName());
}
- if (settings.getBorderColor() != null)
- borderColorSelector.setColorValue(settings.getBorderColor().getRGB());
- borderWidth.select(settings.getBorderWidth());
- roundBox.setSelection(settings.getRoundBox());
- if (settings.getHighlightColor() != null)
- highlightColorSelector.setColorValue(settings.getHighlightColor().getRGB());
- highlightWidth.select(settings.getHighlightWidth());
- highlightOne.setSelection(settings.getHighlightOne());
- fillSelected.setSelection(settings.getFillSelected());
- if (settings.getFillSelectedColor() != null)
- fillSelectedColor.setColorValue(settings.getFillSelectedColor().getRGB());
+ if (theme.getBorderColor() != null)
+ borderColorSelector.setColorValue(theme.getBorderColor().getRGB());
+ borderWidth.select(theme.getBorderWidth());
+ roundBox.setSelection(theme.getRoundBox());
+ if (theme.getHighlightColor() != null)
+ highlightColorSelector.setColorValue(theme.getHighlightColor().getRGB());
+ highlightWidth.select(theme.getHighlightWidth());
+ highlightOne.setSelection(theme.getHighlightOne());
+ fillSelected.setSelection(theme.getFillSelected());
+ if (theme.getFillSelectedColor() != null)
+ fillSelectedColor.setColorValue(theme.getFillSelectedColor().getRGB());
builderCombo.setItems(provider.getBuilders().toArray(new String[0]));
int i = -1;
- if (settings.getBuilder() != null)
- i = builderCombo.indexOf(settings.getBuilder());
+ if (theme.getBuilder() != null)
+ i = builderCombo.indexOf(theme.getBuilder());
builderCombo.select(i == -1 ? 0 : i);
- st.setText(generateIndentText(settings.getColorsSize() +1));
+ st.setText(generateIndentText(theme.getColorsSize() +1));
updateFromToColors();
- bordertDrawLine.setSelection(settings.getBorderDrawLine());
- highlightDrawLine.setSelection(settings.getHighlightDrawLine());
- fillGradient.setSelection(settings.getFillGradient());
- if (settings.getFillGradientColor() != null)
- fillGradientColor.setColorValue(settings.getFillGradientColor().getRGB());
- fillOnMove.setSelection(settings.getFillOnMove());
- circulateColors.setSelection(settings.getCirculateLevelColors());
- levels.select(settings.getColorsSize());
- fillKey.setText(settings.getFillKeyModifier()==null?"":settings.getFillKeyModifier());
- borderColorType.select(settings.getBorderColorType());
- highlightColorType.select(settings.getHighlightColorType());
- highlightColorSelector.getButton().setEnabled(settings.getHighlightColorType() == 0);
- borderColorSelector.getButton().setEnabled(settings.getBorderColorType() == 0);
- borderLineStyle.select(settings.getBorderLineStyle());
- highlightLineStyle.select(settings.getHighlightLineStyle());
- noBackground.setSelection(settings.getNoBackground());
- eolBox.setSelection(settings.getExpandBox());
- spinner.setSelection(settings.getAlpha());
- scale.setSelection(settings.getAlpha() * 100/255);
+ bordertDrawLine.setSelection(theme.getBorderDrawLine());
+ highlightDrawLine.setSelection(theme.getHighlightDrawLine());
+ fillGradient.setSelection(theme.getFillGradient());
+ if (theme.getFillGradientColor() != null)
+ fillGradientColor.setColorValue(theme.getFillGradientColor().getRGB());
+ fillOnMove.setSelection(theme.getFillOnMove());
+ circulateColors.setSelection(theme.getCirculateLevelColors());
+ levels.select(theme.getColorsSize());
+ fillKey.setText(theme.getFillKeyModifier()==null?"":theme.getFillKeyModifier());
+ borderColorType.select(theme.getBorderColorType());
+ highlightColorType.select(theme.getHighlightColorType());
+ highlightColorSelector.getButton().setEnabled(theme.getHighlightColorType() == 0);
+ borderColorSelector.getButton().setEnabled(theme.getBorderColorType() == 0);
+ borderLineStyle.select(theme.getBorderLineStyle());
+ highlightLineStyle.select(theme.getHighlightLineStyle());
+ noBackground.setSelection(theme.getNoBackground());
+ eolBox.setSelection(theme.getExpandBox());
+ spinner.setSelection(theme.getAlpha());
+ scale.setSelection(theme.getAlpha() * 100/255);
}
private void updateFromToColors() {
- Color[] c = settings.getColors();
+ Color[] c = theme.getColors();
if (c != null && c.length > 1) {
updateBackground(fromColorLab, c[0]);
updateBackground(toColorLab, c[c.length - 1]);
@@ -712,8 +718,8 @@ protected void disposeColor(Color oldColor) {
}
public void dispose() {
- if (settings != null)
- settings.dispose();
+ if (theme != null)
+ theme.dispose();
}
private RGB[] rgbGradient(Color[] c) {
@@ -733,7 +739,7 @@ private RGB[] rgbGradient(Color[] c) {
return gradient;
}
- String generateIndentText(int n){
+ private String generateIndentText(int n){
StringBuilder sb = new StringBuilder();
for (int i = 0;i> categoryFiles;
private List namesList;
private Button bAddFile;
private boolean providersChanged;
+ private IPreferenceStore store = EditBox.getDefault().getPreferenceStore();
+ private BoxProviderRegistry providerRegistry = EditBox.getDefault().getProviderRegistry();
+
+ public EditboxPreferencePage(){
+ super("EditBox (Nodeclipse)", EditBox.getImageDescriptor("icons/editbox.png"));
+ }
+
+ @Override
+ public void init(IWorkbench workbench) {
+ }
@Override
protected Control createContents(Composite parent) {
@@ -52,6 +69,31 @@ protected Control createContents(Composite parent) {
Composite c = new Composite(parent, SWT.NONE);
c.setLayout(new GridLayout(1, false));
+
+ //+ {
+ pluginEnabled = new Button(c, SWT.CHECK);
+ GridData gd = new GridData();
+ pluginEnabled.setLayoutData(gd);
+ pluginEnabled.setText("Plugin enabled");
+ pluginEnabled.setAlignment(SWT.RIGHT);
+ pluginEnabled.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ Boolean isEnabled = pluginEnabled.getSelection();
+ //store.setValue(EditBox.PREF_ENABLED, isEnabled ); // no need
+ // decorators are updated when state is toggled within Command Handler
+ EnableEditBox toggleHandler = new EnableEditBox();
+ try {
+ toggleHandler.execute(null);
+ } catch (ExecutionException ex) {
+ EditBox.logError(this, ex.getLocalizedMessage(), ex);
+ }
+ // toolbar item
+ EditBox.toggleToolBarItemInAllWindows(isEnabled);
+ }
+ });
+ pluginEnabled.setSelection(store.getBoolean(EditBox.PREF_ENABLED));
+ //}
+
Link link = new Link(c, SWT.NONE);
link.setText("Configure print margin and current line highlighting here.");
FontData[] fontData = link.getFont().getFontData();
@@ -62,23 +104,47 @@ protected Control createContents(Composite parent) {
link.setFont(new Font(getShell().getDisplay(), fontData));
link.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
- IWorkbenchPreferenceContainer container= (IWorkbenchPreferenceContainer)getContainer();
+ IWorkbenchPreferenceContainer container= (IWorkbenchPreferenceContainer) getContainer();
container.openPage("org.eclipse.ui.preferencePages.GeneralTextEditor", null);
}
});
- folder = new TabFolder(c, SWT.NONE);
- folder.setLayoutData(new GridData(GridData.FILL_BOTH));
- TabItem ti = new TabItem(folder, SWT.NONE);
+ tabFolder = new TabFolder(c, SWT.NONE);
+ tabFolder.setLayoutData(new GridData(GridData.FILL_BOTH));
+ TabItem ti = new TabItem(tabFolder, SWT.NONE);
ti.setText("Categories");
- ti.setControl(createCategoryControl(folder));
- folder.pack();
+ ti.setControl(createCategoryControl(tabFolder));
+ tabFolder.pack();
return c;
}
-
+
protected Control createCategoryControl(Composite parent) {
Composite c = new Composite(parent, SWT.NONE);
c.setLayout(new GridLayout(2, true));
+
+ //+ apply theme globally {
+ Label comboLabel = new Label(c, SWT.NONE);
+ comboLabel.setText("Select one of bundled themes to apply to all categories (you can refine on respective Tab)");
+
+ themeCombo = new Combo(c, SWT.DROP_DOWN | SWT.READ_ONLY );
+ GridData gd = new GridData(GridData.BEGINNING);
+ gd.widthHint = 150;
+ gd.horizontalSpan = 2;
+ gd.horizontalAlignment = SWT.LEFT;
+ themeCombo.setLayoutData(gd);
+ themeCombo.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ String s = themeCombo.getText();
+ if (s != null && s.length() > 0) {
+ store.setValue(EditBox.PREF_DEFAULT_THEME, s);
+ updateAllTabsWithSelectedTheme(s);
+ }
+ }
+ });
+ themeCombo.setItems(BoxProviderRegistry.ALL_THEMES_ARRAY);
+ String preferedThemeName = store.getString(EditBox.PREF_DEFAULT_THEME);
+ themeCombo.select( BoxProviderRegistry.getThemeIndex(preferedThemeName) );
+ //}
Label categoryLabel = new Label(c, SWT.NONE);
categoryLabel.setText("Categories");
@@ -117,45 +183,45 @@ protected Control createCategoryControl(Composite parent) {
bRemoveFile.setLayoutData(new GridData(GridData.FILL_BOTH));
bRemoveFile.addSelectionListener(new RemoveFile());
- loadData();
+ loadDataFromProviderRegistryAndCreateTabs();
return c;
+ }
+
+ private void updateAllTabsWithSelectedTheme(String theme) {
+ //IBoxProvider provider = EditBox.getDefault().getProviderRegistry().providerForName(theme);
+ TabItem[] tabItemas = tabFolder.getItems();
+ for (TabItem item: tabItemas){
+ BoxSettingsTab bst = (BoxSettingsTab) item.getData();
+ if (bst == null){
+ continue;
+ }
+ //bst.setProvider(provider);
+ bst.loadSettingsForName(theme);
+ }
}
- protected void loadData() {
- Collection boxProviders = EditBox.getDefault().getProviderRegistry().getBoxProviders();
- for (IBoxProvider provider : boxProviders)
+ protected void loadDataFromProviderRegistryAndCreateTabs() {
+ Collection boxProviders = providerRegistry.getBoxProviders();
+ for (IBoxProvider provider : boxProviders){
newTab(provider.getName());
+ }
}
- public void init(IWorkbench workbench) {
- }
-
- protected boolean contains(String[] items, String newText) {
- if (items == null || items.length == 0)
- return false;
- for (String s : items)
- if (s.equalsIgnoreCase(newText))
- return true;
- return false;
- }
-
- protected void newTab(String value) {
- categoryList.add(value);
- TabItem item = new TabItem(folder, SWT.NONE);
- item.setText(value);
- BoxSettingsTab p = new BoxSettingsTab();
- IBoxProvider provider = EditBox.getDefault().getProviderRegistry().providerForName(value);
- //: see BoxProviderRegistry
- item.setControl(p.createContro(folder, provider));
- item.setData(p);
+ protected void newTab(String providerName) {
+ categoryList.add(providerName);
+ TabItem item = new TabItem(tabFolder, SWT.NONE);
+ item.setText(providerName);
+ BoxSettingsTab bst = new BoxSettingsTab();
+ IBoxProvider provider = providerRegistry.providerForName(providerName);
+ item.setControl(bst.createControlsWithContent(tabFolder, provider));
+ item.setData(bst);
if (categoryFiles == null)
categoryFiles = new LinkedHashMap>();
- Collection fileNames = p.getSettings().getFileNames();
+ Collection fileNames = bst.getSettings().getFileNames(); //XXX should be from Provider
if (fileNames == null)
fileNames = Collections.emptyList();
- categoryFiles.put(value, new LinkedHashSet(fileNames));
- categoryList.setSelection(new String[] { value });
+ categoryFiles.put(providerName, new LinkedHashSet(fileNames));
namesList.setItems(fileNames.toArray(new String[0]));
bAddFile.setEnabled(true);
}
@@ -174,7 +240,7 @@ public void addFileName(String value) {
LinkedHashSet fileNames = categoryFiles.get(categoryName);
fileNames.add(value);
namesList.add(value);
- Object o = folder.getItem(i + 1).getData();
+ Object o = tabFolder.getItem(i + 1).getData();
if (o instanceof BoxSettingsTab)
((BoxSettingsTab) o).getSettings().setFileNames(fileNames);
}
@@ -182,28 +248,30 @@ public void addFileName(String value) {
@Override
public boolean performOk() {
- TabItem[] items = folder.getItems();
+
+ TabItem[] items = tabFolder.getItems();
for (int i=1;i fNames = categoryFiles.get(key);
fNames.remove(value);
namesList.remove(i);
- Object o = folder.getItem(n+1).getData();
+ Object o = tabFolder.getItem(n+1).getData();
if (o instanceof BoxSettingsTab)
((BoxSettingsTab) o).getSettings().setFileNames(new ArrayList(fNames));
}
diff --git a/pom.xml b/pom.xml
index 680bee8..349a34d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
pm.eclipse.editbox
pm.eclipse.editbox.parent
- 0.60.0-SNAPSHOT
+ 1.0.0-SNAPSHOT
pom
EditBox (parent)
@@ -25,7 +25,7 @@
Paul Verest
Nodeclipse organization
- http://www.nodeclipse.org/
+ https://nodeclipse.github.io/
+8
@@ -35,7 +35,7 @@
- 0.19.0
+ 1.1.0
UTF-8