/** * <copyright> * </copyright> * * */ package org.reuseware.air.language.abstractsyntax.resource.as.ui; /** * The preference page to set the occurrence highlighting with folling features: * <ul> * <li>enables the occurrence highlighting</li> * <li>chooses the highlight color for definition</li> * <li>chooses the highlight color for the proxy elements</li> * </ul> */ public class AsOccurrencePreferencePage extends org.eclipse.jface.preference.PreferencePage implements org.eclipse.ui.IWorkbenchPreferencePage { private org.eclipse.swt.widgets.Button enableCheckbox; private org.eclipse.swt.widgets.Label defColorLabel; private org.eclipse.jface.preference.ColorSelector defColorSelector; private org.eclipse.swt.widgets.Button defColorButton; private org.eclipse.swt.widgets.Label useColorLabel; private org.eclipse.jface.preference.ColorSelector useColorSelector; private org.eclipse.swt.widgets.Button useColorButton; @Override protected org.eclipse.swt.widgets.Control createContents(org.eclipse.swt.widgets.Composite parent) { org.eclipse.swt.widgets.Composite settingComposite = new org.eclipse.swt.widgets.Composite(parent, org.eclipse.swt.SWT.NONE); org.eclipse.swt.layout.GridLayout layout = new org.eclipse.swt.layout.GridLayout(); org.eclipse.swt.layout.GridData gd; layout.numColumns= 2; layout.marginHeight= 0; layout.marginWidth= 0; gd = new org.eclipse.swt.layout.GridData(org.eclipse.swt.layout.GridData.BEGINNING); settingComposite.setLayout(layout); settingComposite.setLayoutData(gd); enableCheckbox = new org.eclipse.swt.widgets.Button(settingComposite, org.eclipse.swt.SWT.CHECK); enableCheckbox.setText("Enable"); gd = new org.eclipse.swt.layout.GridData(org.eclipse.swt.layout.GridData.BEGINNING); gd.horizontalAlignment= org.eclipse.swt.layout.GridData.BEGINNING; gd.horizontalSpan= 2; enableCheckbox.setLayoutData(gd); defColorLabel = new org.eclipse.swt.widgets.Label(settingComposite, org.eclipse.swt.SWT.LEFT); defColorLabel.setText("Definition color:"); gd = new org.eclipse.swt.layout.GridData(org.eclipse.swt.layout.GridData.HORIZONTAL_ALIGN_BEGINNING); gd.horizontalIndent= 20; defColorLabel.setLayoutData(gd); defColorSelector = new org.eclipse.jface.preference.ColorSelector(settingComposite); defColorButton = defColorSelector.getButton(); gd = new org.eclipse.swt.layout.GridData(org.eclipse.swt.layout.GridData.HORIZONTAL_ALIGN_BEGINNING); defColorButton.setLayoutData(gd); useColorLabel = new org.eclipse.swt.widgets.Label(settingComposite, org.eclipse.swt.SWT.LEFT); useColorLabel.setText("Proxy color:"); gd = new org.eclipse.swt.layout.GridData(org.eclipse.swt.layout.GridData.HORIZONTAL_ALIGN_BEGINNING); gd.horizontalIndent= 20; useColorLabel.setLayoutData(gd); useColorSelector = new org.eclipse.jface.preference.ColorSelector(settingComposite); useColorButton = useColorSelector.getButton(); gd = new org.eclipse.swt.layout.GridData(org.eclipse.swt.layout.GridData.HORIZONTAL_ALIGN_BEGINNING); useColorButton.setLayoutData(gd); addListenersToStyleButtons(); initializeValues(); settingComposite.layout(false); return settingComposite; } public void init(org.eclipse.ui.IWorkbench workbench) { setPreferenceStore(org.reuseware.air.language.abstractsyntax.resource.as.ui.AsUIPlugin.getDefault().getPreferenceStore()); setDescription("Define the highlight coloring of occurrences."); } private void addListenersToStyleButtons() { enableCheckbox.addSelectionListener(new org.eclipse.swt.events.SelectionListener(){ public void widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent e){ } public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { defColorButton.setEnabled(enableCheckbox.getSelection()); useColorButton.setEnabled(enableCheckbox.getSelection()); } }); } private void initializeValues() { boolean enable = getPreferenceStore().getBoolean(org.reuseware.air.language.abstractsyntax.resource.as.ui.AsPreferenceConstants.EDITOR_OCCURRENCE_CHECKBOX); enableCheckbox.setSelection(enable); defColorButton.setEnabled(enable); org.eclipse.swt.graphics.RGB rgb = org.eclipse.jface.preference.PreferenceConverter.getColor(getPreferenceStore(), org.reuseware.air.language.abstractsyntax.resource.as.ui.AsPreferenceConstants.EDITOR_DEFINITION_COLOR); defColorSelector.setColorValue(rgb); useColorButton.setEnabled(enable); rgb = org.eclipse.jface.preference.PreferenceConverter.getColor(getPreferenceStore(), org.reuseware.air.language.abstractsyntax.resource.as.ui.AsPreferenceConstants.EDITOR_PROXY_COLOR); useColorSelector.setColorValue(rgb); } /** * Set the default values for this preference page. */ protected void performDefaults() { boolean enable = getPreferenceStore().getDefaultBoolean(org.reuseware.air.language.abstractsyntax.resource.as.ui.AsPreferenceConstants.EDITOR_MATCHING_BRACKETS_CHECKBOX); enableCheckbox.setSelection(enable); defColorButton.setEnabled(enable); useColorButton.setEnabled(enable); defColorSelector.setColorValue(org.eclipse.jface.preference.PreferenceConverter.getDefaultColor(getPreferenceStore(), org.reuseware.air.language.abstractsyntax.resource.as.ui.AsPreferenceConstants.EDITOR_DEFINITION_COLOR)); useColorSelector.setColorValue(org.eclipse.jface.preference.PreferenceConverter.getDefaultColor(getPreferenceStore(), org.reuseware.air.language.abstractsyntax.resource.as.ui.AsPreferenceConstants.EDITOR_PROXY_COLOR)); } public boolean performOk() { if(!super.performOk()) { return false; } updateActiveEditor(); return true; } protected void performApply() { updateActiveEditor(); } /** * Sets the chosen options to the preference store and refreshs it in the editor. */ private void updateActiveEditor() { getPreferenceStore().setValue(org.reuseware.air.language.abstractsyntax.resource.as.ui.AsPreferenceConstants.EDITOR_OCCURRENCE_CHECKBOX, enableCheckbox.getSelection()); org.eclipse.jface.preference.PreferenceConverter.setValue(getPreferenceStore(), org.reuseware.air.language.abstractsyntax.resource.as.ui.AsPreferenceConstants.EDITOR_DEFINITION_COLOR, defColorSelector.getColorValue()); org.eclipse.jface.preference.PreferenceConverter.setValue(getPreferenceStore(), org.reuseware.air.language.abstractsyntax.resource.as.ui.AsPreferenceConstants.EDITOR_PROXY_COLOR, useColorSelector.getColorValue()); org.eclipse.ui.IWorkbench workbench = org.eclipse.ui.PlatformUI.getWorkbench(); org.eclipse.ui.IEditorPart editor = workbench.getActiveWorkbenchWindow().getActivePage().getActiveEditor(); if (editor != null && editor instanceof org.reuseware.air.language.abstractsyntax.resource.as.ui.AsEditor) { ((org.reuseware.air.language.abstractsyntax.resource.as.ui.AsEditor) editor).invalidateTextRepresentation(); } } }