1 /**********************************************************************
2 Copyright (c) 2000, 2002 IBM Corp. and others.
3 All rights reserved. This program and the accompanying materials
4 are made available under the terms of the Common Public License v1.0
5 which accompanies this distribution, and is available at
6 http://www.eclipse.org/legal/cpl-v10.html
9 IBM Corporation - Initial implementation
10 **********************************************************************/
11 package net.sourceforge.phpdt.internal.ui.preferences;
12 import java.io.BufferedReader;
13 import java.io.IOException;
14 import java.io.InputStreamReader;
15 import java.text.Collator;
16 import java.util.ArrayList;
17 import java.util.Comparator;
18 import java.util.HashMap;
19 import java.util.Iterator;
21 import java.util.SortedSet;
22 import java.util.TreeSet;
23 import net.sourceforge.phpdt.core.JavaCore;
24 import net.sourceforge.phpdt.internal.ui.PHPUIMessages;
25 import net.sourceforge.phpdt.internal.ui.dialogs.StatusInfo;
26 import net.sourceforge.phpdt.internal.ui.dialogs.StatusUtil;
27 import net.sourceforge.phpdt.internal.ui.util.TabFolderLayout;
28 import net.sourceforge.phpdt.ui.PreferenceConstants;
29 import net.sourceforge.phpdt.ui.text.JavaTextTools;
30 import net.sourceforge.phpeclipse.IPreferenceConstants;
31 import net.sourceforge.phpeclipse.PHPeclipsePlugin;
32 import net.sourceforge.phpeclipse.phpeditor.PHPSourceViewerConfiguration;
33 import net.sourceforge.phpeclipse.preferences.ColorEditor;
34 import org.eclipse.core.runtime.IStatus;
35 import org.eclipse.core.runtime.Preferences;
36 import org.eclipse.jface.preference.IPreferenceStore;
37 import org.eclipse.jface.preference.PreferenceConverter;
38 import org.eclipse.jface.preference.PreferencePage;
39 import org.eclipse.jface.resource.JFaceResources;
40 import org.eclipse.jface.text.Document;
41 import org.eclipse.jface.text.IDocument;
42 import org.eclipse.jface.text.IDocumentPartitioner;
43 import org.eclipse.jface.text.source.ISourceViewer;
44 import org.eclipse.jface.text.source.SourceViewer;
45 import org.eclipse.jface.util.IPropertyChangeListener;
46 import org.eclipse.jface.util.PropertyChangeEvent;
47 import org.eclipse.swt.SWT;
48 import org.eclipse.swt.custom.StyledText;
49 import org.eclipse.swt.events.ModifyEvent;
50 import org.eclipse.swt.events.ModifyListener;
51 import org.eclipse.swt.events.SelectionAdapter;
52 import org.eclipse.swt.events.SelectionEvent;
53 import org.eclipse.swt.events.SelectionListener;
54 import org.eclipse.swt.graphics.Color;
55 import org.eclipse.swt.graphics.RGB;
56 import org.eclipse.swt.layout.GridData;
57 import org.eclipse.swt.layout.GridLayout;
58 import org.eclipse.swt.layout.RowLayout;
59 import org.eclipse.swt.widgets.Button;
60 import org.eclipse.swt.widgets.Combo;
61 import org.eclipse.swt.widgets.Composite;
62 import org.eclipse.swt.widgets.Control;
63 import org.eclipse.swt.widgets.Display;
64 import org.eclipse.swt.widgets.Group;
65 import org.eclipse.swt.widgets.Label;
66 import org.eclipse.swt.widgets.List;
67 import org.eclipse.swt.widgets.TabFolder;
68 import org.eclipse.swt.widgets.TabItem;
69 import org.eclipse.swt.widgets.Text;
70 import org.eclipse.ui.IWorkbench;
71 import org.eclipse.ui.IWorkbenchPreferencePage;
72 import org.eclipse.ui.texteditor.AnnotationPreference;
73 import org.eclipse.ui.texteditor.MarkerAnnotationPreferences;
74 import org.eclipse.ui.texteditor.WorkbenchChainedTextFontFieldEditor;
76 * The page for setting the editor options.
78 public class PHPEditorPreferencePage extends PreferencePage
80 IWorkbenchPreferencePage {
81 private static final String BOLD = PreferenceConstants.EDITOR_BOLD_SUFFIX;
82 private static final String COMPILER_TASK_TAGS = JavaCore.COMPILER_TASK_TAGS;
83 // public final OverlayPreferenceStore.OverlayKey[] fKeys =
84 // new OverlayPreferenceStore.OverlayKey[] {
85 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
86 // PreferenceConstants.EDITOR_FOREGROUND_COLOR),
87 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
88 // PreferenceConstants.EDITOR_FOREGROUND_DEFAULT_COLOR),
89 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
90 // PreferenceConstants.EDITOR_BACKGROUND_COLOR),
91 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
92 // PreferenceConstants.EDITOR_BACKGROUND_DEFAULT_COLOR),
93 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.INT,
94 // PreferenceConstants.EDITOR_TAB_WIDTH),
95 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
96 // PreferenceConstants.EDITOR_MULTI_LINE_COMMENT_COLOR),
97 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
98 // PreferenceConstants.EDITOR_MULTI_LINE_COMMENT_BOLD),
99 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
100 // PreferenceConstants.EDITOR_SINGLE_LINE_COMMENT_COLOR),
101 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
102 // PreferenceConstants.EDITOR_SINGLE_LINE_COMMENT_BOLD),
103 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
104 // PreferenceConstants.EDITOR_JAVA_TAG_COLOR),
105 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
106 // PreferenceConstants.EDITOR_JAVA_TAG_BOLD),
107 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
108 // PreferenceConstants.EDITOR_JAVA_KEYWORD_COLOR),
109 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
110 // PreferenceConstants.EDITOR_JAVA_KEYWORD_BOLD),
111 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
112 // PreferenceConstants.EDITOR_PHP_FUNCTIONNAME_COLOR),
113 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
114 // PreferenceConstants.EDITOR_PHP_FUNCTIONNAME_BOLD),
115 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
116 // PreferenceConstants.EDITOR_PHP_VARIABLE_COLOR),
117 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
118 // PreferenceConstants.EDITOR_PHP_VARIABLE_BOLD),
119 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
120 // PreferenceConstants.EDITOR_PHP_CONSTANT_COLOR),
121 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
122 // PreferenceConstants.EDITOR_PHP_CONSTANT_BOLD),
123 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
124 // PreferenceConstants.EDITOR_PHP_TYPE_COLOR),
125 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
126 // PreferenceConstants.EDITOR_PHP_TYPE_BOLD),
127 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
128 // PreferenceConstants.EDITOR_STRING_COLOR),
129 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
130 // PreferenceConstants.EDITOR_STRING_BOLD),
131 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
132 // PreferenceConstants.EDITOR_JAVA_DEFAULT_COLOR),
133 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
134 // PreferenceConstants.EDITOR_JAVA_DEFAULT_BOLD),
135 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
136 // PreferenceConstants.EDITOR_JAVADOC_KEYWORD_COLOR),
137 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
138 // PreferenceConstants.EDITOR_JAVADOC_KEYWORD_BOLD),
139 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
140 // PreferenceConstants.EDITOR_JAVADOC_TAG_COLOR),
141 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
142 // PreferenceConstants.EDITOR_JAVADOC_TAG_BOLD),
143 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
144 // PreferenceConstants.EDITOR_JAVADOC_LINKS_COLOR),
145 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
146 // PreferenceConstants.EDITOR_JAVADOC_LINKS_BOLD),
147 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
148 // PreferenceConstants.EDITOR_JAVADOC_DEFAULT_COLOR),
149 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
150 // PreferenceConstants.EDITOR_JAVADOC_DEFAULT_BOLD),
151 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
152 // PreferenceConstants.EDITOR_MATCHING_BRACKETS_COLOR),
153 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
154 // PreferenceConstants.EDITOR_MATCHING_BRACKETS),
155 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
156 // PreferenceConstants.EDITOR_CURRENT_LINE_COLOR),
157 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
158 // PreferenceConstants.EDITOR_CURRENT_LINE),
159 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
160 // PreferenceConstants.EDITOR_PRINT_MARGIN_COLOR),
161 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.INT,
162 // PreferenceConstants.EDITOR_PRINT_MARGIN_COLUMN),
163 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
164 // PreferenceConstants.EDITOR_PRINT_MARGIN),
165 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
166 // PreferenceConstants.EDITOR_FIND_SCOPE_COLOR),
167 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
168 // PreferenceConstants.EDITOR_LINKED_POSITION_COLOR),
169 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
170 // PreferenceConstants.EDITOR_LINK_COLOR),
171 //// new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
172 // PreferenceConstants.EDITOR_PROBLEM_INDICATION_COLOR),
173 //// new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
174 // PreferenceConstants.EDITOR_PROBLEM_INDICATION),
175 //// new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
176 // PreferenceConstants.EDITOR_WARNING_INDICATION_COLOR),
177 //// new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
178 // PreferenceConstants.EDITOR_WARNING_INDICATION),
179 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
180 // PreferenceConstants.EDITOR_TASK_INDICATION_COLOR),
181 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
182 // PreferenceConstants.EDITOR_TASK_INDICATION),
183 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
184 // PreferenceConstants.EDITOR_BOOKMARK_INDICATION_COLOR),
185 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
186 // PreferenceConstants.EDITOR_BOOKMARK_INDICATION),
187 // new OverlayPreferenceStore.OverlayKey(
188 // OverlayPreferenceStore.STRING,
189 // PreferenceConstants.EDITOR_SEARCH_RESULT_INDICATION_COLOR),
190 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
191 // PreferenceConstants.EDITOR_SEARCH_RESULT_INDICATION),
192 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
193 // PreferenceConstants.EDITOR_UNKNOWN_INDICATION_COLOR),
194 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
195 // PreferenceConstants.EDITOR_UNKNOWN_INDICATION),
196 // new OverlayPreferenceStore.OverlayKey(
197 // OverlayPreferenceStore.BOOLEAN,
198 // PreferenceConstants.EDITOR_ERROR_INDICATION_IN_OVERVIEW_RULER),
199 // new OverlayPreferenceStore.OverlayKey(
200 // OverlayPreferenceStore.BOOLEAN,
201 // PreferenceConstants.EDITOR_WARNING_INDICATION_IN_OVERVIEW_RULER),
202 // new OverlayPreferenceStore.OverlayKey(
203 // OverlayPreferenceStore.BOOLEAN,
204 // PreferenceConstants.EDITOR_TASK_INDICATION_IN_OVERVIEW_RULER),
205 // new OverlayPreferenceStore.OverlayKey(
206 // OverlayPreferenceStore.BOOLEAN,
207 // PreferenceConstants.EDITOR_BOOKMARK_INDICATION_IN_OVERVIEW_RULER),
208 // new OverlayPreferenceStore.OverlayKey(
209 // OverlayPreferenceStore.BOOLEAN,
210 // PreferenceConstants.EDITOR_SEARCH_RESULT_INDICATION_IN_OVERVIEW_RULER),
211 // new OverlayPreferenceStore.OverlayKey(
212 // OverlayPreferenceStore.BOOLEAN,
213 // PreferenceConstants.EDITOR_UNKNOWN_INDICATION_IN_OVERVIEW_RULER),
214 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
215 // PreferenceConstants.EDITOR_CORRECTION_INDICATION),
216 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
217 // PreferenceConstants.EDITOR_SYNC_OUTLINE_ON_CURSOR_MOVE),
218 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
219 // PreferenceConstants.EDITOR_EVALUTE_TEMPORARY_PROBLEMS),
220 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
221 // PreferenceConstants.EDITOR_OVERVIEW_RULER),
222 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
223 // PreferenceConstants.EDITOR_LINE_NUMBER_RULER_COLOR),
224 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
225 // PreferenceConstants.EDITOR_LINE_NUMBER_RULER),
226 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
227 // PreferenceConstants.EDITOR_SPACES_FOR_TABS),
228 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
229 // PreferenceConstants.CODEASSIST_AUTOACTIVATION),
230 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.INT,
231 // PreferenceConstants.CODEASSIST_AUTOACTIVATION_DELAY),
232 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
233 // PreferenceConstants.CODEASSIST_AUTOINSERT),
234 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
235 // PreferenceConstants.CODEASSIST_PROPOSALS_BACKGROUND),
236 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
237 // PreferenceConstants.CODEASSIST_PROPOSALS_FOREGROUND),
238 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
239 // PreferenceConstants.CODEASSIST_PARAMETERS_BACKGROUND),
240 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
241 // PreferenceConstants.CODEASSIST_PARAMETERS_FOREGROUND),
242 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
243 // PreferenceConstants.CODEASSIST_REPLACEMENT_BACKGROUND),
244 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
245 // PreferenceConstants.CODEASSIST_REPLACEMENT_FOREGROUND),
246 // new OverlayPreferenceStore.OverlayKey(
247 // OverlayPreferenceStore.STRING,
248 // PreferenceConstants.CODEASSIST_AUTOACTIVATION_TRIGGERS_JAVA),
249 // new OverlayPreferenceStore.OverlayKey(
250 // OverlayPreferenceStore.STRING,
251 // PreferenceConstants.CODEASSIST_AUTOACTIVATION_TRIGGERS_JAVADOC),
252 // new OverlayPreferenceStore.OverlayKey(
253 // OverlayPreferenceStore.STRING,
254 // PreferenceConstants.CODEASSIST_AUTOACTIVATION_TRIGGERS_HTML),
255 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
256 // PreferenceConstants.CODEASSIST_SHOW_VISIBLE_PROPOSALS),
257 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
258 // PreferenceConstants.CODEASSIST_ORDER_PROPOSALS),
259 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
260 // PreferenceConstants.CODEASSIST_CASE_SENSITIVITY),
261 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
262 // PreferenceConstants.CODEASSIST_ADDIMPORT),
263 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
264 // PreferenceConstants.CODEASSIST_INSERT_COMPLETION),
265 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
266 // PreferenceConstants.CODEASSIST_FILL_ARGUMENT_NAMES),
267 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
268 // PreferenceConstants.CODEASSIST_GUESS_METHOD_ARGUMENTS),
269 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
270 // PreferenceConstants.EDITOR_SMART_PASTE),
271 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
272 // IPreferenceConstants.PHP_USERDEF_XMLFILE),
273 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
274 // PreferenceConstants.EDITOR_CLOSE_STRINGS_PHP),
275 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
276 // PreferenceConstants.EDITOR_CLOSE_BRACKETS_PHP),
277 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
278 // PreferenceConstants.EDITOR_CLOSE_BRACES),
279 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
280 // PreferenceConstants.EDITOR_CLOSE_JAVADOCS),
281 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
282 // PreferenceConstants.EDITOR_WRAP_STRINGS),
283 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
284 // PreferenceConstants.EDITOR_ADD_JAVADOC_TAGS),
285 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
286 // PreferenceConstants.EDITOR_FORMAT_JAVADOCS),
287 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
288 // PreferenceConstants.EDITOR_SMART_HOME_END),
289 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
290 // PreferenceConstants.EDITOR_CLOSE_STRINGS_HTML),
291 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
292 // PreferenceConstants.EDITOR_CLOSE_BRACKETS_HTML),
293 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
294 // PreferenceConstants.EDITOR_DEFAULT_HOVER),
295 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
296 // PreferenceConstants.EDITOR_NONE_HOVER),
297 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
298 // PreferenceConstants.EDITOR_CTRL_HOVER),
299 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
300 // PreferenceConstants.EDITOR_SHIFT_HOVER),
301 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
302 // PreferenceConstants.EDITOR_CTRL_SHIFT_HOVER),
303 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
304 // PreferenceConstants.EDITOR_CTRL_ALT_HOVER),
305 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
306 // PreferenceConstants.EDITOR_CTRL_ALT_SHIFT_HOVER),
307 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
308 // PreferenceConstants.EDITOR_CTRL_SHIFT_HOVER),
309 // new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
310 // PreferenceConstants.EDITOR_ALT_SHIFT_HOVER),
312 /** The keys of the overlay store. */
313 public final OverlayPreferenceStore.OverlayKey[] fKeys;
314 private final String[][] fSyntaxColorListModel = new String[][]{
315 {PHPUIMessages.getString("PHPEditorPreferencePage.multiLineComment"),
316 PreferenceConstants.EDITOR_MULTI_LINE_COMMENT_COLOR},
318 {PHPUIMessages.getString("PHPEditorPreferencePage.singleLineComment"),
319 PreferenceConstants.EDITOR_SINGLE_LINE_COMMENT_COLOR},
321 {PHPUIMessages.getString("PHPEditorPreferencePage.tags"),
322 PreferenceConstants.EDITOR_JAVA_TAG_COLOR},
324 {PHPUIMessages.getString("PHPEditorPreferencePage.keywords"),
325 PreferenceConstants.EDITOR_JAVA_KEYWORD_COLOR},
327 {PHPUIMessages.getString("PHPEditorPreferencePage.functionNames"),
328 PreferenceConstants.EDITOR_PHP_FUNCTIONNAME_COLOR},
330 {PHPUIMessages.getString("PHPEditorPreferencePage.variables"),
331 PreferenceConstants.EDITOR_PHP_VARIABLE_COLOR},
333 {PHPUIMessages.getString("PHPEditorPreferencePage.constants"),
334 PreferenceConstants.EDITOR_PHP_CONSTANT_COLOR},
336 {PHPUIMessages.getString("PHPEditorPreferencePage.types"),
337 PreferenceConstants.EDITOR_PHP_TYPE_COLOR},
339 {PHPUIMessages.getString("PHPEditorPreferencePage.strings"),
340 PreferenceConstants.EDITOR_STRING_COLOR},
342 {PHPUIMessages.getString("PHPEditorPreferencePage.others"),
343 PreferenceConstants.EDITOR_JAVA_DEFAULT_COLOR},
345 {PHPUIMessages.getString("PHPEditorPreferencePage.phpDocKeywords"),
346 PreferenceConstants.EDITOR_JAVADOC_KEYWORD_COLOR},
348 {PHPUIMessages.getString("PHPEditorPreferencePage.phpDocHtmlTags"),
349 PreferenceConstants.EDITOR_JAVADOC_TAG_COLOR},
351 {PHPUIMessages.getString("PHPEditorPreferencePage.phpDocLinks"),
352 PreferenceConstants.EDITOR_JAVADOC_LINKS_COLOR},
354 {PHPUIMessages.getString("PHPEditorPreferencePage.phpDocOthers"),
355 PreferenceConstants.EDITOR_JAVADOC_DEFAULT_COLOR} //$NON-NLS-1$
357 private final String[][] fAppearanceColorListModel = new String[][]{
360 .getString("PHPEditorPreferencePage.lineNumberForegroundColor"),
361 PreferenceConstants.EDITOR_LINE_NUMBER_RULER_COLOR},
365 .getString("PHPEditorPreferencePage.matchingBracketsHighlightColor2"),
366 PreferenceConstants.EDITOR_MATCHING_BRACKETS_COLOR},
370 .getString("PHPEditorPreferencePage.currentLineHighlighColor"),
371 PreferenceConstants.EDITOR_CURRENT_LINE_COLOR},
373 {PHPUIMessages.getString("PHPEditorPreferencePage.printMarginColor2"),
374 PreferenceConstants.EDITOR_PRINT_MARGIN_COLOR},
376 {PHPUIMessages.getString("PHPEditorPreferencePage.findScopeColor2"),
377 PreferenceConstants.EDITOR_FIND_SCOPE_COLOR},
379 {PHPUIMessages.getString("PHPEditorPreferencePage.linkedPositionColor2"),
380 PreferenceConstants.EDITOR_LINKED_POSITION_COLOR},
382 {PHPUIMessages.getString("PHPEditorPreferencePage.linkColor2"),
383 PreferenceConstants.EDITOR_LINK_COLOR}, //$NON-NLS-1$
385 // private final String[][] fProblemIndicationColorListModel =
389 // PreferenceConstants.EDITOR_PROBLEM_INDICATION_COLOR,
390 // PreferenceConstants.EDITOR_PROBLEM_INDICATION,
391 // PreferenceConstants.EDITOR_ERROR_INDICATION_IN_OVERVIEW_RULER },
394 // PreferenceConstants.EDITOR_WARNING_INDICATION_COLOR,
395 // PreferenceConstants.EDITOR_WARNING_INDICATION,
396 // PreferenceConstants.EDITOR_WARNING_INDICATION_IN_OVERVIEW_RULER },
399 // PreferenceConstants.EDITOR_TASK_INDICATION_COLOR,
400 // PreferenceConstants.EDITOR_TASK_INDICATION,
401 // PreferenceConstants.EDITOR_TASK_INDICATION_IN_OVERVIEW_RULER },
404 // PreferenceConstants.EDITOR_SEARCH_RESULT_INDICATION_COLOR,
405 // PreferenceConstants.EDITOR_SEARCH_RESULT_INDICATION,
406 // PreferenceConstants.EDITOR_SEARCH_RESULT_INDICATION_IN_OVERVIEW_RULER },
409 // PreferenceConstants.EDITOR_BOOKMARK_INDICATION_COLOR,
410 // PreferenceConstants.EDITOR_BOOKMARK_INDICATION,
411 // PreferenceConstants.EDITOR_BOOKMARK_INDICATION_IN_OVERVIEW_RULER },
414 // PreferenceConstants.EDITOR_UNKNOWN_INDICATION_COLOR,
415 // PreferenceConstants.EDITOR_UNKNOWN_INDICATION,
416 // PreferenceConstants.EDITOR_UNKNOWN_INDICATION_IN_OVERVIEW_RULER }
418 private final String[][] fAnnotationColorListModel;
419 private final String[][] fAnnotationDecorationListModel = new String[][]{
422 .getString("JavaEditorPreferencePage.AnnotationDecoration.NONE"),
423 AnnotationPreference.STYLE_NONE},
427 .getString("JavaEditorPreferencePage.AnnotationDecoration.SQUIGGLIES"),
428 AnnotationPreference.STYLE_SQUIGGLIES},
432 .getString("JavaEditorPreferencePage.AnnotationDecoration.UNDERLINE"),
433 AnnotationPreference.STYLE_UNDERLINE},
437 .getString("JavaEditorPreferencePage.AnnotationDecoration.BOX"),
438 AnnotationPreference.STYLE_BOX},
442 .getString("JavaEditorPreferencePage.AnnotationDecoration.IBEAM"),
443 AnnotationPreference.STYLE_IBEAM} //$NON-NLS-1$
445 private OverlayPreferenceStore fOverlayStore;
446 private JavaTextTools fJavaTextTools;
447 // private JavaEditorHoverConfigurationBlock
448 // fJavaEditorHoverConfigurationBlock;
449 private Map fColorButtons = new HashMap();
450 private SelectionListener fColorButtonListener = new SelectionListener() {
451 public void widgetDefaultSelected(SelectionEvent e) {
453 public void widgetSelected(SelectionEvent e) {
454 ColorEditor editor = (ColorEditor) e.widget.getData();
455 PreferenceConverter.setValue(fOverlayStore, (String) fColorButtons
456 .get(editor), editor.getColorValue());
459 private Map fCheckBoxes = new HashMap();
460 private SelectionListener fCheckBoxListener = new SelectionListener() {
461 public void widgetDefaultSelected(SelectionEvent e) {
463 public void widgetSelected(SelectionEvent e) {
464 Button button = (Button) e.widget;
465 fOverlayStore.setValue((String) fCheckBoxes.get(button), button
469 private Map fTextFields = new HashMap();
470 private ModifyListener fTextFieldListener = new ModifyListener() {
471 public void modifyText(ModifyEvent e) {
472 Text text = (Text) e.widget;
473 fOverlayStore.setValue((String) fTextFields.get(text), text.getText());
476 private ArrayList fNumberFields = new ArrayList();
477 private ModifyListener fNumberFieldListener = new ModifyListener() {
478 public void modifyText(ModifyEvent e) {
479 numberFieldChanged((Text) e.widget);
482 private WorkbenchChainedTextFontFieldEditor fFontEditor;
483 private List fSyntaxColorList;
484 private List fAppearanceColorList;
485 private List fAnnotationList;
486 private ColorEditor fSyntaxForegroundColorEditor;
487 private ColorEditor fAppearanceForegroundColorEditor;
488 private ColorEditor fAnnotationForegroundColorEditor;
489 private ColorEditor fBackgroundColorEditor;
490 private Button fBackgroundDefaultRadioButton;
491 private Button fBackgroundCustomRadioButton;
492 private Button fBackgroundColorButton;
493 private Button fBoldCheckBox;
494 //private Button fAddJavaDocTagsButton;
495 // private Button fGuessMethodArgumentsButton;
496 private SourceViewer fPreviewViewer;
497 private Color fBackgroundColor;
498 private Control fAutoInsertDelayText;
499 private Control fAutoInsertJavaTriggerText;
500 private Control fAutoInsertJavaDocTriggerText;
501 private Control fAutoInsertHTMLTriggerText;
502 private Button fShowInTextCheckBox;
503 private Button fShowInOverviewRulerCheckBox;
504 private Combo fDecorationStyleCombo;
505 private Button fHighlightInTextCheckBox;
506 private Button fShowInVerticalRulerCheckBox;
507 // private FileFieldEditor fUserDefinedPHPSyntaxFileFFE;
508 public PHPEditorPreferencePage() {
509 setDescription(PHPUIMessages
510 .getString("PHPEditorPreferencePage.description")); //$NON-NLS-1$
511 setPreferenceStore(PHPeclipsePlugin.getDefault().getPreferenceStore());
512 MarkerAnnotationPreferences markerAnnotationPreferences = new MarkerAnnotationPreferences();
513 fKeys = createOverlayStoreKeys(markerAnnotationPreferences);
514 fOverlayStore = new OverlayPreferenceStore(getPreferenceStore(), fKeys);
515 fAnnotationColorListModel = createAnnotationTypeListModel(markerAnnotationPreferences);
517 private OverlayPreferenceStore.OverlayKey[] createOverlayStoreKeys(
518 MarkerAnnotationPreferences preferences) {
519 ArrayList overlayKeys = new ArrayList();
520 Iterator e = preferences.getAnnotationPreferences().iterator();
521 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
522 OverlayPreferenceStore.STRING,
523 PreferenceConstants.EDITOR_PHP_FUNCTIONNAME_COLOR));
524 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
525 OverlayPreferenceStore.BOOLEAN,
526 PreferenceConstants.EDITOR_PHP_FUNCTIONNAME_BOLD));
527 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
528 OverlayPreferenceStore.STRING,
529 PreferenceConstants.EDITOR_PHP_VARIABLE_COLOR));
530 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
531 OverlayPreferenceStore.BOOLEAN,
532 PreferenceConstants.EDITOR_PHP_VARIABLE_BOLD));
533 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
534 OverlayPreferenceStore.STRING,
535 PreferenceConstants.EDITOR_PHP_CONSTANT_COLOR));
536 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
537 OverlayPreferenceStore.BOOLEAN,
538 PreferenceConstants.EDITOR_PHP_CONSTANT_BOLD));
539 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
540 OverlayPreferenceStore.STRING,
541 PreferenceConstants.EDITOR_PHP_TYPE_COLOR));
542 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
543 OverlayPreferenceStore.BOOLEAN,
544 PreferenceConstants.EDITOR_PHP_TYPE_BOLD));
546 .add(new OverlayPreferenceStore.OverlayKey(
547 OverlayPreferenceStore.STRING,
548 IPreferenceConstants.PHP_USERDEF_XMLFILE));
549 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
550 OverlayPreferenceStore.BOOLEAN,
551 PreferenceConstants.EDITOR_CLOSE_STRINGS_PHP));
552 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
553 OverlayPreferenceStore.BOOLEAN,
554 PreferenceConstants.EDITOR_CLOSE_BRACKETS_PHP));
555 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
556 OverlayPreferenceStore.BOOLEAN,
557 PreferenceConstants.EDITOR_CLOSE_STRINGS_HTML));
558 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
559 OverlayPreferenceStore.BOOLEAN,
560 PreferenceConstants.EDITOR_CLOSE_BRACKETS_HTML));
561 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
562 OverlayPreferenceStore.STRING,
563 PreferenceConstants.EDITOR_FOREGROUND_COLOR));
564 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
565 OverlayPreferenceStore.BOOLEAN,
566 PreferenceConstants.EDITOR_FOREGROUND_DEFAULT_COLOR));
567 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
568 OverlayPreferenceStore.STRING,
569 PreferenceConstants.EDITOR_BACKGROUND_COLOR));
570 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
571 OverlayPreferenceStore.BOOLEAN,
572 PreferenceConstants.EDITOR_BACKGROUND_DEFAULT_COLOR));
573 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
574 OverlayPreferenceStore.INT, PreferenceConstants.EDITOR_TAB_WIDTH));
575 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
576 OverlayPreferenceStore.STRING,
577 PreferenceConstants.EDITOR_MULTI_LINE_COMMENT_COLOR));
578 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
579 OverlayPreferenceStore.BOOLEAN,
580 PreferenceConstants.EDITOR_MULTI_LINE_COMMENT_BOLD));
581 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
582 OverlayPreferenceStore.STRING,
583 PreferenceConstants.EDITOR_SINGLE_LINE_COMMENT_COLOR));
584 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
585 OverlayPreferenceStore.BOOLEAN,
586 PreferenceConstants.EDITOR_SINGLE_LINE_COMMENT_BOLD));
587 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
588 OverlayPreferenceStore.STRING,
589 PreferenceConstants.EDITOR_JAVA_KEYWORD_COLOR));
590 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
591 OverlayPreferenceStore.BOOLEAN,
592 PreferenceConstants.EDITOR_JAVA_KEYWORD_BOLD));
594 .add(new OverlayPreferenceStore.OverlayKey(
595 OverlayPreferenceStore.STRING,
596 PreferenceConstants.EDITOR_STRING_COLOR));
598 .add(new OverlayPreferenceStore.OverlayKey(
599 OverlayPreferenceStore.BOOLEAN,
600 PreferenceConstants.EDITOR_STRING_BOLD));
601 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
602 OverlayPreferenceStore.STRING,
603 PreferenceConstants.EDITOR_JAVA_DEFAULT_COLOR));
604 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
605 OverlayPreferenceStore.BOOLEAN,
606 PreferenceConstants.EDITOR_JAVA_DEFAULT_BOLD));
607 // overlayKeys.add(new
608 // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
609 // PreferenceConstants.EDITOR_TASK_TAG_COLOR));
610 // overlayKeys.add(new
611 // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
612 // PreferenceConstants.EDITOR_TASK_TAG_BOLD));
614 // overlayKeys.add(new
615 // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
616 // PreferenceConstants.EDITOR_JAVA_METHOD_NAME_COLOR));
617 // overlayKeys.add(new
618 // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
619 // PreferenceConstants.EDITOR_JAVA_METHOD_NAME_BOLD));
621 // overlayKeys.add(new
622 // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
623 // PreferenceConstants.EDITOR_JAVA_OPERATOR_COLOR));
624 // overlayKeys.add(new
625 // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
626 // PreferenceConstants.EDITOR_JAVA_OPERATOR_BOLD));
627 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
628 OverlayPreferenceStore.STRING,
629 PreferenceConstants.EDITOR_JAVADOC_KEYWORD_COLOR));
630 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
631 OverlayPreferenceStore.BOOLEAN,
632 PreferenceConstants.EDITOR_JAVADOC_KEYWORD_BOLD));
633 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
634 OverlayPreferenceStore.STRING,
635 PreferenceConstants.EDITOR_JAVADOC_TAG_COLOR));
636 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
637 OverlayPreferenceStore.BOOLEAN,
638 PreferenceConstants.EDITOR_JAVADOC_TAG_BOLD));
639 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
640 OverlayPreferenceStore.STRING,
641 PreferenceConstants.EDITOR_JAVADOC_LINKS_COLOR));
642 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
643 OverlayPreferenceStore.BOOLEAN,
644 PreferenceConstants.EDITOR_JAVADOC_LINKS_BOLD));
645 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
646 OverlayPreferenceStore.STRING,
647 PreferenceConstants.EDITOR_JAVADOC_DEFAULT_COLOR));
648 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
649 OverlayPreferenceStore.BOOLEAN,
650 PreferenceConstants.EDITOR_JAVADOC_DEFAULT_BOLD));
651 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
652 OverlayPreferenceStore.STRING,
653 PreferenceConstants.EDITOR_MATCHING_BRACKETS_COLOR));
654 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
655 OverlayPreferenceStore.BOOLEAN,
656 PreferenceConstants.EDITOR_MATCHING_BRACKETS));
657 // overlayKeys.add(new
658 // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
659 // ExtendedTextEditorPreferenceConstants.EDITOR_CURRENT_LINE_COLOR));
660 // overlayKeys.add(new
661 // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
662 // ExtendedTextEditorPreferenceConstants.EDITOR_CURRENT_LINE));
664 // overlayKeys.add(new
665 // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
666 // ExtendedTextEditorPreferenceConstants.EDITOR_PRINT_MARGIN_COLOR));
667 // overlayKeys.add(new
668 // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.INT,
669 // ExtendedTextEditorPreferenceConstants.EDITOR_PRINT_MARGIN_COLUMN));
670 // overlayKeys.add(new
671 // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
672 // ExtendedTextEditorPreferenceConstants.EDITOR_PRINT_MARGIN));
674 // overlayKeys.add(new
675 // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
676 // PreferenceConstants.EDITOR_MARK_OCCURRENCES));
677 // overlayKeys.add(new
678 // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
679 // PreferenceConstants.EDITOR_STICKY_OCCURRENCES));
680 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
681 OverlayPreferenceStore.STRING,
682 PreferenceConstants.EDITOR_FIND_SCOPE_COLOR));
683 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
684 OverlayPreferenceStore.STRING, PreferenceConstants.EDITOR_LINK_COLOR));
685 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
686 OverlayPreferenceStore.BOOLEAN,
687 PreferenceConstants.EDITOR_CORRECTION_INDICATION));
688 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
689 OverlayPreferenceStore.BOOLEAN,
690 PreferenceConstants.EDITOR_EVALUTE_TEMPORARY_PROBLEMS));
691 // overlayKeys.add(new
692 // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
693 // ExtendedTextEditorPreferenceConstants.EDITOR_OVERVIEW_RULER));
694 // overlayKeys.add(new
695 // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
696 // ExtendedTextEditorPreferenceConstants.EDITOR_LINE_NUMBER_RULER_COLOR));
697 // overlayKeys.add(new
698 // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
699 // ExtendedTextEditorPreferenceConstants.EDITOR_LINE_NUMBER_RULER));
700 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
701 OverlayPreferenceStore.BOOLEAN,
702 PreferenceConstants.EDITOR_SPACES_FOR_TABS));
703 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
704 OverlayPreferenceStore.BOOLEAN,
705 PreferenceConstants.CODEASSIST_AUTOACTIVATION));
706 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
707 OverlayPreferenceStore.INT,
708 PreferenceConstants.CODEASSIST_AUTOACTIVATION_DELAY));
709 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
710 OverlayPreferenceStore.BOOLEAN,
711 PreferenceConstants.CODEASSIST_AUTOINSERT));
712 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
713 OverlayPreferenceStore.STRING,
714 PreferenceConstants.CODEASSIST_PROPOSALS_BACKGROUND));
715 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
716 OverlayPreferenceStore.STRING,
717 PreferenceConstants.CODEASSIST_PROPOSALS_FOREGROUND));
718 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
719 OverlayPreferenceStore.STRING,
720 PreferenceConstants.CODEASSIST_PARAMETERS_BACKGROUND));
721 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
722 OverlayPreferenceStore.STRING,
723 PreferenceConstants.CODEASSIST_PARAMETERS_FOREGROUND));
724 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
725 OverlayPreferenceStore.STRING,
726 PreferenceConstants.CODEASSIST_REPLACEMENT_BACKGROUND));
727 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
728 OverlayPreferenceStore.STRING,
729 PreferenceConstants.CODEASSIST_REPLACEMENT_FOREGROUND));
730 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
731 OverlayPreferenceStore.STRING,
732 PreferenceConstants.CODEASSIST_AUTOACTIVATION_TRIGGERS_JAVA));
733 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
734 OverlayPreferenceStore.STRING,
735 PreferenceConstants.CODEASSIST_AUTOACTIVATION_TRIGGERS_JAVADOC));
736 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
737 OverlayPreferenceStore.BOOLEAN,
738 PreferenceConstants.CODEASSIST_SHOW_VISIBLE_PROPOSALS));
739 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
740 OverlayPreferenceStore.BOOLEAN,
741 PreferenceConstants.CODEASSIST_ORDER_PROPOSALS));
742 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
743 OverlayPreferenceStore.BOOLEAN,
744 PreferenceConstants.CODEASSIST_CASE_SENSITIVITY));
745 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
746 OverlayPreferenceStore.BOOLEAN,
747 PreferenceConstants.CODEASSIST_ADDIMPORT));
748 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
749 OverlayPreferenceStore.BOOLEAN,
750 PreferenceConstants.CODEASSIST_INSERT_COMPLETION));
751 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
752 OverlayPreferenceStore.BOOLEAN,
753 PreferenceConstants.CODEASSIST_FILL_ARGUMENT_NAMES));
754 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
755 OverlayPreferenceStore.BOOLEAN,
756 PreferenceConstants.CODEASSIST_GUESS_METHOD_ARGUMENTS));
758 .add(new OverlayPreferenceStore.OverlayKey(
759 OverlayPreferenceStore.BOOLEAN,
760 PreferenceConstants.EDITOR_SMART_PASTE));
761 // overlayKeys.add(new
762 // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
763 // PreferenceConstants.EDITOR_CLOSE_STRINGS));
764 // overlayKeys.add(new
765 // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
766 // PreferenceConstants.EDITOR_CLOSE_BRACKETS));
768 .add(new OverlayPreferenceStore.OverlayKey(
769 OverlayPreferenceStore.BOOLEAN,
770 PreferenceConstants.EDITOR_CLOSE_BRACES));
771 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
772 OverlayPreferenceStore.BOOLEAN,
773 PreferenceConstants.EDITOR_CLOSE_JAVADOCS));
775 .add(new OverlayPreferenceStore.OverlayKey(
776 OverlayPreferenceStore.BOOLEAN,
777 PreferenceConstants.EDITOR_WRAP_STRINGS));
778 // overlayKeys.add(new
779 // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
780 // PreferenceConstants.EDITOR_ESCAPE_STRINGS));
781 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
782 OverlayPreferenceStore.BOOLEAN,
783 PreferenceConstants.EDITOR_ADD_JAVADOC_TAGS));
784 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
785 OverlayPreferenceStore.BOOLEAN,
786 PreferenceConstants.EDITOR_SMART_HOME_END));
787 // overlayKeys.add(new
788 // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
789 // PreferenceConstants.EDITOR_SUB_WORD_NAVIGATION));
790 // overlayKeys.add(new
791 // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
792 // PreferenceConstants.EDITOR_DISABLE_OVERWRITE_MODE));
793 // overlayKeys.add(new
794 // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
795 // PreferenceConstants.EDITOR_SHOW_TEXT_HOVER_AFFORDANCE));
796 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
797 OverlayPreferenceStore.STRING,
798 PreferenceConstants.EDITOR_TEXT_HOVER_MODIFIERS));
799 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
800 OverlayPreferenceStore.STRING,
801 PreferenceConstants.EDITOR_TEXT_HOVER_MODIFIER_MASKS));
802 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
803 OverlayPreferenceStore.BOOLEAN,
804 PreferenceConstants.EDITOR_BROWSER_LIKE_LINKS));
805 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
806 OverlayPreferenceStore.STRING,
807 PreferenceConstants.EDITOR_BROWSER_LIKE_LINKS_KEY_MODIFIER));
808 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
809 OverlayPreferenceStore.STRING,
810 PreferenceConstants.EDITOR_BROWSER_LIKE_LINKS_KEY_MODIFIER_MASK));
811 while (e.hasNext()) {
812 AnnotationPreference info = (AnnotationPreference) e.next();
813 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
814 OverlayPreferenceStore.STRING, info.getColorPreferenceKey()));
815 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
816 OverlayPreferenceStore.BOOLEAN, info.getTextPreferenceKey()));
817 if (info.getHighlightPreferenceKey() != null)
818 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
819 OverlayPreferenceStore.BOOLEAN, info.getHighlightPreferenceKey()));
821 .add(new OverlayPreferenceStore.OverlayKey(
822 OverlayPreferenceStore.BOOLEAN, info
823 .getOverviewRulerPreferenceKey()));
824 if (info.getVerticalRulerPreferenceKey() != null)
825 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
826 OverlayPreferenceStore.BOOLEAN, info
827 .getVerticalRulerPreferenceKey()));
828 if (info.getTextStylePreferenceKey() != null)
829 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
830 OverlayPreferenceStore.STRING, info.getTextStylePreferenceKey()));
832 OverlayPreferenceStore.OverlayKey[] keys = new OverlayPreferenceStore.OverlayKey[overlayKeys
834 overlayKeys.toArray(keys);
838 * @see IWorkbenchPreferencePage#init()
840 public void init(IWorkbench workbench) {
843 * @see PreferencePage#createControl(Composite)
845 public void createControl(Composite parent) {
846 super.createControl(parent);
847 // WorkbenchHelp.setHelp(getControl(),
848 // IJavaHelpContextIds.JAVA_EDITOR_PREFERENCE_PAGE);
850 private void handleSyntaxColorListSelection() {
851 int i = fSyntaxColorList.getSelectionIndex();
852 String key = fSyntaxColorListModel[i][1];
853 RGB rgb = PreferenceConverter.getColor(fOverlayStore, key);
854 fSyntaxForegroundColorEditor.setColorValue(rgb);
855 fBoldCheckBox.setSelection(fOverlayStore.getBoolean(key + BOLD));
857 private void handleAppearanceColorListSelection() {
858 int i = fAppearanceColorList.getSelectionIndex();
859 String key = fAppearanceColorListModel[i][1];
860 RGB rgb = PreferenceConverter.getColor(fOverlayStore, key);
861 fAppearanceForegroundColorEditor.setColorValue(rgb);
863 // private void handleProblemIndicationColorListSelection() {
864 // int i = fProblemIndicationList.getSelectionIndex();
866 // String key = fProblemIndicationColorListModel[i][1];
867 // RGB rgb = PreferenceConverter.getColor(fOverlayStore, key);
868 // fProblemIndicationForegroundColorEditor.setColorValue(rgb);
870 // key = fProblemIndicationColorListModel[i][2];
871 // fShowInTextCheckBox.setSelection(fOverlayStore.getBoolean(key));
873 // key = fProblemIndicationColorListModel[i][3];
874 // fShowInOverviewRulerCheckBox.setSelection(fOverlayStore.getBoolean(key));
876 private void handleAnnotationListSelection() {
877 int i = fAnnotationList.getSelectionIndex();
878 String key = fAnnotationColorListModel[i][1];
879 RGB rgb = PreferenceConverter.getColor(fOverlayStore, key);
880 fAnnotationForegroundColorEditor.setColorValue(rgb);
881 key = fAnnotationColorListModel[i][2];
882 boolean showInText = fOverlayStore.getBoolean(key);
883 fShowInTextCheckBox.setSelection(showInText);
884 key = fAnnotationColorListModel[i][6];
886 fDecorationStyleCombo.setEnabled(showInText);
887 for (int j = 0; j < fAnnotationDecorationListModel.length; j++) {
888 String value = fOverlayStore.getString(key);
889 if (fAnnotationDecorationListModel[j][1].equals(value)) {
890 fDecorationStyleCombo.setText(fAnnotationDecorationListModel[j][0]);
895 fDecorationStyleCombo.setEnabled(false);
896 fDecorationStyleCombo.setText(fAnnotationDecorationListModel[1][0]); // set
909 key = fAnnotationColorListModel[i][3];
910 fShowInOverviewRulerCheckBox.setSelection(fOverlayStore.getBoolean(key));
911 key = fAnnotationColorListModel[i][4];
913 fHighlightInTextCheckBox.setSelection(fOverlayStore.getBoolean(key));
914 fHighlightInTextCheckBox.setEnabled(true);
916 fHighlightInTextCheckBox.setEnabled(false);
917 key = fAnnotationColorListModel[i][5];
919 fShowInVerticalRulerCheckBox.setSelection(fOverlayStore.getBoolean(key));
920 fShowInVerticalRulerCheckBox.setEnabled(true);
922 fShowInVerticalRulerCheckBox.setSelection(true);
923 fShowInVerticalRulerCheckBox.setEnabled(false);
926 private Control createSyntaxPage(Composite parent) {
927 Composite colorComposite = new Composite(parent, SWT.NULL);
928 colorComposite.setLayout(new GridLayout());
929 Group backgroundComposite = new Group(colorComposite, SWT.SHADOW_ETCHED_IN);
930 backgroundComposite.setLayout(new RowLayout());
931 backgroundComposite.setText(PHPUIMessages
932 .getString("PHPEditorPreferencePage.backgroundColor")); //$NON-NLS-1$
933 SelectionListener backgroundSelectionListener = new SelectionListener() {
934 public void widgetSelected(SelectionEvent e) {
935 boolean custom = fBackgroundCustomRadioButton.getSelection();
936 fBackgroundColorButton.setEnabled(custom);
937 fOverlayStore.setValue(
938 PreferenceConstants.EDITOR_BACKGROUND_DEFAULT_COLOR, !custom);
940 public void widgetDefaultSelected(SelectionEvent e) {
943 fBackgroundDefaultRadioButton = new Button(backgroundComposite, SWT.RADIO
945 fBackgroundDefaultRadioButton.setText(PHPUIMessages
946 .getString("PHPEditorPreferencePage.systemDefault")); //$NON-NLS-1$
947 fBackgroundDefaultRadioButton
948 .addSelectionListener(backgroundSelectionListener);
949 fBackgroundCustomRadioButton = new Button(backgroundComposite, SWT.RADIO
951 fBackgroundCustomRadioButton.setText(PHPUIMessages
952 .getString("PHPEditorPreferencePage.custom")); //$NON-NLS-1$
953 fBackgroundCustomRadioButton
954 .addSelectionListener(backgroundSelectionListener);
955 fBackgroundColorEditor = new ColorEditor(backgroundComposite);
956 fBackgroundColorButton = fBackgroundColorEditor.getButton();
957 // fUserDefinedPHPSyntaxFileFFE =
958 // new FileFieldEditor(
959 // IPreferenceConstants.PHP_USERDEF_XMLFILE,
960 // PHPPreferencesMessages.getString("PHPEditorSyntaxPreferencePage.syntaxdialog"),
962 // fUserDefinedPHPSyntaxFileFFE.setPreferencePage(this);
963 // fUserDefinedPHPSyntaxFileFFE.setPreferenceStore(getPreferenceStore());
964 // fUserDefinedPHPSyntaxFileFFE.load();
965 Label label = new Label(colorComposite, SWT.LEFT);
967 .setText(PHPUIMessages.getString("PHPEditorPreferencePage.foreground")); //$NON-NLS-1$
968 label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
969 Composite editorComposite = new Composite(colorComposite, SWT.NONE);
970 GridLayout layout = new GridLayout();
971 layout.numColumns = 2;
972 layout.marginHeight = 0;
973 layout.marginWidth = 0;
974 editorComposite.setLayout(layout);
975 GridData gd = new GridData(GridData.FILL_BOTH);
976 editorComposite.setLayoutData(gd);
977 fSyntaxColorList = new List(editorComposite, SWT.SINGLE | SWT.V_SCROLL
979 gd = new GridData(GridData.FILL_BOTH);
980 gd.heightHint = convertHeightInCharsToPixels(5);
981 fSyntaxColorList.setLayoutData(gd);
982 Composite stylesComposite = new Composite(editorComposite, SWT.NONE);
983 layout = new GridLayout();
984 layout.marginHeight = 0;
985 layout.marginWidth = 0;
986 layout.numColumns = 2;
987 stylesComposite.setLayout(layout);
988 stylesComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
989 label = new Label(stylesComposite, SWT.LEFT);
990 label.setText(PHPUIMessages.getString("PHPEditorPreferencePage.color")); //$NON-NLS-1$
992 gd.horizontalAlignment = GridData.BEGINNING;
993 label.setLayoutData(gd);
994 fSyntaxForegroundColorEditor = new ColorEditor(stylesComposite);
995 Button foregroundColorButton = fSyntaxForegroundColorEditor.getButton();
996 gd = new GridData(GridData.FILL_HORIZONTAL);
997 gd.horizontalAlignment = GridData.BEGINNING;
998 foregroundColorButton.setLayoutData(gd);
999 fBoldCheckBox = new Button(stylesComposite, SWT.CHECK);
1000 fBoldCheckBox.setText(PHPUIMessages
1001 .getString("PHPEditorPreferencePage.bold")); //$NON-NLS-1$
1002 gd = new GridData(GridData.FILL_HORIZONTAL);
1003 gd.horizontalAlignment = GridData.BEGINNING;
1004 gd.horizontalSpan = 2;
1005 fBoldCheckBox.setLayoutData(gd);
1006 label = new Label(colorComposite, SWT.LEFT);
1007 label.setText(PHPUIMessages.getString("PHPEditorPreferencePage.preview")); //$NON-NLS-1$
1008 label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
1009 Control previewer = createPreviewer(colorComposite);
1010 gd = new GridData(GridData.FILL_BOTH);
1011 gd.widthHint = convertWidthInCharsToPixels(20);
1012 gd.heightHint = convertHeightInCharsToPixels(5);
1013 previewer.setLayoutData(gd);
1014 fSyntaxColorList.addSelectionListener(new SelectionListener() {
1015 public void widgetDefaultSelected(SelectionEvent e) {
1018 public void widgetSelected(SelectionEvent e) {
1019 handleSyntaxColorListSelection();
1022 foregroundColorButton.addSelectionListener(new SelectionListener() {
1023 public void widgetDefaultSelected(SelectionEvent e) {
1026 public void widgetSelected(SelectionEvent e) {
1027 int i = fSyntaxColorList.getSelectionIndex();
1028 String key = fSyntaxColorListModel[i][1];
1029 PreferenceConverter.setValue(fOverlayStore, key,
1030 fSyntaxForegroundColorEditor.getColorValue());
1033 fBackgroundColorButton.addSelectionListener(new SelectionListener() {
1034 public void widgetDefaultSelected(SelectionEvent e) {
1037 public void widgetSelected(SelectionEvent e) {
1038 PreferenceConverter.setValue(fOverlayStore,
1039 PreferenceConstants.EDITOR_BACKGROUND_COLOR, fBackgroundColorEditor
1043 fBoldCheckBox.addSelectionListener(new SelectionListener() {
1044 public void widgetDefaultSelected(SelectionEvent e) {
1047 public void widgetSelected(SelectionEvent e) {
1048 int i = fSyntaxColorList.getSelectionIndex();
1049 String key = fSyntaxColorListModel[i][1];
1050 fOverlayStore.setValue(key + BOLD, fBoldCheckBox.getSelection());
1053 return colorComposite;
1055 private Control createPreviewer(Composite parent) {
1056 Preferences coreStore = createTemporaryCorePreferenceStore();
1057 fJavaTextTools = new JavaTextTools(fOverlayStore, coreStore, false);
1058 fPreviewViewer = new SourceViewer(parent, null, SWT.V_SCROLL | SWT.H_SCROLL
1060 fPreviewViewer.configure(new PHPSourceViewerConfiguration(fJavaTextTools,
1062 fPreviewViewer.getTextWidget().setFont(
1063 JFaceResources.getFontRegistry().get(JFaceResources.TEXT_FONT));
1064 fPreviewViewer.setEditable(false);
1065 initializeViewerColors(fPreviewViewer);
1066 String content = loadPreviewContentFromFile("ColorSettingPreviewCode.txt"); //$NON-NLS-1$
1067 IDocument document = new Document(content);
1068 // PHPEditorEnvironment pe;
1069 IDocumentPartitioner partitioner = fJavaTextTools
1070 .createDocumentPartitioner();
1071 partitioner.connect(document);
1072 document.setDocumentPartitioner(partitioner);
1073 fPreviewViewer.setDocument(document);
1074 fOverlayStore.addPropertyChangeListener(new IPropertyChangeListener() {
1075 public void propertyChange(PropertyChangeEvent event) {
1076 String p = event.getProperty();
1077 if (p.equals(PreferenceConstants.EDITOR_BACKGROUND_COLOR)
1078 || p.equals(PreferenceConstants.EDITOR_BACKGROUND_DEFAULT_COLOR)) {
1079 initializeViewerColors(fPreviewViewer);
1081 fPreviewViewer.invalidateTextPresentation();
1084 return fPreviewViewer.getControl();
1086 private Preferences createTemporaryCorePreferenceStore() {
1087 Preferences result = new Preferences();
1088 result.setValue(COMPILER_TASK_TAGS, "TASK"); //$NON-NLS-1$
1092 * Initializes the given viewer's colors.
1095 * the viewer to be initialized
1097 private void initializeViewerColors(ISourceViewer viewer) {
1098 IPreferenceStore store = fOverlayStore;
1099 if (store != null) {
1100 StyledText styledText = viewer.getTextWidget();
1101 // ---------- background color ----------------------
1103 .getBoolean(PreferenceConstants.EDITOR_BACKGROUND_DEFAULT_COLOR)
1105 : createColor(store, PreferenceConstants.EDITOR_BACKGROUND_COLOR,
1106 styledText.getDisplay());
1107 styledText.setBackground(color);
1108 if (fBackgroundColor != null)
1109 fBackgroundColor.dispose();
1110 fBackgroundColor = color;
1114 * Creates a color from the information stored in the given preference store.
1115 * Returns <code>null</code> if there is no such information available.
1117 private Color createColor(IPreferenceStore store, String key, Display display) {
1119 if (store.contains(key)) {
1120 if (store.isDefault(key))
1121 rgb = PreferenceConverter.getDefaultColor(store, key);
1123 rgb = PreferenceConverter.getColor(store, key);
1125 return new Color(display, rgb);
1129 // sets enabled flag for a control and all its sub-tree
1130 private static void setEnabled(Control control, boolean enable) {
1131 control.setEnabled(enable);
1132 if (control instanceof Composite) {
1133 Composite composite = (Composite) control;
1134 Control[] children = composite.getChildren();
1135 for (int i = 0; i < children.length; i++)
1136 setEnabled(children[i], enable);
1139 private Control createAppearancePage(Composite parent) {
1140 Composite appearanceComposite = new Composite(parent, SWT.NONE);
1141 GridLayout layout = new GridLayout();
1142 layout.numColumns = 2;
1143 appearanceComposite.setLayout(layout);
1144 String label = PHPUIMessages.getString("PHPEditorPreferencePage.textFont"); //$NON-NLS-1$
1145 addTextFontEditor(appearanceComposite, label, JFaceResources.TEXT_FONT);
1146 label = PHPUIMessages
1147 .getString("PHPEditorPreferencePage.displayedTabWidth"); //$NON-NLS-1$
1148 addTextField(appearanceComposite, label,
1149 PreferenceConstants.EDITOR_TAB_WIDTH, 3, 0, true);
1150 label = PHPUIMessages
1151 .getString("PHPEditorPreferencePage.printMarginColumn"); //$NON-NLS-1$
1152 addTextField(appearanceComposite, label,
1153 PreferenceConstants.EDITOR_PRINT_MARGIN_COLUMN, 3, 0, true);
1155 // PHPUIMessages.getString("PHPEditorPreferencePage.synchronizeOnCursor");
1157 // addCheckBox(appearanceComposite, label,
1158 // PreferenceConstants.EDITOR_SYNC_OUTLINE_ON_CURSOR_MOVE, 0);
1159 label = PHPUIMessages
1160 .getString("PHPEditorPreferencePage.showOverviewRuler"); //$NON-NLS-1$
1161 addCheckBox(appearanceComposite, label,
1162 PreferenceConstants.EDITOR_OVERVIEW_RULER, 0);
1163 label = PHPUIMessages.getString("PHPEditorPreferencePage.showLineNumbers"); //$NON-NLS-1$
1164 addCheckBox(appearanceComposite, label,
1165 PreferenceConstants.EDITOR_LINE_NUMBER_RULER, 0);
1166 label = PHPUIMessages
1167 .getString("PHPEditorPreferencePage.highlightMatchingBrackets"); //$NON-NLS-1$
1168 addCheckBox(appearanceComposite, label,
1169 PreferenceConstants.EDITOR_MATCHING_BRACKETS, 0);
1170 label = PHPUIMessages
1171 .getString("PHPEditorPreferencePage.highlightCurrentLine"); //$NON-NLS-1$
1172 addCheckBox(appearanceComposite, label,
1173 PreferenceConstants.EDITOR_CURRENT_LINE, 0);
1174 label = PHPUIMessages.getString("PHPEditorPreferencePage.showPrintMargin"); //$NON-NLS-1$
1175 addCheckBox(appearanceComposite, label,
1176 PreferenceConstants.EDITOR_PRINT_MARGIN, 0);
1177 Label l = new Label(appearanceComposite, SWT.LEFT);
1178 GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
1179 gd.horizontalSpan = 2;
1180 gd.heightHint = convertHeightInCharsToPixels(1) / 2;
1181 l.setLayoutData(gd);
1182 l = new Label(appearanceComposite, SWT.LEFT);
1183 l.setText(PHPUIMessages
1184 .getString("PHPEditorPreferencePage.appearanceOptions")); //$NON-NLS-1$
1185 gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
1186 gd.horizontalSpan = 2;
1187 l.setLayoutData(gd);
1188 Composite editorComposite = new Composite(appearanceComposite, SWT.NONE);
1189 layout = new GridLayout();
1190 layout.numColumns = 2;
1191 layout.marginHeight = 0;
1192 layout.marginWidth = 0;
1193 editorComposite.setLayout(layout);
1194 gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.FILL_VERTICAL);
1195 gd.horizontalSpan = 2;
1196 editorComposite.setLayoutData(gd);
1197 fAppearanceColorList = new List(editorComposite, SWT.SINGLE | SWT.V_SCROLL
1199 gd = new GridData(GridData.FILL_BOTH);
1200 gd.heightHint = convertHeightInCharsToPixels(5);
1201 fAppearanceColorList.setLayoutData(gd);
1202 Composite stylesComposite = new Composite(editorComposite, SWT.NONE);
1203 layout = new GridLayout();
1204 layout.marginHeight = 0;
1205 layout.marginWidth = 0;
1206 layout.numColumns = 2;
1207 stylesComposite.setLayout(layout);
1208 stylesComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
1209 l = new Label(stylesComposite, SWT.LEFT);
1210 l.setText(PHPUIMessages.getString("PHPEditorPreferencePage.color")); //$NON-NLS-1$
1211 gd = new GridData();
1212 gd.horizontalAlignment = GridData.BEGINNING;
1213 l.setLayoutData(gd);
1214 fAppearanceForegroundColorEditor = new ColorEditor(stylesComposite);
1215 Button foregroundColorButton = fAppearanceForegroundColorEditor.getButton();
1216 gd = new GridData(GridData.FILL_HORIZONTAL);
1217 gd.horizontalAlignment = GridData.BEGINNING;
1218 foregroundColorButton.setLayoutData(gd);
1219 fAppearanceColorList.addSelectionListener(new SelectionListener() {
1220 public void widgetDefaultSelected(SelectionEvent e) {
1223 public void widgetSelected(SelectionEvent e) {
1224 handleAppearanceColorListSelection();
1227 foregroundColorButton.addSelectionListener(new SelectionListener() {
1228 public void widgetDefaultSelected(SelectionEvent e) {
1231 public void widgetSelected(SelectionEvent e) {
1232 int i = fAppearanceColorList.getSelectionIndex();
1233 String key = fAppearanceColorListModel[i][1];
1234 PreferenceConverter.setValue(fOverlayStore, key,
1235 fAppearanceForegroundColorEditor.getColorValue());
1238 return appearanceComposite;
1240 private Control createAnnotationsPage(Composite parent) {
1241 Composite composite = new Composite(parent, SWT.NULL);
1242 GridLayout layout = new GridLayout();
1243 layout.numColumns = 2;
1244 composite.setLayout(layout);
1245 String text = PreferencesMessages
1246 .getString("JavaEditorPreferencePage.analyseAnnotationsWhileTyping"); //$NON-NLS-1$
1247 addCheckBox(composite, text,
1248 PreferenceConstants.EDITOR_EVALUTE_TEMPORARY_PROBLEMS, 0);
1249 text = PreferencesMessages
1250 .getString("JavaEditorPreferencePage.showQuickFixables"); //$NON-NLS-1$
1251 addCheckBox(composite, text,
1252 PreferenceConstants.EDITOR_CORRECTION_INDICATION, 0);
1253 addFiller(composite);
1254 Label label = new Label(composite, SWT.LEFT);
1255 label.setText(PreferencesMessages
1256 .getString("JavaEditorPreferencePage.annotationPresentationOptions")); //$NON-NLS-1$
1257 GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
1258 gd.horizontalSpan = 2;
1259 label.setLayoutData(gd);
1260 Composite editorComposite = new Composite(composite, SWT.NONE);
1261 layout = new GridLayout();
1262 layout.numColumns = 2;
1263 layout.marginHeight = 0;
1264 layout.marginWidth = 0;
1265 editorComposite.setLayout(layout);
1266 gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.FILL_VERTICAL);
1267 gd.horizontalSpan = 2;
1268 editorComposite.setLayoutData(gd);
1269 fAnnotationList = new List(editorComposite, SWT.SINGLE | SWT.V_SCROLL
1271 gd = new GridData(GridData.VERTICAL_ALIGN_BEGINNING
1272 | GridData.FILL_HORIZONTAL);
1273 gd.heightHint = convertHeightInCharsToPixels(10);
1274 fAnnotationList.setLayoutData(gd);
1275 Composite optionsComposite = new Composite(editorComposite, SWT.NONE);
1276 layout = new GridLayout();
1277 layout.marginHeight = 0;
1278 layout.marginWidth = 0;
1279 layout.numColumns = 2;
1280 optionsComposite.setLayout(layout);
1281 optionsComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
1282 fShowInTextCheckBox = new Button(optionsComposite, SWT.CHECK);
1283 fShowInTextCheckBox.setText(PreferencesMessages
1284 .getString("JavaEditorPreferencePage.annotations.showInText")); //$NON-NLS-1$
1285 gd = new GridData(GridData.FILL_HORIZONTAL);
1286 gd.horizontalAlignment = GridData.BEGINNING;
1287 gd.horizontalSpan = 2;
1288 fShowInTextCheckBox.setLayoutData(gd);
1289 fDecorationStyleCombo = new Combo(optionsComposite, SWT.READ_ONLY);
1290 for (int i = 0; i < fAnnotationDecorationListModel.length; i++)
1291 fDecorationStyleCombo.add(fAnnotationDecorationListModel[i][0]);
1292 gd = new GridData(GridData.FILL_HORIZONTAL);
1293 gd.horizontalAlignment = GridData.BEGINNING;
1294 gd.horizontalSpan = 2;
1295 gd.horizontalIndent = 20;
1296 fDecorationStyleCombo.setLayoutData(gd);
1297 fHighlightInTextCheckBox = new Button(optionsComposite, SWT.CHECK);
1298 fHighlightInTextCheckBox.setText(PreferencesMessages
1299 .getString("TextEditorPreferencePage.annotations.highlightInText")); //$NON-NLS-1$
1300 gd = new GridData(GridData.FILL_HORIZONTAL);
1301 gd.horizontalAlignment = GridData.BEGINNING;
1302 gd.horizontalSpan = 2;
1303 fHighlightInTextCheckBox.setLayoutData(gd);
1304 fShowInOverviewRulerCheckBox = new Button(optionsComposite, SWT.CHECK);
1305 fShowInOverviewRulerCheckBox.setText(PreferencesMessages
1306 .getString("JavaEditorPreferencePage.annotations.showInOverviewRuler")); //$NON-NLS-1$
1307 gd = new GridData(GridData.FILL_HORIZONTAL);
1308 gd.horizontalAlignment = GridData.BEGINNING;
1309 gd.horizontalSpan = 2;
1310 fShowInOverviewRulerCheckBox.setLayoutData(gd);
1311 fShowInVerticalRulerCheckBox = new Button(optionsComposite, SWT.CHECK);
1312 fShowInVerticalRulerCheckBox.setText(PreferencesMessages
1313 .getString("JavaEditorPreferencePage.annotations.showInVerticalRuler")); //$NON-NLS-1$
1314 gd = new GridData(GridData.FILL_HORIZONTAL);
1315 gd.horizontalAlignment = GridData.BEGINNING;
1316 gd.horizontalSpan = 2;
1317 fShowInVerticalRulerCheckBox.setLayoutData(gd);
1318 label = new Label(optionsComposite, SWT.LEFT);
1319 label.setText(PreferencesMessages
1320 .getString("JavaEditorPreferencePage.annotations.color")); //$NON-NLS-1$
1321 gd = new GridData();
1322 gd.horizontalAlignment = GridData.BEGINNING;
1323 label.setLayoutData(gd);
1324 fAnnotationForegroundColorEditor = new ColorEditor(optionsComposite);
1325 Button foregroundColorButton = fAnnotationForegroundColorEditor.getButton();
1326 gd = new GridData(GridData.FILL_HORIZONTAL);
1327 gd.horizontalAlignment = GridData.BEGINNING;
1328 foregroundColorButton.setLayoutData(gd);
1329 fAnnotationList.addSelectionListener(new SelectionListener() {
1330 public void widgetDefaultSelected(SelectionEvent e) {
1333 public void widgetSelected(SelectionEvent e) {
1334 handleAnnotationListSelection();
1337 fShowInTextCheckBox.addSelectionListener(new SelectionListener() {
1338 public void widgetDefaultSelected(SelectionEvent e) {
1341 public void widgetSelected(SelectionEvent e) {
1342 int i = fAnnotationList.getSelectionIndex();
1343 String key = fAnnotationColorListModel[i][2];
1344 fOverlayStore.setValue(key, fShowInTextCheckBox.getSelection());
1345 String decorationKey = fAnnotationColorListModel[i][6];
1346 fDecorationStyleCombo.setEnabled(decorationKey != null
1347 && fShowInTextCheckBox.getSelection());
1350 fHighlightInTextCheckBox.addSelectionListener(new SelectionListener() {
1351 public void widgetDefaultSelected(SelectionEvent e) {
1354 public void widgetSelected(SelectionEvent e) {
1355 int i = fAnnotationList.getSelectionIndex();
1356 String key = fAnnotationColorListModel[i][4];
1357 fOverlayStore.setValue(key, fHighlightInTextCheckBox.getSelection());
1360 fShowInOverviewRulerCheckBox.addSelectionListener(new SelectionListener() {
1361 public void widgetDefaultSelected(SelectionEvent e) {
1364 public void widgetSelected(SelectionEvent e) {
1365 int i = fAnnotationList.getSelectionIndex();
1366 String key = fAnnotationColorListModel[i][3];
1368 .setValue(key, fShowInOverviewRulerCheckBox.getSelection());
1371 fShowInVerticalRulerCheckBox.addSelectionListener(new SelectionListener() {
1372 public void widgetDefaultSelected(SelectionEvent e) {
1375 public void widgetSelected(SelectionEvent e) {
1376 int i = fAnnotationList.getSelectionIndex();
1377 String key = fAnnotationColorListModel[i][5];
1379 .setValue(key, fShowInVerticalRulerCheckBox.getSelection());
1382 foregroundColorButton.addSelectionListener(new SelectionListener() {
1383 public void widgetDefaultSelected(SelectionEvent e) {
1386 public void widgetSelected(SelectionEvent e) {
1387 int i = fAnnotationList.getSelectionIndex();
1388 String key = fAnnotationColorListModel[i][1];
1389 PreferenceConverter.setValue(fOverlayStore, key,
1390 fAnnotationForegroundColorEditor.getColorValue());
1393 fDecorationStyleCombo.addSelectionListener(new SelectionListener() {
1397 public void widgetDefaultSelected(SelectionEvent e) {
1403 public void widgetSelected(SelectionEvent e) {
1404 int i = fAnnotationList.getSelectionIndex();
1405 String key = fAnnotationColorListModel[i][6];
1407 for (int j = 0; j < fAnnotationDecorationListModel.length; j++) {
1408 if (fAnnotationDecorationListModel[j][0]
1409 .equals(fDecorationStyleCombo.getText())) {
1410 fOverlayStore.setValue(key, fAnnotationDecorationListModel[j][1]);
1419 private String[][] createAnnotationTypeListModel(
1420 MarkerAnnotationPreferences preferences) {
1421 ArrayList listModelItems = new ArrayList();
1422 SortedSet sortedPreferences = new TreeSet(new Comparator() {
1424 * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
1426 public int compare(Object o1, Object o2) {
1427 if (!(o2 instanceof AnnotationPreference))
1429 if (!(o1 instanceof AnnotationPreference))
1431 AnnotationPreference a1 = (AnnotationPreference) o1;
1432 AnnotationPreference a2 = (AnnotationPreference) o2;
1433 return Collator.getInstance().compare(a1.getPreferenceLabel(),
1434 a2.getPreferenceLabel());
1437 sortedPreferences.addAll(preferences.getAnnotationPreferences());
1438 Iterator e = sortedPreferences.iterator();
1439 while (e.hasNext()) {
1440 AnnotationPreference info = (AnnotationPreference) e.next();
1441 listModelItems.add(new String[]{info.getPreferenceLabel(),
1442 info.getColorPreferenceKey(), info.getTextPreferenceKey(),
1443 info.getOverviewRulerPreferenceKey(),
1444 info.getHighlightPreferenceKey(),
1445 info.getVerticalRulerPreferenceKey(),
1446 info.getTextStylePreferenceKey()});
1448 String[][] items = new String[listModelItems.size()][];
1449 listModelItems.toArray(items);
1452 private Control createBehaviourPage(Composite parent) {
1453 Composite composite = new Composite(parent, SWT.NULL);
1454 GridLayout layout = new GridLayout();
1455 layout.numColumns = 2;
1456 composite.setLayout(layout);
1459 // PHPUIMessages.getString("PHPEditorPreferencePage.wrapStrings");
1461 // addCheckBox(composite, label, PreferenceConstants.EDITOR_WRAP_STRINGS,
1463 // label= PHPUIMessages.getString("PHPEditorPreferencePage.smartHomeEnd");
1465 // addCheckBox(composite, label, PreferenceConstants.EDITOR_SMART_HOME_END,
1468 // label= PHPUIMessages.getString("PHPEditorPreferencePage.smartPaste");
1470 // addCheckBox(composite, label, PreferenceConstants.EDITOR_SMART_PASTE,
1472 label = PHPUIMessages
1473 .getString("PHPEditorPreferencePage.insertSpaceForTabs"); //$NON-NLS-1$
1474 addCheckBox(composite, label, PreferenceConstants.EDITOR_SPACES_FOR_TABS, 1);
1475 label = PHPUIMessages.getString("PHPEditorPreferencePage.closeStringsPHP"); //$NON-NLS-1$
1476 addCheckBox(composite, label, PreferenceConstants.EDITOR_CLOSE_STRINGS_PHP,
1478 label = PHPUIMessages.getString("PHPEditorPreferencePage.closeBracketsPHP"); //$NON-NLS-1$
1479 addCheckBox(composite, label,
1480 PreferenceConstants.EDITOR_CLOSE_BRACKETS_PHP, 1);
1481 // label= PHPUIMessages.getString("PHPEditorPreferencePage.closeBraces");
1483 // addCheckBox(composite, label, PreferenceConstants.EDITOR_CLOSE_BRACES,
1486 // label= PHPUIMessages.getString("PHPEditorPreferencePage.closePHPDocs");
1488 // Button button= addCheckBox(composite, label,
1489 // PreferenceConstants.EDITOR_CLOSE_JAVADOCS, 1);
1491 // label= PHPUIMessages.getString("PHPEditorPreferencePage.addPHPDocTags");
1493 // fAddJavaDocTagsButton= addCheckBox(composite, label,
1494 // PreferenceConstants.EDITOR_ADD_JAVADOC_TAGS, 1);
1495 // createDependency(button, fAddJavaDocTagsButton);
1496 // label= PHPUIMessages.getString("PHPEditorPreferencePage.formatPHPDocs");
1498 // addCheckBox(composite, label,
1499 // PreferenceConstants.EDITOR_FORMAT_JAVADOCS, 1);
1501 label = PHPUIMessages.getString("PHPEditorPreferencePage.closeStringsHTML"); //$NON-NLS-1$
1502 addCheckBox(composite, label,
1503 PreferenceConstants.EDITOR_CLOSE_STRINGS_HTML, 1);
1504 label = PHPUIMessages
1505 .getString("PHPEditorPreferencePage.closeBracketsHTML"); //$NON-NLS-1$
1506 addCheckBox(composite, label,
1507 PreferenceConstants.EDITOR_CLOSE_BRACKETS_HTML, 1);
1511 private static void indent(Control control) {
1512 GridData gridData = new GridData();
1513 gridData.horizontalIndent = 20;
1514 control.setLayoutData(gridData);
1516 private static void createDependency(final Button master, final Control slave) {
1518 master.addSelectionListener(new SelectionListener() {
1519 public void widgetSelected(SelectionEvent e) {
1520 slave.setEnabled(master.getSelection());
1522 public void widgetDefaultSelected(SelectionEvent e) {
1526 private Control createContentAssistPage(Composite parent) {
1527 Composite contentAssistComposite = new Composite(parent, SWT.NULL);
1528 GridLayout layout = new GridLayout();
1529 layout.numColumns = 2;
1530 contentAssistComposite.setLayout(layout);
1533 // PHPUIMessages.getString("PHPEditorPreferencePage.insertSingleProposalsAutomatically");
1535 // addCheckBox(contentAssistComposite, label,
1536 // PreferenceConstants.CODEASSIST_AUTOINSERT, 0);
1539 // PHPUIMessages.getString("PHPEditorPreferencePage.showOnlyProposalsVisibleInTheInvocationContext");
1541 // addCheckBox(contentAssistComposite, label,
1542 // PreferenceConstants.CODEASSIST_SHOW_VISIBLE_PROPOSALS, 0);
1545 // PHPUIMessages.getString("PHPEditorPreferencePage.presentProposalsInAlphabeticalOrder");
1547 // addCheckBox(contentAssistComposite, label,
1548 // PreferenceConstants.CODEASSIST_ORDER_PROPOSALS, 0);
1551 // PHPUIMessages.getString("PHPEditorPreferencePage.automaticallyAddImportInsteadOfQualifiedName");
1553 // addCheckBox(contentAssistComposite, label,
1554 // PreferenceConstants.CODEASSIST_ADDIMPORT, 0);
1557 // PHPUIMessages.getString("PHPEditorPreferencePage.insertCompletion");
1559 // addCheckBox(contentAssistComposite, label,
1560 // PreferenceConstants.CODEASSIST_INSERT_COMPLETION, 0);
1563 // PHPUIMessages.getString("PHPEditorPreferencePage.fillArgumentNamesOnMethodCompletion");
1565 // Button button = addCheckBox(contentAssistComposite, label,
1566 // PreferenceConstants.CODEASSIST_FILL_ARGUMENT_NAMES, 0);
1569 // PHPUIMessages.getString("PHPEditorPreferencePage.guessArgumentNamesOnMethodCompletion");
1571 // fGuessMethodArgumentsButton =
1572 // addCheckBox(contentAssistComposite, label,
1573 // PreferenceConstants.CODEASSIST_GUESS_METHOD_ARGUMENTS, 0);
1574 // createDependency(button, fGuessMethodArgumentsButton);
1575 label = PHPUIMessages
1576 .getString("PHPEditorPreferencePage.enableAutoActivation"); //$NON-NLS-1$
1577 final Button autoactivation = addCheckBox(contentAssistComposite, label,
1578 PreferenceConstants.CODEASSIST_AUTOACTIVATION, 0);
1579 label = PHPUIMessages
1580 .getString("PHPEditorPreferencePage.autoActivationDelay"); //$NON-NLS-1$
1581 fAutoInsertDelayText = addTextField(contentAssistComposite, label,
1582 PreferenceConstants.CODEASSIST_AUTOACTIVATION_DELAY, 4, 0, true);
1583 label = PHPUIMessages
1584 .getString("PHPEditorPreferencePage.autoActivationTriggersForPHP"); //$NON-NLS-1$
1585 fAutoInsertJavaTriggerText = addTextField(contentAssistComposite, label,
1586 PreferenceConstants.CODEASSIST_AUTOACTIVATION_TRIGGERS_JAVA, 4, 0,
1588 label = PHPUIMessages
1589 .getString("PHPEditorPreferencePage.autoActivationTriggersForPHPDoc"); //$NON-NLS-1$
1590 fAutoInsertJavaDocTriggerText = addTextField(contentAssistComposite, label,
1591 PreferenceConstants.CODEASSIST_AUTOACTIVATION_TRIGGERS_JAVADOC, 4, 0,
1593 label = PHPUIMessages
1594 .getString("PHPEditorPreferencePage.autoActivationTriggersForHTML"); //$NON-NLS-1$
1595 fAutoInsertHTMLTriggerText = addTextField(contentAssistComposite, label,
1596 PreferenceConstants.CODEASSIST_AUTOACTIVATION_TRIGGERS_HTML, 4, 0,
1598 label = PHPUIMessages
1599 .getString("PHPEditorPreferencePage.backgroundForCompletionProposals"); //$NON-NLS-1$
1600 addColorButton(contentAssistComposite, label,
1601 PreferenceConstants.CODEASSIST_PROPOSALS_BACKGROUND, 0);
1602 label = PHPUIMessages
1603 .getString("PHPEditorPreferencePage.foregroundForCompletionProposals"); //$NON-NLS-1$
1604 addColorButton(contentAssistComposite, label,
1605 PreferenceConstants.CODEASSIST_PROPOSALS_FOREGROUND, 0);
1607 // PHPUIMessages.getString("PHPEditorPreferencePage.backgroundForMethodParameters");
1609 // addColorButton(contentAssistComposite, label,
1610 // PreferenceConstants.CODEASSIST_PARAMETERS_BACKGROUND, 0);
1613 // PHPUIMessages.getString("PHPEditorPreferencePage.foregroundForMethodParameters");
1615 // addColorButton(contentAssistComposite, label,
1616 // PreferenceConstants.CODEASSIST_PARAMETERS_FOREGROUND, 0);
1618 // PHPUIMessages.getString("PHPEditorPreferencePage.backgroundForCompletionReplacement");
1620 // addColorButton(contentAssistComposite, label,
1621 // PreferenceConstants.CODEASSIST_REPLACEMENT_BACKGROUND, 0);
1624 // PHPUIMessages.getString("PHPEditorPreferencePage.foregroundForCompletionReplacement");
1626 // addColorButton(contentAssistComposite, label,
1627 // PreferenceConstants.CODEASSIST_REPLACEMENT_FOREGROUND, 0);
1628 autoactivation.addSelectionListener(new SelectionAdapter() {
1629 public void widgetSelected(SelectionEvent e) {
1630 updateAutoactivationControls();
1633 return contentAssistComposite;
1636 * @see PreferencePage#createContents(Composite)
1638 protected Control createContents(Composite parent) {
1639 initializeDefaultColors();
1640 fOverlayStore.load();
1641 fOverlayStore.start();
1642 TabFolder folder = new TabFolder(parent, SWT.NONE);
1643 folder.setLayout(new TabFolderLayout());
1644 folder.setLayoutData(new GridData(GridData.FILL_BOTH));
1645 TabItem item = new TabItem(folder, SWT.NONE);
1646 item.setText(PHPUIMessages.getString("PHPEditorPreferencePage.general")); //$NON-NLS-1$
1647 item.setControl(createAppearancePage(folder));
1648 item = new TabItem(folder, SWT.NONE);
1649 item.setText(PHPUIMessages.getString("PHPEditorPreferencePage.colors")); //$NON-NLS-1$
1650 item.setControl(createSyntaxPage(folder));
1651 item = new TabItem(folder, SWT.NONE);
1652 item.setText(PHPUIMessages.getString("PHPEditorPreferencePage.codeAssist")); //$NON-NLS-1$
1653 item.setControl(createContentAssistPage(folder));
1654 item = new TabItem(folder, SWT.NONE);
1655 item.setText(PHPUIMessages
1656 .getString("PHPEditorPreferencePage.annotationsTab.title")); //$NON-NLS-1$
1657 item.setControl(createAnnotationsPage(folder));
1658 item = new TabItem(folder, SWT.NONE);
1659 item.setText(PHPUIMessages
1660 .getString("PHPEditorPreferencePage.behaviourTab.title")); //$NON-NLS-1$
1661 item.setControl(createBehaviourPage(folder));
1662 item= new TabItem(folder, SWT.NONE);
1663 item.setText(PHPUIMessages.getString("PHPEditorPreferencePage.hoverTab.title"));
1665 // fJavaEditorHoverConfigurationBlock= new
1666 // JavaEditorHoverConfigurationBlock(fOverlayStore);
1667 // item.setControl(fJavaEditorHoverConfigurationBlock.createControl(folder));
1671 private void initialize() {
1672 fFontEditor.setPreferenceStore(getPreferenceStore());
1673 fFontEditor.setPreferencePage(this);
1676 for (int i = 0; i < fSyntaxColorListModel.length; i++)
1677 fSyntaxColorList.add(fSyntaxColorListModel[i][0]);
1678 fSyntaxColorList.getDisplay().asyncExec(new Runnable() {
1680 if (fSyntaxColorList != null && !fSyntaxColorList.isDisposed()) {
1681 fSyntaxColorList.select(0);
1682 handleSyntaxColorListSelection();
1686 for (int i = 0; i < fAppearanceColorListModel.length; i++)
1687 fAppearanceColorList.add(fAppearanceColorListModel[i][0]);
1688 fAppearanceColorList.getDisplay().asyncExec(new Runnable() {
1690 if (fAppearanceColorList != null && !fAppearanceColorList.isDisposed()) {
1691 fAppearanceColorList.select(0);
1692 handleAppearanceColorListSelection();
1696 for (int i = 0; i < fAnnotationColorListModel.length; i++)
1697 fAnnotationList.add(fAnnotationColorListModel[i][0]);
1698 fAnnotationList.getDisplay().asyncExec(new Runnable() {
1700 if (fAnnotationList != null && !fAnnotationList.isDisposed()) {
1701 fAnnotationList.select(0);
1702 handleAnnotationListSelection();
1706 // for (int i= 0; i < fContentAssistColorListModel.length; i++)
1707 // fContentAssistColorList.add(fContentAssistColorListModel[i][0]);
1708 // fContentAssistColorList.getDisplay().asyncExec(new Runnable() {
1709 // public void run() {
1710 // if (fContentAssistColorList != null &&
1711 // !fContentAssistColorList.isDisposed()) {
1712 // fContentAssistColorList.select(0);
1713 // handleContentAssistColorListSelection();
1718 private void initializeFields() {
1719 Iterator e = fColorButtons.keySet().iterator();
1720 while (e.hasNext()) {
1721 ColorEditor c = (ColorEditor) e.next();
1722 String key = (String) fColorButtons.get(c);
1723 RGB rgb = PreferenceConverter.getColor(fOverlayStore, key);
1724 c.setColorValue(rgb);
1726 e = fCheckBoxes.keySet().iterator();
1727 while (e.hasNext()) {
1728 Button b = (Button) e.next();
1729 String key = (String) fCheckBoxes.get(b);
1730 b.setSelection(fOverlayStore.getBoolean(key));
1732 e = fTextFields.keySet().iterator();
1733 while (e.hasNext()) {
1734 Text t = (Text) e.next();
1735 String key = (String) fTextFields.get(t);
1736 t.setText(fOverlayStore.getString(key));
1738 RGB rgb = PreferenceConverter.getColor(fOverlayStore,
1739 PreferenceConstants.EDITOR_BACKGROUND_COLOR);
1740 fBackgroundColorEditor.setColorValue(rgb);
1741 boolean default_ = fOverlayStore
1742 .getBoolean(PreferenceConstants.EDITOR_BACKGROUND_DEFAULT_COLOR);
1743 fBackgroundDefaultRadioButton.setSelection(default_);
1744 fBackgroundCustomRadioButton.setSelection(!default_);
1745 fBackgroundColorButton.setEnabled(!default_);
1746 // boolean closeJavaDocs=
1747 // fOverlayStore.getBoolean(PreferenceConstants.EDITOR_CLOSE_JAVADOCS);
1748 // fAddJavaDocTagsButton.setEnabled(closeJavaDocs);
1749 // boolean fillMethodArguments =
1750 // fOverlayStore.getBoolean(PreferenceConstants.CODEASSIST_FILL_ARGUMENT_NAMES);
1751 // fGuessMethodArgumentsButton.setEnabled(fillMethodArguments);
1752 updateAutoactivationControls();
1753 // fJavaEditorHoverConfigurationBlock.initializeFields();
1756 private void initializeDefaultColors() {
1757 if (!getPreferenceStore().contains(PreferenceConstants.EDITOR_BACKGROUND_COLOR)) {
1758 RGB rgb= getControl().getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND).getRGB();
1759 PreferenceConverter.setDefault(fOverlayStore, PreferenceConstants.EDITOR_BACKGROUND_COLOR, rgb);
1760 PreferenceConverter.setDefault(getPreferenceStore(), PreferenceConstants.EDITOR_BACKGROUND_COLOR, rgb);
1762 if (!getPreferenceStore().contains(PreferenceConstants.EDITOR_FOREGROUND_COLOR)) {
1763 RGB rgb= getControl().getDisplay().getSystemColor(SWT.COLOR_LIST_FOREGROUND).getRGB();
1764 PreferenceConverter.setDefault(fOverlayStore, PreferenceConstants.EDITOR_FOREGROUND_COLOR, rgb);
1765 PreferenceConverter.setDefault(getPreferenceStore(), PreferenceConstants.EDITOR_FOREGROUND_COLOR, rgb);
1769 private void updateAutoactivationControls() {
1770 boolean autoactivation = fOverlayStore
1771 .getBoolean(PreferenceConstants.CODEASSIST_AUTOACTIVATION);
1772 fAutoInsertDelayText.setEnabled(autoactivation);
1773 fAutoInsertJavaTriggerText.setEnabled(autoactivation);
1774 fAutoInsertJavaDocTriggerText.setEnabled(autoactivation);
1775 fAutoInsertHTMLTriggerText.setEnabled(autoactivation);
1778 * @see PreferencePage#performOk()
1780 public boolean performOk() {
1781 fFontEditor.store();
1782 // fJavaEditorHoverConfigurationBlock.performOk();
1783 fOverlayStore.propagate();
1784 // fUserDefinedPHPSyntaxFileFFE.store();
1785 PHPeclipsePlugin.getDefault().savePluginPreferences();
1789 * @see PreferencePage#performDefaults()
1791 protected void performDefaults() {
1792 fFontEditor.loadDefault();
1793 fOverlayStore.loadDefaults();
1795 // fUserDefinedPHPSyntaxFileFFE.loadDefault();
1796 handleSyntaxColorListSelection();
1797 handleAppearanceColorListSelection();
1798 handleAnnotationListSelection();
1799 // handleContentAssistColorListSelection();
1800 super.performDefaults();
1801 fPreviewViewer.invalidateTextPresentation();
1804 * @see DialogPage#dispose()
1806 public void dispose() {
1807 if (fJavaTextTools != null) {
1808 fJavaTextTools = null;
1810 fFontEditor.setPreferencePage(null);
1811 fFontEditor.setPreferenceStore(null);
1812 if (fOverlayStore != null) {
1813 fOverlayStore.stop();
1814 fOverlayStore = null;
1818 private Control addColorButton(Composite composite, String label, String key,
1820 Label labelControl = new Label(composite, SWT.NONE);
1821 labelControl.setText(label);
1822 GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
1823 gd.horizontalIndent = indentation;
1824 labelControl.setLayoutData(gd);
1825 ColorEditor editor = new ColorEditor(composite);
1826 Button button = editor.getButton();
1827 button.setData(editor);
1828 gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
1829 button.setLayoutData(gd);
1830 button.addSelectionListener(fColorButtonListener);
1831 fColorButtons.put(editor, key);
1834 private void addFiller(Composite composite) {
1835 Label filler = new Label(composite, SWT.LEFT);
1836 GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
1837 gd.horizontalSpan = 2;
1838 gd.heightHint = convertHeightInCharsToPixels(1) / 2;
1839 filler.setLayoutData(gd);
1841 private Button addCheckBox(Composite parent, String label, String key,
1843 Button checkBox = new Button(parent, SWT.CHECK);
1844 checkBox.setText(label);
1845 GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
1846 gd.horizontalIndent = indentation;
1847 gd.horizontalSpan = 2;
1848 checkBox.setLayoutData(gd);
1849 checkBox.addSelectionListener(fCheckBoxListener);
1850 fCheckBoxes.put(checkBox, key);
1853 private Control addTextField(Composite composite, String label, String key,
1854 int textLimit, int indentation, boolean isNumber) {
1855 Label labelControl = new Label(composite, SWT.NONE);
1856 labelControl.setText(label);
1857 GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
1858 gd.horizontalIndent = indentation;
1859 labelControl.setLayoutData(gd);
1860 Text textControl = new Text(composite, SWT.BORDER | SWT.SINGLE);
1861 gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
1862 gd.widthHint = convertWidthInCharsToPixels(textLimit + 1);
1863 textControl.setLayoutData(gd);
1864 textControl.setTextLimit(textLimit);
1865 fTextFields.put(textControl, key);
1867 fNumberFields.add(textControl);
1868 textControl.addModifyListener(fNumberFieldListener);
1870 textControl.addModifyListener(fTextFieldListener);
1874 private void addTextFontEditor(Composite parent, String label, String key) {
1875 Composite editorComposite = new Composite(parent, SWT.NONE);
1876 GridLayout layout = new GridLayout();
1877 layout.numColumns = 3;
1878 editorComposite.setLayout(layout);
1879 fFontEditor = new WorkbenchChainedTextFontFieldEditor(key, label,
1881 fFontEditor.setChangeButtonText(PHPUIMessages
1882 .getString("PHPEditorPreferencePage.change")); //$NON-NLS-1$
1883 GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
1884 gd.horizontalSpan = 2;
1885 editorComposite.setLayoutData(gd);
1887 private String loadPreviewContentFromFile(String filename) {
1889 String separator = System.getProperty("line.separator"); //$NON-NLS-1$
1890 StringBuffer buffer = new StringBuffer(512);
1891 BufferedReader reader = null;
1893 reader = new BufferedReader(new InputStreamReader(getClass()
1894 .getResourceAsStream(filename)));
1895 while ((line = reader.readLine()) != null) {
1896 buffer.append(line);
1897 buffer.append(separator);
1899 } catch (IOException io) {
1900 PHPeclipsePlugin.log(io);
1902 if (reader != null) {
1905 } catch (IOException e) {
1909 return buffer.toString();
1911 private void numberFieldChanged(Text textControl) {
1912 String number = textControl.getText();
1913 IStatus status = validatePositiveNumber(number);
1914 if (!status.matches(IStatus.ERROR))
1915 fOverlayStore.setValue((String) fTextFields.get(textControl), number);
1916 updateStatus(status);
1918 private IStatus validatePositiveNumber(String number) {
1919 StatusInfo status = new StatusInfo();
1920 if (number.length() == 0) {
1921 status.setError(PHPUIMessages
1922 .getString("PHPEditorPreferencePage.empty_input")); //$NON-NLS-1$
1925 int value = Integer.parseInt(number);
1927 status.setError(PHPUIMessages.getFormattedString(
1928 "PHPEditorPreferencePage.invalid_input", number)); //$NON-NLS-1$
1929 } catch (NumberFormatException e) {
1930 status.setError(PHPUIMessages.getFormattedString(
1931 "PHPEditorPreferencePage.invalid_input", number)); //$NON-NLS-1$
1936 private void updateStatus(IStatus status) {
1937 if (!status.matches(IStatus.ERROR)) {
1938 for (int i = 0; i < fNumberFields.size(); i++) {
1939 Text text = (Text) fNumberFields.get(i);
1940 IStatus s = validatePositiveNumber(text.getText());
1941 status = StatusUtil.getMoreSevere(s, status);
1944 setValid(!status.matches(IStatus.ERROR));
1945 StatusUtil.applyToStatusLine(this, status);
1948 * @deprecated Inline to avoid reference to preference page
1950 public static boolean indicateQuixFixableProblems() {
1951 return PreferenceConstants.getPreferenceStore().getBoolean(
1952 PreferenceConstants.EDITOR_CORRECTION_INDICATION);
1955 * @deprecated Inline to avoid reference to preference page
1957 // static public boolean synchronizeOutlineOnCursorMove() {
1959 // PreferenceConstants.getPreferenceStore().getBoolean(PreferenceConstants.EDITOR_SYNC_OUTLINE_ON_CURSOR_MOVE);