package org.jactr.eclipse.ui.preferences; import org.eclipse.jface.preference.BooleanFieldEditor; import org.eclipse.jface.preference.FieldEditor; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferencePage; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; import org.jactr.eclipse.ui.UIPlugin; public class ACTREditorPreferencePage extends PreferencePage implements IWorkbenchPreferencePage { BooleanFieldEditor _reconcilerEnabled; BooleanFieldEditor _foldingEnabled; BooleanFieldEditor _hoverEnabled; BooleanFieldEditor _hyperlinkEnabled; BooleanFieldEditor _assistEnabled; BooleanFieldEditor _formatOnSaveEnabled; BooleanFieldEditor _autoTemplateEnabled; FieldEditor[] _all = new FieldEditor[7]; @Override protected Control createContents(Composite parent) { Composite entryTable = new Composite(parent, SWT.NULL); GridData data = new GridData(GridData.FILL_HORIZONTAL); data.grabExcessHorizontalSpace = true; entryTable.setLayoutData(data); GridLayout layout = new GridLayout(); entryTable.setLayout(layout); final Composite reconcilerGroup = new Composite(entryTable, SWT.NONE); reconcilerGroup.setLayout(new GridLayout()); reconcilerGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); _reconcilerEnabled = new BooleanFieldEditor( UIPreferences.ENABLE_RECONCILER_PREF, "Enable continuous compilation", BooleanFieldEditor.SEPARATE_LABEL, reconcilerGroup); _all[0] = _reconcilerEnabled; _reconcilerEnabled.setPreferenceStore(getPreferenceStore()); _reconcilerEnabled.setPropertyChangeListener(new IPropertyChangeListener() { public void propertyChange(PropertyChangeEvent event) { if (!_reconcilerEnabled.getBooleanValue()) { IPreferenceStore pref = getPreferenceStore(); pref.setValue(UIPreferences.ENABLE_ASSIST_PREF, false); pref.setValue(UIPreferences.ENABLE_FOLDING_PREF, false); pref.setValue(UIPreferences.ENABLE_HOVER_PREF, false); pref.setValue(UIPreferences.ENABLE_HYPERLINK_PREF, false); } _assistEnabled.setEnabled(_reconcilerEnabled.getBooleanValue(), reconcilerGroup); _foldingEnabled.setEnabled(_reconcilerEnabled.getBooleanValue(), reconcilerGroup); _hoverEnabled.setEnabled(_reconcilerEnabled.getBooleanValue(), reconcilerGroup); _hyperlinkEnabled.setEnabled(_reconcilerEnabled.getBooleanValue(), reconcilerGroup); } }); _assistEnabled = new BooleanFieldEditor(UIPreferences.ENABLE_ASSIST_PREF, "Enable content assist", BooleanFieldEditor.SEPARATE_LABEL, reconcilerGroup); _all[1] = _assistEnabled; _assistEnabled.setPreferenceStore(getPreferenceStore()); _foldingEnabled = new BooleanFieldEditor(UIPreferences.ENABLE_FOLDING_PREF, "Enable folding", BooleanFieldEditor.SEPARATE_LABEL, reconcilerGroup); _all[2] = _foldingEnabled; _foldingEnabled.setPreferenceStore(getPreferenceStore()); _hoverEnabled = new BooleanFieldEditor(UIPreferences.ENABLE_HOVER_PREF, "Enable text hovers", BooleanFieldEditor.SEPARATE_LABEL, reconcilerGroup); _all[3] = _hoverEnabled; _hoverEnabled.setPreferenceStore(getPreferenceStore()); _hyperlinkEnabled = new BooleanFieldEditor( UIPreferences.ENABLE_HYPERLINK_PREF, "Enable hyperlinks", BooleanFieldEditor.SEPARATE_LABEL, reconcilerGroup); _all[4] = _hyperlinkEnabled; _hyperlinkEnabled.setPreferenceStore(getPreferenceStore()); _autoTemplateEnabled = new BooleanFieldEditor( UIPreferences.ENABLE_AUTO_ACTIVATE_PREF, "Auto-propose templates", BooleanFieldEditor.SEPARATE_LABEL, reconcilerGroup); _all[5] = _autoTemplateEnabled; _autoTemplateEnabled.setPreferenceStore(getPreferenceStore()); _formatOnSaveEnabled = new BooleanFieldEditor( UIPreferences.ENABLE_FORMAT_PREF, "Format on save", BooleanFieldEditor.SEPARATE_LABEL, reconcilerGroup); _all[6] = _formatOnSaveEnabled; _formatOnSaveEnabled.setPreferenceStore(getPreferenceStore()); for (FieldEditor editor : _all) editor.load(); return entryTable; } @Override protected void performDefaults() { for (FieldEditor editor : _all) editor.loadDefault(); } @Override public boolean performOk() { for (FieldEditor editor : _all) editor.store(); return super.performOk(); } public void init(IWorkbench workbench) { setPreferenceStore(UIPlugin.getDefault().getPreferenceStore()); } }