The preference page which configures editor colors.
git-svn-id: https://svn.apache.org/repos/asf/incubator/click/trunk/tools/eclipse@715798 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/net.sf.clickide/plugin.properties b/net.sf.clickide/plugin.properties
index 2b37c50..050f1ca 100644
--- a/net.sf.clickide/plugin.properties
+++ b/net.sf.clickide/plugin.properties
@@ -7,7 +7,8 @@
contentType.clickXML=Click Configuration File
contentType.template=Click Page Template
validator.clickXML=Click Configuration Validator
-preference.template=Template
+preference.wizardTemplate=Wizard Template
+preference.templateEditor=Template Editor
action.newClickPage=New Click Page
action.switchToHTML=Switch to HTML
action.switchToClass=Switch to Class
diff --git a/net.sf.clickide/plugin.xml b/net.sf.clickide/plugin.xml
index 15a6f03..bcce7c9 100644
--- a/net.sf.clickide/plugin.xml
+++ b/net.sf.clickide/plugin.xml
@@ -168,8 +168,13 @@
<page
class="net.sf.clickide.preferences.ClickTemplatePreferencePage"
id="net.sf.clickide.preferences.ClickTemplatePreferencePage"
- name="%preference.template"
+ name="%preference.wizardTemplate"
category="net.sf.clickide.preferences.ClickPreferencePage"/>
+ <page
+ category="net.sf.clickide.preferences.ClickPreferencePage"
+ class="net.sf.clickide.preferences.TemplateEditorPreferencePage"
+ id="net.sf.clickide.preferences.TemplateEditorPreferencePage"
+ name="%preference.templateEditor"/>
</extension>
<extension
point="org.eclipse.core.runtime.preferences">
diff --git a/net.sf.clickide/plugin_ja.properties b/net.sf.clickide/plugin_ja.properties
index 5c44606..788ec22 100644
--- a/net.sf.clickide/plugin_ja.properties
+++ b/net.sf.clickide/plugin_ja.properties
@@ -7,7 +7,8 @@
contentType.clickXML=Click\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb
contentType.template=Click\u30da\u30fc\u30b8\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8
validator.clickXML=Click\u8a2d\u5b9a\u30d0\u30ea\u30c7\u30fc\u30bf
-preference.template=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8
+preference.wizardTemplate=\u30a6\u30a3\u30b6\u30fc\u30c9\u30fb\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8
+preference.templateEditor=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30fb\u30a8\u30c7\u30a3\u30bf
action.newClickPage=\u65b0\u898fClick\u30da\u30fc\u30b8\u306e\u4f5c\u6210
action.switchToHTML=HTML\u30d5\u30a1\u30a4\u30eb\u306b\u5207\u308a\u66ff\u3048
action.switchToClass=\u30da\u30fc\u30b8\u30af\u30e9\u30b9\u306b\u5207\u308a\u66ff\u3048
\ No newline at end of file
diff --git a/net.sf.clickide/src/net/sf/clickide/ClickPlugin.java b/net.sf.clickide/src/net/sf/clickide/ClickPlugin.java
index 284126d..5fda51b 100644
--- a/net.sf.clickide/src/net/sf/clickide/ClickPlugin.java
+++ b/net.sf.clickide/src/net/sf/clickide/ClickPlugin.java
@@ -21,6 +21,7 @@
//The shared instance.
private static ClickPlugin plugin;
private ResourceBundle resource;
+ private ColorManager colorManager;
public static final String CLICK_PAGE_CLASS = "net.sf.click.Page";
public static final String CLICK_CONTROL_IF = "net.sf.click.Control";
@@ -53,6 +54,9 @@
public static final String[] HEADER_TYPE_VALUES = {"String", "Integer", "Date"};
public static final String PREF_TEMPLATES = "click.templates";
+ public static final String PREF_COLOR_VAR = "click.color.variable";
+ public static final String PREF_COLOR_DIR = "click.color.directive";
+ public static final String PREF_COLOR_CMT = "click.color.comment";
/**
* The constructor.
@@ -62,6 +66,13 @@
resource = ResourceBundle.getBundle("net.sf.clickide.ClickPlugin");
}
+ public ColorManager getColorManager(){
+ if(this.colorManager==null){
+ this.colorManager = new ColorManager();
+ }
+ return this.colorManager;
+ }
+
/**
* Returns the localized message from <tt>ClickPlugin.properties</tt>.
*
@@ -96,6 +107,7 @@
*/
public void stop(BundleContext context) throws Exception {
super.stop(context);
+ colorManager.dispose();
plugin = null;
}
diff --git a/net.sf.clickide/src/net/sf/clickide/ClickPlugin.properties b/net.sf.clickide/src/net/sf/clickide/ClickPlugin.properties
index 44d2bba..174ea0f 100644
--- a/net.sf.clickide/src/net/sf/clickide/ClickPlugin.properties
+++ b/net.sf.clickide/src/net/sf/clickide/ClickPlugin.properties
@@ -69,8 +69,12 @@
wizard.newPage.dialog.selectSourceFolder=Select Source Folder
# for preference pages
-preferences.template=Template
+preferences.template=Wizard Template
preferences.template.name=Name
preferences.template.pageClass=Page Class
preferences.template.htmlTemplate=HTML Template
preferences.template.dialog.variables=following valiables are available:
+preferences.templateEditor=Template Editor
+preferences.templateEditor.colorVariable=&Variable:
+preferences.templateEditor.colorDirective=&Directive:
+preferences.templateEditor.colorComment=&Comment:
diff --git a/net.sf.clickide/src/net/sf/clickide/ClickPlugin_ja.properties b/net.sf.clickide/src/net/sf/clickide/ClickPlugin_ja.properties
index c084f81..dc3379b 100644
--- a/net.sf.clickide/src/net/sf/clickide/ClickPlugin_ja.properties
+++ b/net.sf.clickide/src/net/sf/clickide/ClickPlugin_ja.properties
@@ -69,8 +69,12 @@
wizard.newPage.dialog.selectSourceFolder=\u30bd\u30fc\u30b9\u30d5\u30a9\u30eb\u30c0\u306e\u9078\u629e
# for preference pages
-preferences.template=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8
+preferences.template=\u30a6\u30a3\u30b6\u30fc\u30c9\u30fb\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8
preferences.template.name=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u540d
preferences.template.pageClass=\u30da\u30fc\u30b8\u30af\u30e9\u30b9
preferences.template.htmlTemplate=HTML\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8
preferences.template.dialog.variables=\u4ee5\u4e0b\u306e\u5909\u6570\u304c\u5229\u7528\u53ef\u80fd\u3067\u3059:
+preferences.templateEditor=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30fb\u30a8\u30c7\u30a3\u30bf
+preferences.templateEditor.colorVariable=\u5909\u6570(&V):
+preferences.templateEditor.colorDirective=\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6(&D):
+preferences.templateEditor.colorComment=\u30b3\u30e1\u30f3\u30c8(&C):
diff --git a/net.sf.clickide/src/net/sf/clickide/ColorManager.java b/net.sf.clickide/src/net/sf/clickide/ColorManager.java
new file mode 100644
index 0000000..bf82487
--- /dev/null
+++ b/net.sf.clickide/src/net/sf/clickide/ColorManager.java
@@ -0,0 +1,71 @@
+package net.sf.clickide;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.resource.StringConverter;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * Manages SWT's <code>Color</code> objects which are configued by the preference page.
+ *
+ * @author Naoki Takezoe
+ */
+public class ColorManager {
+
+ private IPreferenceStore store;
+ private Map colors = new HashMap();
+
+ private IPropertyChangeListener listener = new IPropertyChangeListener(){
+ public void propertyChange(PropertyChangeEvent event) {
+ updateColors();
+ }
+ };
+
+ public ColorManager(){
+ store = ClickPlugin.getDefault().getPreferenceStore();
+ store.addPropertyChangeListener(listener);
+ updateColors();
+ }
+
+ /**
+ * Returns the cached <code>Color<code> object.
+ *
+ * @param key the preference key defined as the static variable in <code>ClickPlugin</code>
+ * @return the <code>Color</code> object
+ */
+ public Color get(String key){
+ return (Color)colors.get(key);
+ }
+
+ private void updateColors(){
+ colors.put(ClickPlugin.PREF_COLOR_VAR, new Color(Display.getDefault(),
+ StringConverter.asRGB(store.getString(ClickPlugin.PREF_COLOR_VAR))));
+ colors.put(ClickPlugin.PREF_COLOR_DIR, new Color(Display.getDefault(),
+ StringConverter.asRGB(store.getString(ClickPlugin.PREF_COLOR_DIR))));
+ colors.put(ClickPlugin.PREF_COLOR_CMT, new Color(Display.getDefault(),
+ StringConverter.asRGB(store.getString(ClickPlugin.PREF_COLOR_CMT))));
+ }
+
+ private void disposeColors(){
+ for(Iterator i = colors.values().iterator(); i.hasNext();){
+ Color color = (Color)i.next();
+ color.dispose();
+ }
+ colors.clear();
+ }
+
+ /**
+ * Disposes all <code>Color</code> objects.
+ */
+ public void dispose(){
+ disposeColors();
+ store.removePropertyChangeListener(listener);
+ }
+
+}
diff --git a/net.sf.clickide/src/net/sf/clickide/preferences/ClickPreferenceInitializer.java b/net.sf.clickide/src/net/sf/clickide/preferences/ClickPreferenceInitializer.java
index 1da70e1..0193188 100644
--- a/net.sf.clickide/src/net/sf/clickide/preferences/ClickPreferenceInitializer.java
+++ b/net.sf.clickide/src/net/sf/clickide/preferences/ClickPreferenceInitializer.java
@@ -7,6 +7,8 @@
import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.resource.StringConverter;
+import org.eclipse.swt.graphics.RGB;
/**
* Initializes the preference store.
@@ -19,6 +21,9 @@
IPreferenceStore store = ClickPlugin.getDefault().getPreferenceStore();
try {
store.setDefault(ClickPlugin.PREF_TEMPLATES, getResourceAsText("default_templates.xml"));
+ store.setDefault(ClickPlugin.PREF_COLOR_VAR, StringConverter.asString(new RGB(128,0,0)));
+ store.setDefault(ClickPlugin.PREF_COLOR_DIR, StringConverter.asString(new RGB(0,0,128)));
+ store.setDefault(ClickPlugin.PREF_COLOR_CMT, StringConverter.asString(new RGB(0,128,0)));
} catch(Exception ex){
ClickPlugin.log(ex);
}
diff --git a/net.sf.clickide/src/net/sf/clickide/preferences/TemplateEditorPreferencePage.java b/net.sf.clickide/src/net/sf/clickide/preferences/TemplateEditorPreferencePage.java
new file mode 100644
index 0000000..d0d5497
--- /dev/null
+++ b/net.sf.clickide/src/net/sf/clickide/preferences/TemplateEditorPreferencePage.java
@@ -0,0 +1,41 @@
+package net.sf.clickide.preferences;
+
+import net.sf.clickide.ClickPlugin;
+
+import org.eclipse.jface.preference.ColorFieldEditor;
+import org.eclipse.jface.preference.FieldEditorPreferencePage;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+public class TemplateEditorPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
+
+ public TemplateEditorPreferencePage(){
+ super(GRID);
+ setPreferenceStore(ClickPlugin.getDefault().getPreferenceStore());
+ }
+
+ protected void createFieldEditors() {
+ setTitle(ClickPlugin.getString("preferences.templateEditor"));
+ Composite parent = getFieldEditorParent();
+
+ ColorFieldEditor variable = new ColorFieldEditor(
+ ClickPlugin.PREF_COLOR_VAR,
+ ClickPlugin.getString("preferences.templateEditor.colorVariable"), parent);
+ addField(variable);
+
+ ColorFieldEditor directive = new ColorFieldEditor(
+ ClickPlugin.PREF_COLOR_DIR,
+ ClickPlugin.getString("preferences.templateEditor.colorDirective"), parent);
+ addField(directive);
+
+ ColorFieldEditor comment = new ColorFieldEditor(
+ ClickPlugin.PREF_COLOR_CMT,
+ ClickPlugin.getString("preferences.templateEditor.colorComment"), parent);
+ addField(comment);
+ }
+
+ public void init(IWorkbench workbench) {
+ }
+
+}
diff --git a/net.sf.clickide/src/net/sf/clickide/ui/editor/LineStyleProviderForVelocity.java b/net.sf.clickide/src/net/sf/clickide/ui/editor/LineStyleProviderForVelocity.java
index 0ceb36f..609aea6 100644
--- a/net.sf.clickide/src/net/sf/clickide/ui/editor/LineStyleProviderForVelocity.java
+++ b/net.sf.clickide/src/net/sf/clickide/ui/editor/LineStyleProviderForVelocity.java
@@ -4,11 +4,11 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import net.sf.clickide.ClickPlugin;
+
import org.eclipse.jface.text.ITypedRegion;
-import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyleRange;
import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.widgets.Display;
import org.eclipse.wst.html.ui.internal.style.LineStyleProviderForHTML;
import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
@@ -32,9 +32,9 @@
public boolean prepareRegions(ITypedRegion currentRegion, int start, int length, Collection styleRanges) {
boolean result = super.prepareRegions(currentRegion, start, length, styleRanges);
- Color var = Display.getDefault().getSystemColor(SWT.COLOR_DARK_RED);
- Color dir = Display.getDefault().getSystemColor(SWT.COLOR_DARK_BLUE);
- Color comment = Display.getDefault().getSystemColor(SWT.COLOR_DARK_GREEN);
+ Color colorVariable = ClickPlugin.getDefault().getColorManager().get(ClickPlugin.PREF_COLOR_VAR);
+ Color colorDirective = ClickPlugin.getDefault().getColorManager().get(ClickPlugin.PREF_COLOR_DIR);
+ Color colorComment = ClickPlugin.getDefault().getColorManager().get(ClickPlugin.PREF_COLOR_CMT);
Object sr[] = styleRanges.toArray();
for(int i = 0; i < sr.length; i++)
@@ -60,12 +60,12 @@
text = (new StringBuilder(String.valueOf(text))).append(chkRegion.getText()).toString();
}
- Pattern p = Pattern.compile("#.*|\\$((\\{.*?\\})|([a-zA-Z0-9\\-_]*))");
+ Pattern p = Pattern.compile("##.*|#[a-z]+|\\$((\\{.*?\\})|([a-zA-Z0-9\\-_]*))");
Matcher m = p.matcher(text);
int pos = 0;
while(m.find()) {
- Color color = m.group().startsWith("##") ? comment :
- m.group().startsWith("#") ? dir : var;
+ Color color = m.group().startsWith("##") ? colorComment :
+ m.group().startsWith("#") ? colorDirective : colorVariable;
if(m.start() < mStart){
if(m.end() < mStart){