1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-05 23:35:48 +02:00

Added support for radio buttons corresponding to non-boolean preferences

This commit is contained in:
Sergey Prigogin 2014-08-08 15:48:52 -07:00
parent 4d0919d7d2
commit ebac470813

View file

@ -1,5 +1,5 @@
/******************************************************************************* /*******************************************************************************
* Copyright (c) 2002, 2013 QNX Software Systems and others. * Copyright (c) 2002, 2014 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials * All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0 * are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at * which accompanies this distribution, and is available at
@ -10,8 +10,8 @@
* IBM Corporation * IBM Corporation
* Anton Leherbauer (Wind River Systems) * Anton Leherbauer (Wind River Systems)
* Serge Beauchamp (Freescale Semiconductor) - Bug 418817 * Serge Beauchamp (Freescale Semiconductor) - Bug 418817
* Sergey Prigogin (Google)
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.ui.preferences; package org.eclipse.cdt.internal.ui.preferences;
import java.util.ArrayList; import java.util.ArrayList;
@ -55,16 +55,15 @@ import org.eclipse.cdt.internal.ui.dialogs.StatusUtil;
* AbstractPreferencePage * AbstractPreferencePage
*/ */
public abstract class AbstractPreferencePage extends PreferencePage implements IWorkbenchPreferencePage { public abstract class AbstractPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
protected OverlayPreferenceStore fOverlayStore; protected OverlayPreferenceStore fOverlayStore;
/** /**
* Unique list of masters for control dependencies. * Unique list of masters for control dependencies.
* @see #createDependency(Button, String, Control) * @see #createDependency(Button, String, Control)
*/ */
private Set<Button> fMasters = new LinkedHashSet<Button>(); private Set<Button> fMasters = new LinkedHashSet<>();
protected Map<Object, String> fTextFields = new HashMap<Object, String>(); protected Map<Object, String> fTextFields = new HashMap<>();
private ModifyListener fTextFieldListener = new ModifyListener() { private ModifyListener fTextFieldListener = new ModifyListener() {
@Override @Override
public void modifyText(ModifyEvent e) { public void modifyText(ModifyEvent e) {
@ -73,7 +72,7 @@ public abstract class AbstractPreferencePage extends PreferencePage implements I
} }
}; };
protected Map<Object, String> fComboBoxes = new HashMap<Object, String>(); protected Map<Object, String> fComboBoxes = new HashMap<>();
private ModifyListener fComboBoxListener = new ModifyListener() { private ModifyListener fComboBoxListener = new ModifyListener() {
@Override @Override
public void modifyText(ModifyEvent e) { public void modifyText(ModifyEvent e) {
@ -83,8 +82,7 @@ public abstract class AbstractPreferencePage extends PreferencePage implements I
} }
}; };
protected Map<Object, String> fCheckBoxes = new HashMap<>();
protected Map<Object, String> fCheckBoxes = new HashMap<Object, String>();
private SelectionListener fCheckBoxListener = new SelectionListener() { private SelectionListener fCheckBoxListener = new SelectionListener() {
@Override @Override
public void widgetDefaultSelected(SelectionEvent e) { public void widgetDefaultSelected(SelectionEvent e) {
@ -92,11 +90,16 @@ public abstract class AbstractPreferencePage extends PreferencePage implements I
@Override @Override
public void widgetSelected(SelectionEvent e) { public void widgetSelected(SelectionEvent e) {
Button button = (Button) e.widget; Button button = (Button) e.widget;
fOverlayStore.setValue(fCheckBoxes.get(button), button.getSelection()); String value = (String) button.getData();
if (value == null) {
fOverlayStore.setValue(fCheckBoxes.get(button), button.getSelection());
} else if (button.getSelection()) {
fOverlayStore.setValue(fCheckBoxes.get(button), value);
}
} }
}; };
protected ArrayList<Text> fNumberFields = new ArrayList<Text>(); protected ArrayList<Text> fNumberFields = new ArrayList<>();
private ModifyListener fNumberFieldListener = new ModifyListener() { private ModifyListener fNumberFieldListener = new ModifyListener() {
@Override @Override
public void modifyText(ModifyEvent e) { public void modifyText(ModifyEvent e) {
@ -104,7 +107,7 @@ public abstract class AbstractPreferencePage extends PreferencePage implements I
} }
}; };
protected Map<Object, String> fColorButtons = new HashMap<Object, String>(); protected Map<Object, String> fColorButtons = new HashMap<>();
private SelectionListener fColorButtonListener = new SelectionListener() { private SelectionListener fColorButtonListener = new SelectionListener() {
@Override @Override
public void widgetDefaultSelected(SelectionEvent e) { public void widgetDefaultSelected(SelectionEvent e) {
@ -119,17 +122,25 @@ public abstract class AbstractPreferencePage extends PreferencePage implements I
protected static final int NO_TEXT_LIMIT = -1; protected static final int NO_TEXT_LIMIT = -1;
protected Button addRadioButton(Composite parent, String label, String key, int indentation) { protected Button addRadioButton(Composite parent, String label, String key, int indentation) {
return addRadioButton(parent, label, key, null, indentation);
}
protected Button addRadioButton(Composite parent, String label, String key, String value,
int indentation) {
Button radioButton = new Button(parent, SWT.RADIO); Button radioButton = new Button(parent, SWT.RADIO);
radioButton.setText(label); radioButton.setText(label);
if (value != null)
radioButton.setData(value);
GridData gd = new GridData(GridData.FILL_HORIZONTAL); GridData gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalIndent = indentation; gd.horizontalIndent = indentation;
gd.horizontalSpan = 2; gd.horizontalSpan = 2;
radioButton.setLayoutData(gd); radioButton.setLayoutData(gd);
radioButton.addSelectionListener(fCheckBoxListener);
if (key != null) if (key != null) {
radioButton.addSelectionListener(fCheckBoxListener);
fCheckBoxes.put(radioButton, key); fCheckBoxes.put(radioButton, key);
}
return radioButton; return radioButton;
} }
@ -274,7 +285,6 @@ public abstract class AbstractPreferencePage extends PreferencePage implements I
} }
protected Control addColorButton(Composite parent, String label, String key, int indentation) { protected Control addColorButton(Composite parent, String label, String key, int indentation) {
Composite composite = new Composite(parent, SWT.NONE); Composite composite = new Composite(parent, SWT.NONE);
GridData gd = new GridData(GridData.FILL_HORIZONTAL); GridData gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 2; gd.horizontalSpan = 2;
@ -328,7 +338,12 @@ public abstract class AbstractPreferencePage extends PreferencePage implements I
while (e.hasNext()) { while (e.hasNext()) {
Button b = (Button) e.next(); Button b = (Button) e.next();
String key = fCheckBoxes.get(b); String key = fCheckBoxes.get(b);
b.setSelection(fOverlayStore.getBoolean(key)); String value = (String) b.getData();
if (value == null) {
b.setSelection(fOverlayStore.getBoolean(key));
} else if (value.equals(fOverlayStore.getString(key))) {
b.setSelection(true);
}
} }
e = fTextFields.keySet().iterator(); e = fTextFields.keySet().iterator();
@ -355,27 +370,16 @@ public abstract class AbstractPreferencePage extends PreferencePage implements I
} }
} }
/*
* (non-Javadoc)
*
* @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
*/
@Override @Override
public void init(IWorkbench workbench) { public void init(IWorkbench workbench) {
} }
/*
* @see PreferencePage#performOk()
*/
@Override @Override
public boolean performOk() { public boolean performOk() {
fOverlayStore.propagate(); fOverlayStore.propagate();
return true; return true;
} }
/*
* @see PreferencePage#performDefaults()
*/
@Override @Override
protected void performDefaults() { protected void performDefaults() {
fOverlayStore.loadDefaults(); fOverlayStore.loadDefaults();
@ -383,9 +387,6 @@ public abstract class AbstractPreferencePage extends PreferencePage implements I
super.performDefaults(); super.performDefaults();
} }
/*
* @see DialogPage#dispose()
*/
@Override @Override
public void dispose() { public void dispose() {
if (fOverlayStore != null) { if (fOverlayStore != null) {