1 /******************************************************************************* 2 * Copyright (c) 2000, 2004 IBM Corporation 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 7 * 8 * Contributors: 9 * IBM Corporation - initial API and implementation 10 *******************************************************************************/ 11 12 package net.sourceforge.phpdt.internal.ui.preferences; 13 14 import java.util.ArrayList; 15 import java.util.HashMap; 16 import java.util.Iterator; 17 import java.util.Map; 18 19 import net.sourceforge.phpdt.internal.ui.dialogs.StatusInfo; 20 import net.sourceforge.phpdt.internal.ui.dialogs.StatusUtil; 21 import net.sourceforge.phpdt.internal.ui.util.PixelConverter; 22 import net.sourceforge.phpdt.ui.PreferenceConstants; 23 24 import org.eclipse.core.runtime.IStatus; 25 import org.eclipse.jface.preference.PreferenceConverter; 26 import org.eclipse.jface.preference.PreferencePage; 27 import org.eclipse.jface.text.Assert; 28 import org.eclipse.swt.SWT; 29 import org.eclipse.swt.events.ModifyEvent; 30 import org.eclipse.swt.events.ModifyListener; 31 import org.eclipse.swt.events.SelectionAdapter; 32 import org.eclipse.swt.events.SelectionEvent; 33 import org.eclipse.swt.events.SelectionListener; 34 import org.eclipse.swt.graphics.RGB; 35 import org.eclipse.swt.layout.GridData; 36 import org.eclipse.swt.layout.GridLayout; 37 import org.eclipse.swt.widgets.Button; 38 import org.eclipse.swt.widgets.Composite; 39 import org.eclipse.swt.widgets.Control; 40 import org.eclipse.swt.widgets.Label; 41 import org.eclipse.swt.widgets.List; 42 import org.eclipse.swt.widgets.Text; 43 44 /** 45 * Configures the code assist preferences. 46 * 47 * @since 3.0 48 */ 49 class CodeAssistConfigurationBlock implements IPreferenceConfigurationBlock { 50 51 private OverlayPreferenceStore fStore; 52 53 private PreferencePage fMainPreferencePage; 54 55 private List fContentAssistColorList; 56 57 private ColorEditor fContentAssistColorEditor; 58 59 private Control fAutoInsertDelayText; 60 61 private Control fAutoInsertJavaTriggerText; 62 63 private Control fAutoInsertJavaDocTriggerText; 64 65 private Control fAutoInsertHTMLTriggerText; 66 67 private Label fAutoInsertDelayLabel; 68 69 private Label fAutoInsertJavaTriggerLabel; 70 71 private Label fAutoInsertJavaDocTriggerLabel; 72 73 private Label fAutoInsertHTMLTriggerLabel; 74 75 // private Button fCompletionInsertsRadioButton; 76 // private Button fCompletionOverwritesRadioButton; 77 /** 78 * List of master/slave listeners when there's a dependency. 79 * 80 * @see #createDependency(Button, String, Control) 81 * @since 3.0 82 */ 83 private ArrayList fMasterSlaveListeners = new ArrayList(); 84 85 private final String[][] fContentAssistColorListModel = new String[][] { 86 { 87 PreferencesMessages 88 .getString("JavaEditorPreferencePage.backgroundForCompletionProposals"), PreferenceConstants.CODEASSIST_PROPOSALS_BACKGROUND }, //$NON-NLS-1$ 89 { 90 PreferencesMessages 91 .getString("JavaEditorPreferencePage.foregroundForCompletionProposals"), PreferenceConstants.CODEASSIST_PROPOSALS_FOREGROUND }, //$NON-NLS-1$ 92 // {PreferencesMessages.getString("JavaEditorPreferencePage.backgroundForMethodParameters"), 93 // PreferenceConstants.CODEASSIST_PARAMETERS_BACKGROUND }, 94 // //$NON-NLS-1$ 95 // {PreferencesMessages.getString("JavaEditorPreferencePage.foregroundForMethodParameters"), 96 // PreferenceConstants.CODEASSIST_PARAMETERS_FOREGROUND }, 97 // //$NON-NLS-1$ 98 // {PreferencesMessages.getString("JavaEditorPreferencePage.backgroundForCompletionReplacement"), 99 // PreferenceConstants.CODEASSIST_REPLACEMENT_BACKGROUND }, 100 // //$NON-NLS-1$ 101 // {PreferencesMessages.getString("JavaEditorPreferencePage.foregroundForCompletionReplacement"), 102 // PreferenceConstants.CODEASSIST_REPLACEMENT_FOREGROUND } 103 // //$NON-NLS-1$ 104 }; 105 106 private Map fCheckBoxes = new HashMap(); 107 108 private SelectionListener fCheckBoxListener = new SelectionListener() { 109 public void widgetDefaultSelected(SelectionEvent e) { 110 } 111 112 public void widgetSelected(SelectionEvent e) { 113 Button button = (Button) e.widget; 114 fStore.setValue((String) fCheckBoxes.get(button), button 115 .getSelection()); 116 } 117 }; 118 119 private Map fTextFields = new HashMap(); 120 121 private ModifyListener fTextFieldListener = new ModifyListener() { 122 public void modifyText(ModifyEvent e) { 123 Text text = (Text) e.widget; 124 fStore.setValue((String) fTextFields.get(text), text.getText()); 125 } 126 }; 127 128 private ArrayList fNumberFields = new ArrayList(); 129 130 private ModifyListener fNumberFieldListener = new ModifyListener() { 131 public void modifyText(ModifyEvent e) { 132 numberFieldChanged((Text) e.widget); 133 } 134 }; 135 CodeAssistConfigurationBlock(PreferencePage mainPreferencePage, OverlayPreferenceStore store)136 public CodeAssistConfigurationBlock(PreferencePage mainPreferencePage, 137 OverlayPreferenceStore store) { 138 Assert.isNotNull(mainPreferencePage); 139 Assert.isNotNull(store); 140 fStore = store; 141 fStore.addKeys(createOverlayStoreKeys()); 142 fMainPreferencePage = mainPreferencePage; 143 } 144 createOverlayStoreKeys()145 private OverlayPreferenceStore.OverlayKey[] createOverlayStoreKeys() { 146 147 ArrayList overlayKeys = new ArrayList(); 148 149 overlayKeys.add(new OverlayPreferenceStore.OverlayKey( 150 OverlayPreferenceStore.BOOLEAN, 151 PreferenceConstants.CODEASSIST_AUTOACTIVATION)); 152 overlayKeys.add(new OverlayPreferenceStore.OverlayKey( 153 OverlayPreferenceStore.INT, 154 PreferenceConstants.CODEASSIST_AUTOACTIVATION_DELAY)); 155 overlayKeys.add(new OverlayPreferenceStore.OverlayKey( 156 OverlayPreferenceStore.BOOLEAN, 157 PreferenceConstants.CODEASSIST_AUTOINSERT)); 158 overlayKeys.add(new OverlayPreferenceStore.OverlayKey( 159 OverlayPreferenceStore.STRING, 160 PreferenceConstants.CODEASSIST_PROPOSALS_BACKGROUND)); 161 overlayKeys.add(new OverlayPreferenceStore.OverlayKey( 162 OverlayPreferenceStore.STRING, 163 PreferenceConstants.CODEASSIST_PROPOSALS_FOREGROUND)); 164 overlayKeys.add(new OverlayPreferenceStore.OverlayKey( 165 OverlayPreferenceStore.STRING, 166 PreferenceConstants.CODEASSIST_PARAMETERS_BACKGROUND)); 167 overlayKeys.add(new OverlayPreferenceStore.OverlayKey( 168 OverlayPreferenceStore.STRING, 169 PreferenceConstants.CODEASSIST_PARAMETERS_FOREGROUND)); 170 overlayKeys.add(new OverlayPreferenceStore.OverlayKey( 171 OverlayPreferenceStore.STRING, 172 PreferenceConstants.CODEASSIST_REPLACEMENT_BACKGROUND)); 173 overlayKeys.add(new OverlayPreferenceStore.OverlayKey( 174 OverlayPreferenceStore.STRING, 175 PreferenceConstants.CODEASSIST_REPLACEMENT_FOREGROUND)); 176 overlayKeys.add(new OverlayPreferenceStore.OverlayKey( 177 OverlayPreferenceStore.STRING, 178 PreferenceConstants.CODEASSIST_AUTOACTIVATION_TRIGGERS_JAVA)); 179 overlayKeys 180 .add(new OverlayPreferenceStore.OverlayKey( 181 OverlayPreferenceStore.STRING, 182 PreferenceConstants.CODEASSIST_AUTOACTIVATION_TRIGGERS_JAVADOC)); 183 overlayKeys.add(new OverlayPreferenceStore.OverlayKey( 184 OverlayPreferenceStore.STRING, 185 PreferenceConstants.CODEASSIST_AUTOACTIVATION_TRIGGERS_HTML)); 186 overlayKeys.add(new OverlayPreferenceStore.OverlayKey( 187 OverlayPreferenceStore.BOOLEAN, 188 PreferenceConstants.CODEASSIST_SHOW_VISIBLE_PROPOSALS)); 189 overlayKeys.add(new OverlayPreferenceStore.OverlayKey( 190 OverlayPreferenceStore.BOOLEAN, 191 PreferenceConstants.CODEASSIST_ORDER_PROPOSALS)); 192 overlayKeys.add(new OverlayPreferenceStore.OverlayKey( 193 OverlayPreferenceStore.BOOLEAN, 194 PreferenceConstants.CODEASSIST_CASE_SENSITIVITY)); 195 overlayKeys.add(new OverlayPreferenceStore.OverlayKey( 196 OverlayPreferenceStore.BOOLEAN, 197 PreferenceConstants.CODEASSIST_ADDIMPORT)); 198 overlayKeys.add(new OverlayPreferenceStore.OverlayKey( 199 OverlayPreferenceStore.BOOLEAN, 200 PreferenceConstants.CODEASSIST_INSERT_COMPLETION)); 201 overlayKeys.add(new OverlayPreferenceStore.OverlayKey( 202 OverlayPreferenceStore.BOOLEAN, 203 PreferenceConstants.CODEASSIST_FILL_ARGUMENT_NAMES)); 204 overlayKeys.add(new OverlayPreferenceStore.OverlayKey( 205 OverlayPreferenceStore.BOOLEAN, 206 PreferenceConstants.CODEASSIST_GUESS_METHOD_ARGUMENTS)); 207 overlayKeys.add(new OverlayPreferenceStore.OverlayKey( 208 OverlayPreferenceStore.BOOLEAN, 209 PreferenceConstants.CODEASSIST_PREFIX_COMPLETION)); 210 211 OverlayPreferenceStore.OverlayKey[] keys = new OverlayPreferenceStore.OverlayKey[overlayKeys 212 .size()]; 213 overlayKeys.toArray(keys); 214 return keys; 215 } 216 217 /** 218 * Creates page for hover preferences. 219 * 220 * @param parent 221 * the parent composite 222 * @return the control for the preference page 223 */ createControl(Composite parent)224 public Control createControl(Composite parent) { 225 226 PixelConverter pixelConverter = new PixelConverter(parent); 227 228 Composite contentAssistComposite = new Composite(parent, SWT.NONE); 229 contentAssistComposite.setLayoutData(new GridData(GridData.FILL_BOTH)); 230 GridLayout layout = new GridLayout(); 231 layout.numColumns = 2; 232 contentAssistComposite.setLayout(layout); 233 234 // addCompletionRadioButtons(contentAssistComposite); 235 236 String label; 237 // label= 238 // PreferencesMessages.getString("JavaEditorPreferencePage.insertSingleProposalsAutomatically"); 239 // //$NON-NLS-1$ 240 // addCheckBox(contentAssistComposite, label, 241 // PreferenceConstants.CODEASSIST_AUTOINSERT, 0); 242 // 243 // label= 244 // PreferencesMessages.getString("JavaEditorPreferencePage.completePrefixes"); 245 // //$NON-NLS-1$ 246 // addCheckBox(contentAssistComposite, label, 247 // PreferenceConstants.CODEASSIST_PREFIX_COMPLETION, 0); 248 // 249 // label= 250 // PreferencesMessages.getString("JavaEditorPreferencePage.showOnlyProposalsVisibleInTheInvocationContext"); 251 // //$NON-NLS-1$ 252 // addCheckBox(contentAssistComposite, label, 253 // PreferenceConstants.CODEASSIST_SHOW_VISIBLE_PROPOSALS, 0); 254 // 255 // label= 256 // PreferencesMessages.getString("JavaEditorPreferencePage.presentProposalsInAlphabeticalOrder"); 257 // //$NON-NLS-1$ 258 // addCheckBox(contentAssistComposite, label, 259 // PreferenceConstants.CODEASSIST_ORDER_PROPOSALS, 0); 260 // 261 // label= 262 // PreferencesMessages.getString("JavaEditorPreferencePage.automaticallyAddImportInsteadOfQualifiedName"); 263 // //$NON-NLS-1$ 264 // addCheckBox(contentAssistComposite, label, 265 // PreferenceConstants.CODEASSIST_ADDIMPORT, 0); 266 // 267 // label= 268 // PreferencesMessages.getString("JavaEditorPreferencePage.fillArgumentNamesOnMethodCompletion"); 269 // //$NON-NLS-1$ 270 // Button master= addCheckBox(contentAssistComposite, label, 271 // PreferenceConstants.CODEASSIST_FILL_ARGUMENT_NAMES, 0); 272 // 273 // label= 274 // PreferencesMessages.getString("JavaEditorPreferencePage.guessArgumentNamesOnMethodCompletion"); 275 // //$NON-NLS-1$ 276 // Button slave= addCheckBox(contentAssistComposite, label, 277 // PreferenceConstants.CODEASSIST_GUESS_METHOD_ARGUMENTS, 0); 278 // createDependency(master, 279 // PreferenceConstants.CODEASSIST_FILL_ARGUMENT_NAMES, slave); 280 // 281 label = PreferencesMessages 282 .getString("JavaEditorPreferencePage.enableAutoActivation"); //$NON-NLS-1$ 283 final Button autoactivation = addCheckBox(contentAssistComposite, 284 label, PreferenceConstants.CODEASSIST_AUTOACTIVATION, 0); 285 autoactivation.addSelectionListener(new SelectionAdapter() { 286 public void widgetSelected(SelectionEvent e) { 287 updateAutoactivationControls(); 288 } 289 }); 290 291 Control[] labelledTextField; 292 label = PreferencesMessages 293 .getString("JavaEditorPreferencePage.autoActivationDelay"); //$NON-NLS-1$ 294 labelledTextField = addLabelledTextField(contentAssistComposite, label, 295 PreferenceConstants.CODEASSIST_AUTOACTIVATION_DELAY, 4, 0, true); 296 fAutoInsertDelayLabel = getLabelControl(labelledTextField); 297 fAutoInsertDelayText = getTextControl(labelledTextField); 298 299 label = PreferencesMessages 300 .getString("JavaEditorPreferencePage.autoActivationTriggersForJava"); //$NON-NLS-1$ 301 labelledTextField = addLabelledTextField(contentAssistComposite, label, 302 PreferenceConstants.CODEASSIST_AUTOACTIVATION_TRIGGERS_JAVA, 4, 303 0, false); 304 fAutoInsertJavaTriggerLabel = getLabelControl(labelledTextField); 305 fAutoInsertJavaTriggerText = getTextControl(labelledTextField); 306 307 label = PreferencesMessages 308 .getString("JavaEditorPreferencePage.autoActivationTriggersForJavaDoc"); //$NON-NLS-1$ 309 labelledTextField = addLabelledTextField(contentAssistComposite, label, 310 PreferenceConstants.CODEASSIST_AUTOACTIVATION_TRIGGERS_JAVADOC, 311 4, 0, false); 312 fAutoInsertJavaDocTriggerLabel = getLabelControl(labelledTextField); 313 fAutoInsertJavaDocTriggerText = getTextControl(labelledTextField); 314 315 label = PreferencesMessages 316 .getString("JavaEditorPreferencePage.autoActivationTriggersForHTML"); //$NON-NLS-1$ 317 labelledTextField = addLabelledTextField(contentAssistComposite, label, 318 PreferenceConstants.CODEASSIST_AUTOACTIVATION_TRIGGERS_HTML, 4, 319 0, false); 320 fAutoInsertHTMLTriggerLabel = getLabelControl(labelledTextField); 321 fAutoInsertHTMLTriggerText = getTextControl(labelledTextField); 322 323 Label l = new Label(contentAssistComposite, SWT.LEFT); 324 l.setText(PreferencesMessages 325 .getString("JavaEditorPreferencePage.codeAssist.colorOptions")); //$NON-NLS-1$ 326 GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL); 327 gd.horizontalSpan = 2; 328 l.setLayoutData(gd); 329 330 Composite editorComposite = new Composite(contentAssistComposite, 331 SWT.NONE); 332 layout = new GridLayout(); 333 layout.numColumns = 2; 334 layout.marginHeight = 0; 335 layout.marginWidth = 0; 336 editorComposite.setLayout(layout); 337 gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL 338 | GridData.FILL_VERTICAL); 339 gd.horizontalSpan = 2; 340 editorComposite.setLayoutData(gd); 341 342 fContentAssistColorList = new List(editorComposite, SWT.SINGLE 343 | SWT.V_SCROLL | SWT.BORDER); 344 gd = new GridData(GridData.VERTICAL_ALIGN_BEGINNING 345 | GridData.FILL_HORIZONTAL); 346 gd.heightHint = pixelConverter.convertHeightInCharsToPixels(8); 347 fContentAssistColorList.setLayoutData(gd); 348 349 Composite stylesComposite = new Composite(editorComposite, SWT.NONE); 350 layout = new GridLayout(); 351 layout.marginHeight = 0; 352 layout.marginWidth = 0; 353 layout.numColumns = 2; 354 stylesComposite.setLayout(layout); 355 stylesComposite.setLayoutData(new GridData(GridData.FILL_BOTH)); 356 357 l = new Label(stylesComposite, SWT.LEFT); 358 l.setText(PreferencesMessages 359 .getString("JavaEditorPreferencePage.codeAssist.color")); //$NON-NLS-1$ 360 gd = new GridData(); 361 gd.horizontalAlignment = GridData.BEGINNING; 362 l.setLayoutData(gd); 363 364 fContentAssistColorEditor = new ColorEditor(stylesComposite); 365 Button colorButton = fContentAssistColorEditor.getButton(); 366 gd = new GridData(GridData.FILL_HORIZONTAL); 367 gd.horizontalAlignment = GridData.BEGINNING; 368 colorButton.setLayoutData(gd); 369 370 fContentAssistColorList.addSelectionListener(new SelectionListener() { 371 public void widgetDefaultSelected(SelectionEvent e) { 372 // do nothing 373 } 374 375 public void widgetSelected(SelectionEvent e) { 376 handleContentAssistColorListSelection(); 377 } 378 }); 379 colorButton.addSelectionListener(new SelectionListener() { 380 public void widgetDefaultSelected(SelectionEvent e) { 381 // do nothing 382 } 383 384 public void widgetSelected(SelectionEvent e) { 385 int i = fContentAssistColorList.getSelectionIndex(); 386 String key = fContentAssistColorListModel[i][1]; 387 388 PreferenceConverter.setValue(fStore, key, 389 fContentAssistColorEditor.getColorValue()); 390 } 391 }); 392 393 return contentAssistComposite; 394 } 395 createDependency(final Button master, String masterKey, final Control slave)396 private void createDependency(final Button master, String masterKey, 397 final Control slave) { 398 indent(slave); 399 boolean masterState = fStore.getBoolean(masterKey); 400 slave.setEnabled(masterState); 401 SelectionListener listener = new SelectionListener() { 402 public void widgetSelected(SelectionEvent e) { 403 slave.setEnabled(master.getSelection()); 404 } 405 406 public void widgetDefaultSelected(SelectionEvent e) { 407 } 408 }; 409 master.addSelectionListener(listener); 410 fMasterSlaveListeners.add(listener); 411 } 412 indent(Control control)413 private static void indent(Control control) { 414 GridData gridData = new GridData(); 415 gridData.horizontalIndent = 20; 416 control.setLayoutData(gridData); 417 } 418 getTextControl(Control[] labelledTextField)419 private static Text getTextControl(Control[] labelledTextField) { 420 return (Text) labelledTextField[1]; 421 } 422 getLabelControl(Control[] labelledTextField)423 private static Label getLabelControl(Control[] labelledTextField) { 424 return (Label) labelledTextField[0]; 425 } 426 427 /** 428 * Returns an array of size 2: - first element is of type <code>Label</code> - 429 * second element is of type <code>Text</code> Use 430 * <code>getLabelControl</code> and <code>getTextControl</code> to get 431 * the 2 controls. 432 * 433 * @param composite 434 * the parent composite 435 * @param label 436 * the text field's label 437 * @param key 438 * the preference key 439 * @param textLimit 440 * the text limit 441 * @param indentation 442 * the field's indentation 443 * @param isNumber 444 * <code>true</code> iff this text field is used to e4dit a 445 * number 446 * @return 447 */ addLabelledTextField(Composite composite, String label, String key, int textLimit, int indentation, boolean isNumber)448 private Control[] addLabelledTextField(Composite composite, String label, 449 String key, int textLimit, int indentation, boolean isNumber) { 450 451 PixelConverter pixelConverter = new PixelConverter(composite); 452 453 Label labelControl = new Label(composite, SWT.NONE); 454 labelControl.setText(label); 455 GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); 456 gd.horizontalIndent = indentation; 457 labelControl.setLayoutData(gd); 458 459 Text textControl = new Text(composite, SWT.BORDER | SWT.SINGLE); 460 gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); 461 gd.widthHint = pixelConverter 462 .convertWidthInCharsToPixels(textLimit + 1); 463 textControl.setLayoutData(gd); 464 textControl.setTextLimit(textLimit); 465 fTextFields.put(textControl, key); 466 if (isNumber) { 467 fNumberFields.add(textControl); 468 textControl.addModifyListener(fNumberFieldListener); 469 } else { 470 textControl.addModifyListener(fTextFieldListener); 471 } 472 473 return new Control[] { labelControl, textControl }; 474 } 475 addCompletionRadioButtons(Composite contentAssistComposite)476 private void addCompletionRadioButtons(Composite contentAssistComposite) { 477 Composite completionComposite = new Composite(contentAssistComposite, 478 SWT.NONE); 479 GridData ccgd = new GridData(); 480 ccgd.horizontalSpan = 2; 481 completionComposite.setLayoutData(ccgd); 482 GridLayout ccgl = new GridLayout(); 483 ccgl.marginWidth = 0; 484 ccgl.numColumns = 2; 485 completionComposite.setLayout(ccgl); 486 487 // SelectionListener completionSelectionListener= new SelectionAdapter() 488 // { 489 // public void widgetSelected(SelectionEvent e) { 490 // boolean insert= fCompletionInsertsRadioButton.getSelection(); 491 // fStore.setValue(PreferenceConstants.CODEASSIST_INSERT_COMPLETION, 492 // insert); 493 // } 494 // }; 495 // 496 // fCompletionInsertsRadioButton= new Button(completionComposite, 497 // SWT.RADIO | SWT.LEFT); 498 // fCompletionInsertsRadioButton.setText(PreferencesMessages.getString("JavaEditorPreferencePage.completionInserts")); 499 // //$NON-NLS-1$ 500 // fCompletionInsertsRadioButton.setLayoutData(new GridData()); 501 // fCompletionInsertsRadioButton.addSelectionListener(completionSelectionListener); 502 // 503 // fCompletionOverwritesRadioButton= new Button(completionComposite, 504 // SWT.RADIO | SWT.LEFT); 505 // fCompletionOverwritesRadioButton.setText(PreferencesMessages.getString("JavaEditorPreferencePage.completionOverwrites")); 506 // //$NON-NLS-1$ 507 // fCompletionOverwritesRadioButton.setLayoutData(new GridData()); 508 // fCompletionOverwritesRadioButton.addSelectionListener(completionSelectionListener); 509 } 510 initialize()511 public void initialize() { 512 initializeFields(); 513 514 for (int i = 0; i < fContentAssistColorListModel.length; i++) 515 fContentAssistColorList.add(fContentAssistColorListModel[i][0]); 516 fContentAssistColorList.getDisplay().asyncExec(new Runnable() { 517 public void run() { 518 if (fContentAssistColorList != null 519 && !fContentAssistColorList.isDisposed()) { 520 fContentAssistColorList.select(0); 521 handleContentAssistColorListSelection(); 522 } 523 } 524 }); 525 526 } 527 initializeFields()528 void initializeFields() { 529 Iterator e = fCheckBoxes.keySet().iterator(); 530 while (e.hasNext()) { 531 Button b = (Button) e.next(); 532 String key = (String) fCheckBoxes.get(b); 533 b.setSelection(fStore.getBoolean(key)); 534 } 535 536 e = fTextFields.keySet().iterator(); 537 while (e.hasNext()) { 538 Text t = (Text) e.next(); 539 String key = (String) fTextFields.get(t); 540 t.setText(fStore.getString(key)); 541 } 542 543 // boolean completionInserts= 544 // fStore.getBoolean(PreferenceConstants.CODEASSIST_INSERT_COMPLETION); 545 // fCompletionInsertsRadioButton.setSelection(completionInserts); 546 // fCompletionOverwritesRadioButton.setSelection(! completionInserts); 547 548 updateAutoactivationControls(); 549 550 updateStatus(validatePositiveNumber("0")); //$NON-NLS-1$ 551 552 // Update slaves 553 Iterator iter = fMasterSlaveListeners.iterator(); 554 while (iter.hasNext()) { 555 SelectionListener listener = (SelectionListener) iter.next(); 556 listener.widgetSelected(null); 557 } 558 } 559 updateAutoactivationControls()560 private void updateAutoactivationControls() { 561 boolean autoactivation = fStore 562 .getBoolean(PreferenceConstants.CODEASSIST_AUTOACTIVATION); 563 fAutoInsertDelayText.setEnabled(autoactivation); 564 fAutoInsertDelayLabel.setEnabled(autoactivation); 565 566 fAutoInsertJavaTriggerText.setEnabled(autoactivation); 567 fAutoInsertJavaTriggerLabel.setEnabled(autoactivation); 568 569 fAutoInsertJavaDocTriggerText.setEnabled(autoactivation); 570 fAutoInsertJavaDocTriggerLabel.setEnabled(autoactivation); 571 572 fAutoInsertHTMLTriggerText.setEnabled(autoactivation); 573 fAutoInsertHTMLTriggerLabel.setEnabled(autoactivation); 574 } 575 performOk()576 public void performOk() { 577 } 578 performDefaults()579 public void performDefaults() { 580 handleContentAssistColorListSelection(); 581 initializeFields(); 582 } 583 handleContentAssistColorListSelection()584 private void handleContentAssistColorListSelection() { 585 int i = fContentAssistColorList.getSelectionIndex(); 586 String key = fContentAssistColorListModel[i][1]; 587 RGB rgb = PreferenceConverter.getColor(fStore, key); 588 fContentAssistColorEditor.setColorValue(rgb); 589 } 590 numberFieldChanged(Text textControl)591 private void numberFieldChanged(Text textControl) { 592 String number = textControl.getText(); 593 IStatus status = validatePositiveNumber(number); 594 if (!status.matches(IStatus.ERROR)) 595 fStore.setValue((String) fTextFields.get(textControl), number); 596 updateStatus(status); 597 } 598 validatePositiveNumber(String number)599 private IStatus validatePositiveNumber(String number) { 600 StatusInfo status = new StatusInfo(); 601 if (number.length() == 0) { 602 status.setError(PreferencesMessages 603 .getString("JavaEditorPreferencePage.empty_input")); //$NON-NLS-1$ 604 } else { 605 try { 606 int value = Integer.parseInt(number); 607 if (value < 0) 608 status.setError(PreferencesMessages.getFormattedString( 609 "JavaEditorPreferencePage.invalid_input", number)); //$NON-NLS-1$ 610 } catch (NumberFormatException e) { 611 status.setError(PreferencesMessages.getFormattedString( 612 "JavaEditorPreferencePage.invalid_input", number)); //$NON-NLS-1$ 613 } 614 } 615 return status; 616 } 617 updateStatus(IStatus status)618 private void updateStatus(IStatus status) { 619 fMainPreferencePage.setValid(status.isOK()); 620 StatusUtil.applyToStatusLine(fMainPreferencePage, status); 621 } 622 addCheckBox(Composite parent, String label, String key, int indentation)623 private Button addCheckBox(Composite parent, String label, String key, 624 int indentation) { 625 Button checkBox = new Button(parent, SWT.CHECK); 626 checkBox.setText(label); 627 628 GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); 629 gd.horizontalIndent = indentation; 630 gd.horizontalSpan = 2; 631 checkBox.setLayoutData(gd); 632 checkBox.addSelectionListener(fCheckBoxListener); 633 634 fCheckBoxes.put(checkBox, key); 635 636 return checkBox; 637 } 638 639 /* 640 * @see DialogPage#dispose() 641 */ dispose()642 public void dispose() { 643 // nothing to dispose 644 } 645 } 646