package com.redhat.ceylon.eclipse.code.preferences; import static com.redhat.ceylon.eclipse.code.preferences.CeylonPreferenceInitializer.ENABLE_HIERARCHY_FILTERS; import static com.redhat.ceylon.eclipse.code.preferences.CeylonPreferenceInitializer.HIERARCHY_FILTERS; import static com.redhat.ceylon.eclipse.code.preferences.CeylonPreferenceInitializer.INACTIVE_HIERARCHY_FILTERS; import static com.redhat.ceylon.eclipse.code.preferences.CeylonPreferenceInitializer.PARAMS_IN_OUTLINES; import static com.redhat.ceylon.eclipse.code.preferences.CeylonPreferenceInitializer.PARAM_TYPES_IN_OUTLINES; import static com.redhat.ceylon.eclipse.code.preferences.CeylonPreferenceInitializer.RETURN_TYPES_IN_OUTLINES; import static com.redhat.ceylon.eclipse.code.preferences.CeylonPreferenceInitializer.TYPE_PARAMS_IN_OUTLINES; import static com.redhat.ceylon.eclipse.ui.CeylonPlugin.COLORS_AND_FONTS_PAGE_ID; import static com.redhat.ceylon.eclipse.ui.CeylonPlugin.OUTLINE_FONT_PREFERENCE; import static org.eclipse.ui.dialogs.PreferencesUtil.createPreferenceDialogOn; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.preference.BooleanFieldEditor; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Link; import org.eclipse.ui.IWorkbenchPreferencePage; import com.redhat.ceylon.eclipse.ui.CeylonPlugin; public class CeylonOutlinesPreferencePage extends FiltersPreferencePage implements IWorkbenchPreferencePage { private BooleanFieldEditor displayOutlineTypes; private BooleanFieldEditor displayOutlineParameters; private BooleanFieldEditor displayOutlineParameterTypes; private BooleanFieldEditor displayOutlineTypeParameters; public static final String ID = CeylonPlugin.PLUGIN_ID + ".preferences.outlines"; public CeylonOutlinesPreferencePage() { setDescription("Preferences applying to outlines, type hierarchies, and the search results view."); } @Override protected Control createContents(Composite parent) { Link colorsAndFontsLink = new Link(parent, 0); colorsAndFontsLink.setLayoutData(GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER).indent(0, 0).create()); colorsAndFontsLink.setText("See '<a>Colors and Fonts</a>' to customize fonts and label colors."); colorsAndFontsLink.addSelectionListener( new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { createPreferenceDialogOn(getShell(), COLORS_AND_FONTS_PAGE_ID, null, "selectFont:" + OUTLINE_FONT_PREFERENCE); } }); Link filtersLink = new Link(parent, 0); filtersLink.setLayoutData( GridDataFactory.swtDefaults() .align(SWT.FILL, SWT.CENTER) .create()); filtersLink.setText("See '<a>Filtering</a>' to set up global filters and match highlighting."); filtersLink.addSelectionListener( new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { createPreferenceDialogOn(getShell(), CeylonFiltersPreferencePage.ID, null, null); } }); // Composite composite = new Composite(parent, SWT.NONE); // composite.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).create()); // composite.setLayout(new GridLayout(1, true)); return super.createContents(parent); } @Override protected void createFieldEditors() { final Composite outlines = createGroup(2, "Labels"); displayOutlineTypes = new BooleanFieldEditor(RETURN_TYPES_IN_OUTLINES, "Display return types", getFieldEditorParent(outlines)); displayOutlineTypes.load(); addField(displayOutlineTypes); displayOutlineTypeParameters = new BooleanFieldEditor(TYPE_PARAMS_IN_OUTLINES, "Display type parameters", getFieldEditorParent(outlines)); displayOutlineTypeParameters.load(); addField(displayOutlineTypeParameters); displayOutlineParameterTypes = new BooleanFieldEditor(PARAM_TYPES_IN_OUTLINES, "Display parameter types", getFieldEditorParent(outlines)); displayOutlineParameterTypes.load(); addField(displayOutlineParameterTypes); displayOutlineParameters = new BooleanFieldEditor(PARAMS_IN_OUTLINES, "Display parameter names ", getFieldEditorParent(outlines)); displayOutlineParameters.load(); addField(displayOutlineParameters); super.createFieldEditors(); } @Override protected void performDefaults() { displayOutlineTypes.loadDefault(); displayOutlineParameters.loadDefault(); displayOutlineTypeParameters.loadDefault(); displayOutlineParameterTypes.loadDefault(); super.performDefaults(); } @Override public boolean performOk() { displayOutlineTypes.store(); displayOutlineParameters.store(); displayOutlineTypeParameters.store(); displayOutlineParameterTypes.store(); return super.performOk(); } @Override protected String getInactiveFiltersPreference() { return INACTIVE_HIERARCHY_FILTERS; } @Override protected String getActiveFiltersPreference() { return HIERARCHY_FILTERS; } @Override protected String getEnabledPreference() { return ENABLE_HIERARCHY_FILTERS; } @Override protected String getLabelText() { return "Filtered packages and declarations are excluded from type hierarchies\nand the search results view."; } }