1 package net.sourceforge.phpeclipse;
3 import java.util.HashMap;
4 import java.util.Iterator;
7 import net.sourceforge.phpeclipse.preferences.ColorEditor;
8 import net.sourceforge.phpeclipse.preferences.OverlayPreferenceStore;
9 import net.sourceforge.phpeclipse.preferences.PHPPreferencesMessages;
11 import org.eclipse.core.runtime.IStatus;
12 import org.eclipse.jface.preference.FileFieldEditor;
13 import org.eclipse.jface.preference.IPreferenceStore;
14 import org.eclipse.jface.preference.PreferenceConverter;
15 import org.eclipse.jface.preference.PreferencePage;
16 import org.eclipse.jface.text.source.ISourceViewer;
17 import org.eclipse.swt.SWT;
18 import org.eclipse.swt.custom.StyledText;
19 import org.eclipse.swt.events.SelectionEvent;
20 import org.eclipse.swt.events.SelectionListener;
21 import org.eclipse.swt.graphics.Color;
22 import org.eclipse.swt.graphics.RGB;
23 import org.eclipse.swt.layout.GridData;
24 import org.eclipse.swt.layout.GridLayout;
25 import org.eclipse.swt.widgets.Button;
26 import org.eclipse.swt.widgets.Composite;
27 import org.eclipse.swt.widgets.Control;
28 import org.eclipse.swt.widgets.Display;
29 import org.eclipse.swt.widgets.Group;
30 import org.eclipse.swt.widgets.Label;
31 import org.eclipse.swt.widgets.List;
32 import org.eclipse.ui.IWorkbench;
33 import org.eclipse.ui.IWorkbenchPreferencePage;
36 * The preference page for setting the PHP Editor options.
38 public class PHPSyntaxEditorPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
40 public final OverlayPreferenceStore.OverlayKey[] Keys =
41 new OverlayPreferenceStore.OverlayKey[] {
42 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, IPreferenceConstants.PHP_MULTILINE_COMMENT),
43 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHP_MULTILINE_COMMENT_BOLD),
44 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHP_MULTILINE_COMMENT_ITALIC),
45 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHP_MULTILINE_COMMENT_UNDERLINE),
46 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, IPreferenceConstants.PHP_SINGLELINE_COMMENT),
47 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHP_SINGLELINE_COMMENT_BOLD),
48 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHP_SINGLELINE_COMMENT_ITALIC),
49 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHP_SINGLELINE_COMMENT_UNDERLINE),
50 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, IPreferenceConstants.PHP_KEYWORD),
51 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHP_KEYWORD_BOLD),
52 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHP_KEYWORD_ITALIC),
53 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHP_KEYWORD_UNDERLINE),
54 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, IPreferenceConstants.PHP_VARIABLE),
55 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHP_VARIABLE_BOLD),
56 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHP_VARIABLE_ITALIC),
57 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHP_VARIABLE_UNDERLINE),
58 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, IPreferenceConstants.PHP_TYPE),
59 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHP_TYPE_BOLD),
60 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHP_TYPE_ITALIC),
61 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHP_TYPE_UNDERLINE),
62 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, IPreferenceConstants.PHP_CONSTANT),
63 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHP_CONSTANT_BOLD),
64 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHP_CONSTANT_ITALIC),
65 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHP_CONSTANT_UNDERLINE),
66 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, IPreferenceConstants.PHP_FUNCTIONNAME),
67 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHP_FUNCTIONNAME_BOLD),
68 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHP_FUNCTIONNAME_ITALIC),
69 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHP_FUNCTIONNAME_UNDERLINE),
70 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, IPreferenceConstants.PHP_STRING),
71 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHP_STRING_BOLD),
72 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHP_STRING_ITALIC),
73 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHP_STRING_UNDERLINE),
74 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, IPreferenceConstants.PHP_DEFAULT),
75 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHP_DEFAULT_BOLD),
76 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHP_DEFAULT_ITALIC),
77 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHP_DEFAULT_UNDERLINE),
79 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, IPreferenceConstants.PHPDOC_KEYWORD),
80 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHPDOC_KEYWORD_BOLD),
81 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHPDOC_KEYWORD_ITALIC),
82 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHPDOC_KEYWORD_UNDERLINE),
83 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, IPreferenceConstants.PHPDOC_TAG),
84 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHPDOC_TAG_BOLD),
85 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHPDOC_TAG_ITALIC),
86 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHPDOC_TAG_UNDERLINE),
87 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, IPreferenceConstants.PHPDOC_LINK),
88 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHPDOC_LINK_BOLD),
89 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHPDOC_LINK_ITALIC),
90 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHPDOC_LINK_UNDERLINE),
91 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, IPreferenceConstants.PHPDOC_DEFAULT),
92 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHPDOC_DEFAULT_BOLD),
93 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHPDOC_DEFAULT_ITALIC),
94 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IPreferenceConstants.PHPDOC_DEFAULT_UNDERLINE),
96 new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, IPreferenceConstants.PHP_USERDEF_XMLFILE),
97 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, IPreferenceConstants.PHP_EDITOR_BACKGROUND)
100 private final String[][] SyntaxColorListModel =
103 PHPPreferencesMessages.getString("PHPEditorSyntaxPreferencePage.multiLineComment"),
104 IPreferenceConstants.PHP_MULTILINE_COMMENT },
106 PHPPreferencesMessages.getString("PHPEditorSyntaxPreferencePage.singleLineComment"),
107 IPreferenceConstants.PHP_SINGLELINE_COMMENT },
109 PHPPreferencesMessages.getString("PHPEditorSyntaxPreferencePage.keywords"), IPreferenceConstants.PHP_KEYWORD }, {
110 PHPPreferencesMessages.getString("PHPEditorSyntaxPreferencePage.variables"), IPreferenceConstants.PHP_VARIABLE }, {
111 PHPPreferencesMessages.getString("PHPEditorSyntaxPreferencePage.types"), IPreferenceConstants.PHP_TYPE }, {
112 PHPPreferencesMessages.getString("PHPEditorSyntaxPreferencePage.constants"), IPreferenceConstants.PHP_CONSTANT }, {
113 PHPPreferencesMessages.getString("PHPEditorSyntaxPreferencePage.functions"), IPreferenceConstants.PHP_FUNCTIONNAME }, {
114 PHPPreferencesMessages.getString("PHPEditorSyntaxPreferencePage.strings"), IPreferenceConstants.PHP_STRING }, {
115 PHPPreferencesMessages.getString("PHPEditorSyntaxPreferencePage.others"), IPreferenceConstants.PHP_DEFAULT }, {
116 PHPPreferencesMessages.getString("PHPEditorSyntaxPreferencePage.phpdoc_keywords"), IPreferenceConstants.PHPDOC_KEYWORD }, {
117 PHPPreferencesMessages.getString("PHPEditorSyntaxPreferencePage.phpdoc_tags"), IPreferenceConstants.PHPDOC_TAG }, {
118 PHPPreferencesMessages.getString("PHPEditorSyntaxPreferencePage.phpdoc_links"), IPreferenceConstants.PHPDOC_LINK }, {
119 PHPPreferencesMessages.getString("PHPEditorSyntaxPreferencePage.phpdoc_others"), IPreferenceConstants.PHPDOC_DEFAULT }
122 private OverlayPreferenceStore OverlayStore;
124 private Map ColorButtons = new HashMap();
125 private SelectionListener ColorButtonListener = new SelectionListener() {
126 public void widgetDefaultSelected(SelectionEvent e) {
128 public void widgetSelected(SelectionEvent e) {
129 ColorEditor editor = (ColorEditor) e.widget.getData();
130 PreferenceConverter.setValue(OverlayStore, (String) ColorButtons.get(editor), editor.getColorValue());
134 private Map CheckBoxes = new HashMap();
135 private SelectionListener CheckBoxListener = new SelectionListener() {
136 public void widgetDefaultSelected(SelectionEvent e) {
138 public void widgetSelected(SelectionEvent e) {
139 Button button = (Button) e.widget;
140 OverlayStore.setValue((String) CheckBoxes.get(button), button.getSelection());
144 private List SyntaxColorList;
145 /** The ColorEditor that choose the foreground color. */
146 private ColorEditor SyntaxForegroundColorEditor;
147 private Button BoldCheckBox;
148 private Button ItalicCheckBox;
149 private Button UnderlineCheckBox;
150 private FileFieldEditor userdefPHPSyntaxFileFFE;
151 // private BooleanFieldEditor showLineNumber;
152 // private IntegerFieldEditor formatterTabSize;
153 // private BooleanFieldEditor spacesForTabs;
155 public PHPSyntaxEditorPreferencePage() {
156 setDescription(PHPPreferencesMessages.getString("PHPEditorSyntaxPreferencePage.description")); //$NON-NLS-1$
157 setPreferenceStore(PHPeclipsePlugin.getDefault().getPreferenceStore());
158 OverlayStore = new OverlayPreferenceStore(getPreferenceStore(), Keys);
161 public void init(IWorkbench workbench) {
164 public void createControl(Composite parent) {
165 super.createControl(parent);
168 private void handleSyntaxColorListSelection() {
169 int i = SyntaxColorList.getSelectionIndex();
170 String key = SyntaxColorListModel[i][1];
171 RGB rgb = PreferenceConverter.getColor(OverlayStore, key);
172 SyntaxForegroundColorEditor.setColorValue(rgb);
173 BoldCheckBox.setSelection(OverlayStore.getBoolean(key + "_bold"));
174 ItalicCheckBox.setSelection(OverlayStore.getBoolean(key + "_italic"));
175 UnderlineCheckBox.setSelection(OverlayStore.getBoolean(key + "_underline"));
179 * Create the group of options for other parameters (background color for example).
180 * @param parent the parent component
182 private void backgroundOptionPage(Composite parent) {
183 Label label = new Label(parent, SWT.LEFT);
184 label.setText(PHPPreferencesMessages.getString("PHPEditorSyntaxPreferencePage.color")); //$NON-NLS-1$
185 GridData gd = new GridData();
186 gd.horizontalAlignment = GridData.BEGINNING;
187 label.setLayoutData(gd);
188 // final ColorEditor syntaxBackgroundColorEditor = new ColorEditor(parent);
189 // RGB rgb = PreferenceConverter.getColor(OverlayStore, IPreferenceConstants.PHP_EDITOR_BACKGROUND);
190 // syntaxBackgroundColorEditor.setColorValue(rgb);
191 // Button backgroundColorButton = syntaxBackgroundColorEditor.getButton();
192 // gd = new GridData(GridData.FILL_HORIZONTAL);
193 // gd.horizontalAlignment = GridData.BEGINNING;
194 // backgroundColorButton.setLayoutData(gd);
195 // backgroundColorButton.addSelectionListener(new SelectionListener() {
196 // public void widgetDefaultSelected(SelectionEvent e) {
199 // public void widgetSelected(SelectionEvent e) {
200 // PreferenceConverter.setValue(OverlayStore, IPreferenceConstants.PHP_EDITOR_BACKGROUND, syntaxBackgroundColorEditor.getColorValue());
206 * Create the group of options for the syntax parameters.
207 * @param parent the parent component
210 private Control createSyntaxPage(Composite parent) {
212 Composite colorComposite = new Composite(parent, SWT.NULL);
213 colorComposite.setLayout(new GridLayout());
215 Label label = new Label(colorComposite, SWT.LEFT);
216 label.setText(PHPPreferencesMessages.getString("PHPEditorSyntaxPreferencePage.syntax")); //$NON-NLS-1$
217 label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
219 Composite editorComposite = new Composite(colorComposite, SWT.NONE);
220 GridLayout layout = new GridLayout();
221 layout.numColumns = 2;
222 layout.marginHeight = 0;
223 layout.marginWidth = 0;
224 editorComposite.setLayout(layout);
225 GridData gd = new GridData(GridData.FILL_BOTH);
226 editorComposite.setLayoutData(gd);
228 SyntaxColorList = new List(editorComposite, SWT.SINGLE | SWT.V_SCROLL | SWT.BORDER);
229 gd = new GridData(GridData.FILL_BOTH);
230 gd.heightHint = convertHeightInCharsToPixels(5);
231 SyntaxColorList.setLayoutData(gd);
233 Composite stylesComposite = new Composite(editorComposite, SWT.NONE);
234 layout = new GridLayout();
235 layout.marginHeight = 0;
236 layout.marginWidth = 0;
237 layout.numColumns = 2;
238 stylesComposite.setLayout(layout);
239 stylesComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
241 label = new Label(stylesComposite, SWT.LEFT);
242 label.setText(PHPPreferencesMessages.getString("PHPEditorSyntaxPreferencePage.color")); //$NON-NLS-1$
244 gd.horizontalAlignment = GridData.BEGINNING;
245 label.setLayoutData(gd);
247 SyntaxForegroundColorEditor = new ColorEditor(stylesComposite);
248 Button foregroundColorButton = SyntaxForegroundColorEditor.getButton();
249 gd = new GridData(GridData.FILL_HORIZONTAL);
250 gd.horizontalAlignment = GridData.BEGINNING;
251 foregroundColorButton.setLayoutData(gd);
253 BoldCheckBox = new Button(stylesComposite, SWT.CHECK);
254 BoldCheckBox.setText(PHPPreferencesMessages.getString("PHPEditorSyntaxPreferencePage.bold")); //$NON-NLS-1$
255 gd = new GridData(GridData.FILL_HORIZONTAL);
256 gd.horizontalAlignment = GridData.BEGINNING;
257 gd.horizontalSpan = 2;
258 BoldCheckBox.setLayoutData(gd);
260 ItalicCheckBox = new Button(stylesComposite, SWT.CHECK);
261 ItalicCheckBox.setText(PHPPreferencesMessages.getString("PHPEditorSyntaxPreferencePage.italic")); //$NON-NLS-1$
262 ItalicCheckBox.setEnabled(false);
263 gd = new GridData(GridData.FILL_HORIZONTAL);
264 gd.horizontalAlignment = GridData.BEGINNING;
265 gd.horizontalSpan = 2;
266 ItalicCheckBox.setLayoutData(gd);
268 UnderlineCheckBox = new Button(stylesComposite, SWT.CHECK);
269 UnderlineCheckBox.setText(PHPPreferencesMessages.getString("PHPEditorSyntaxPreferencePage.underline")); //$NON-NLS-1$
270 UnderlineCheckBox.setEnabled(false);
271 gd = new GridData(GridData.FILL_HORIZONTAL);
272 gd.horizontalAlignment = GridData.BEGINNING;
273 gd.horizontalSpan = 2;
274 UnderlineCheckBox.setLayoutData(gd);
276 Composite customSyntaxComposite = new Composite(colorComposite, SWT.NONE);
277 layout = new GridLayout();
278 layout.marginHeight = 0;
279 layout.marginWidth = 0;
280 layout.numColumns = 3;
281 stylesComposite.setLayout(layout);
282 stylesComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
284 userdefPHPSyntaxFileFFE =
286 IPreferenceConstants.PHP_USERDEF_XMLFILE,
287 PHPPreferencesMessages.getString("PHPEditorSyntaxPreferencePage.syntaxdialog"),
289 userdefPHPSyntaxFileFFE.setPreferencePage(this);
290 userdefPHPSyntaxFileFFE.setPreferenceStore(getPreferenceStore());
291 userdefPHPSyntaxFileFFE.load();
293 SyntaxColorList.addSelectionListener(new SelectionListener() {
294 public void widgetDefaultSelected(SelectionEvent e) {
297 public void widgetSelected(SelectionEvent e) {
298 handleSyntaxColorListSelection();
302 foregroundColorButton.addSelectionListener(new SelectionListener() {
303 public void widgetDefaultSelected(SelectionEvent e) {
306 public void widgetSelected(SelectionEvent e) {
307 int i = SyntaxColorList.getSelectionIndex();
308 String key = SyntaxColorListModel[i][1];
310 PreferenceConverter.setValue(OverlayStore, key, SyntaxForegroundColorEditor.getColorValue());
313 BoldCheckBox.addSelectionListener(new SelectionListener() {
314 public void widgetDefaultSelected(SelectionEvent e) {
317 public void widgetSelected(SelectionEvent e) {
318 int i = SyntaxColorList.getSelectionIndex();
319 String key = SyntaxColorListModel[i][1];
320 OverlayStore.setValue(key + "_bold", BoldCheckBox.getSelection());
324 ItalicCheckBox.addSelectionListener(new SelectionListener() {
325 public void widgetDefaultSelected(SelectionEvent e) {
328 public void widgetSelected(SelectionEvent e) {
329 int i = SyntaxColorList.getSelectionIndex();
330 String key = SyntaxColorListModel[i][1];
331 OverlayStore.setValue(key + "_italic", ItalicCheckBox.getSelection());
335 UnderlineCheckBox.addSelectionListener(new SelectionListener() {
336 public void widgetDefaultSelected(SelectionEvent e) {
339 public void widgetSelected(SelectionEvent e) {
340 int i = SyntaxColorList.getSelectionIndex();
341 String key = SyntaxColorListModel[i][1];
342 OverlayStore.setValue(key + "_underline", UnderlineCheckBox.getSelection());
345 return colorComposite;
348 private void initializeViewerColors(ISourceViewer viewer) {
350 IPreferenceStore store = OverlayStore;
353 StyledText styledText = viewer.getTextWidget();
357 private Color createColor(IPreferenceStore store, String key, Display display) {
359 if (store.contains(key)) {
360 if (store.isDefault(key))
361 rgb = PreferenceConverter.getDefaultColor(store, key);
363 rgb = PreferenceConverter.getColor(store, key);
365 return new Color(display, rgb);
370 private static void setEnabled(Control control, boolean enable) {
371 control.setEnabled(enable);
372 if (control instanceof Composite) {
373 Composite composite = (Composite) control;
374 Control[] children = composite.getChildren();
375 for (int i = 0; i < children.length; i++)
376 setEnabled(children[i], enable);
380 private static void indent(Control control) {
381 GridData gridData = new GridData();
382 gridData.horizontalIndent = 20;
383 control.setLayoutData(gridData);
386 private static void createDependency(final Button master, final Control slave) {
388 master.addSelectionListener(new SelectionListener() {
389 public void widgetSelected(SelectionEvent e) {
390 slave.setEnabled(master.getSelection());
393 public void widgetDefaultSelected(SelectionEvent e) {
398 protected Control createContents(Composite parent) {
400 OverlayStore.start();
401 //Create overall composite
402 Composite composite = new Composite(parent, SWT.NONE);
403 GridLayout layout = new GridLayout();
404 layout.marginHeight = 0;
405 layout.marginWidth = 0;
406 composite.setLayout(layout);
407 Composite syntaxComposite = new Composite(composite, SWT.NULL);
408 syntaxComposite.setLayout(new GridLayout());
409 layout = new GridLayout();
410 layout.numColumns = 3;
411 Group syntaxGroup = new Group(syntaxComposite, SWT.NONE);
412 syntaxGroup.setText(PHPPreferencesMessages.getString("PHPEditorSyntaxPreferencePage.foreground"));
413 syntaxGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
414 syntaxGroup.setLayout(layout);
415 createSyntaxPage(syntaxGroup);
417 Composite backgroundOptions = new Composite(composite,SWT.NULL);
418 backgroundOptions.setLayout(new GridLayout());
419 layout = new GridLayout();
420 layout.numColumns = 3;
421 Group backgroundOptionsGroup = new Group(backgroundOptions,SWT.NONE);
422 backgroundOptionsGroup.setText(PHPPreferencesMessages.getString("PHPEditorSyntaxPreferencePage.background"));
423 backgroundOptionsGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
424 backgroundOptionsGroup.setLayout(layout);
425 backgroundOptionPage(backgroundOptionsGroup);
430 // showLineNumber = new BooleanFieldEditor(PHPeclipsePlugin.LINE_NUMBER_RULER,
431 // "Show line numbers", composite);
432 // showLineNumber.setPreferencePage(this);
433 // showLineNumber.setPreferenceStore(getPreferenceStore());
434 // showLineNumber.load();
436 // formatterTabSize = new IntegerFieldEditor(PHPeclipsePlugin.FORMATTER_TAB_SIZE,
437 // "Displayed tab width", composite, 3);
438 // formatterTabSize.setPreferencePage(this);
439 // formatterTabSize.setPreferenceStore(getPreferenceStore());
440 // formatterTabSize.load();
442 // spacesForTabs = new BooleanFieldEditor(PHPeclipsePlugin.SPACES_FOR_TABS,
443 // "Spaces for Tabs", composite);
444 // spacesForTabs.setPreferencePage(this);
445 // spacesForTabs.setPreferenceStore(getPreferenceStore());
446 // spacesForTabs.load();
450 private void initialize() {
452 for (int i = 0; i < SyntaxColorListModel.length; i++)
453 SyntaxColorList.add(SyntaxColorListModel[i][0]);
454 SyntaxColorList.getDisplay().asyncExec(new Runnable() {
456 if (SyntaxColorList != null && !SyntaxColorList.isDisposed()) {
457 SyntaxColorList.select(0);
458 handleSyntaxColorListSelection();
464 private void initializeFields() {
466 Iterator e = ColorButtons.keySet().iterator();
467 while (e.hasNext()) {
468 ColorEditor c = (ColorEditor) e.next();
469 String key = (String) ColorButtons.get(c);
470 RGB rgb = PreferenceConverter.getColor(OverlayStore, key);
471 c.setColorValue(rgb);
474 e = CheckBoxes.keySet().iterator();
475 while (e.hasNext()) {
476 Button b = (Button) e.next();
477 String key = (String) CheckBoxes.get(b);
478 b.setSelection(OverlayStore.getBoolean(key));
482 public boolean performOk() {
483 OverlayStore.propagate();
484 IPreferenceStore store = getPreferenceStore();
485 PHPeclipsePlugin.getDefault().savePluginPreferences();
486 userdefPHPSyntaxFileFFE.store();
487 // showLineNumber.store();
488 // spacesForTabs.store();
489 // formatterTabSize.store();
493 protected void performDefaults() {
494 OverlayStore.loadDefaults();
496 handleSyntaxColorListSelection();
497 userdefPHPSyntaxFileFFE.loadDefault();
498 // showLineNumber.loadDefault();
499 // spacesForTabs.loadDefault();
500 // showLineNumber.loadDefault();
501 // formatterTabSize.loadDefault();
502 super.performDefaults();
505 public void dispose() {
506 if (OverlayStore != null) {
513 private Control addColorButton(Composite composite, String label, String key, int indentation) {
514 Label labelControl = new Label(composite, SWT.NONE);
515 labelControl.setText(label);
516 GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
517 gd.horizontalIndent = indentation;
518 labelControl.setLayoutData(gd);
519 ColorEditor editor = new ColorEditor(composite);
520 Button button = editor.getButton();
521 button.setData(editor);
522 gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
523 button.setLayoutData(gd);
524 button.addSelectionListener(ColorButtonListener);
525 ColorButtons.put(editor, key);
529 private Button addCheckBox(Composite parent, String label, String key, int indentation) {
530 Button checkBox = new Button(parent, SWT.CHECK);
531 checkBox.setText(label);
532 GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
533 gd.horizontalIndent = indentation;
534 gd.horizontalSpan = 2;
535 checkBox.setLayoutData(gd);
536 checkBox.addSelectionListener(CheckBoxListener);
537 CheckBoxes.put(checkBox, key);
541 private void updateStatus(IStatus status) {
545 * @deprecated Inline to avoid reference to preference page
547 public static boolean indicateQuixFixableProblems() {
548 // return PreferenceConstants.getPreferenceStore().getBoolean(PreferenceConstants.EDITOR_CORRECTION_INDICATION);
553 * @deprecated Inline to avoid reference to preference page
555 static public boolean synchronizeOutlineOnCursorMove() {
556 // return PreferenceConstants.getPreferenceStore().getBoolean(PreferenceConstants.EDITOR_SYNC_OUTLINE_ON_CURSOR_MOVE);