blob: db5ac96744cf4a6171a4e5dfea3660b5ad02bbe4 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007, 2018 Alphonse Van Assche and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Alphonse Van Assche - initial API and implementation
*******************************************************************************/
package org.eclipse.linuxtools.internal.rpm.ui.editor.preferences;
import java.util.Locale;
import org.eclipse.jface.preference.BooleanFieldEditor;
import org.eclipse.jface.preference.FieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.IntegerFieldEditor;
import org.eclipse.jface.preference.RadioGroupFieldEditor;
import org.eclipse.linuxtools.internal.rpm.ui.editor.Activator;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Link;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.dialogs.PreferencesUtil;
/**
* Specfile editor main preference page class.
*
*/
public class MainPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
private Combo combo;
private int defaultItem;
/**
* default constructor
*/
public MainPreferencePage() {
super(GRID);
setPreferenceStore(Activator.getDefault().getPreferenceStore());
}
private FieldEditor changelogEntryFormatFieldEditor(Composite parent) {
RadioGroupFieldEditor changelogEntryFormatRadioGroupEditor = new RadioGroupFieldEditor(
PreferenceConstants.P_CHANGELOG_ENTRY_FORMAT, Messages.MainPreferencePage_2, 1,
new String[][] {
{ Messages.MainPreferencePage_3, PreferenceConstants.P_CHANGELOG_ENTRY_FORMAT_VERSIONED },
{ Messages.MainPreferencePage_4,
PreferenceConstants.P_CHANGELOG_ENTRY_FORMAT_VERSIONED_WITH_SEPARATOR },
{ Messages.MainPreferencePage_5, PreferenceConstants.P_CHANGELOG_ENTRY_FORMAT_UNVERSIONED } },
parent, true);
return changelogEntryFormatRadioGroupEditor;
}
private void createLocalesCombo(Composite parent) {
combo = new Combo(parent, SWT.DROP_DOWN | SWT.READ_ONLY | SWT.BEGINNING);
// populate the combo with all ISO countries
int selectedItem = 0;
String lastLocale = getPreferenceStore().getString(PreferenceConstants.P_CHANGELOG_LOCAL);
String[] countries = Locale.getISOCountries();
for (int i = 0; i < countries.length; i++) {
Locale currentLocale = new Locale(countries[i]);
combo.add(countries[i] + " - " + currentLocale.getDisplayLanguage()); //$NON-NLS-1$
// get index of the Locale store in the preferences
if (countries[i].equals(lastLocale)) {
selectedItem = i;
}
// get the index of the default Locale
if (countries[i].equals(PreferenceConstants.DP_CHANGELOG_LOCAL)) {
defaultItem = i;
}
}
combo.select(selectedItem);
// update preferences
combo.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> {
Combo combo = (Combo) e.getSource();
getPreferenceStore().setValue(PreferenceConstants.P_CHANGELOG_LOCAL, combo.getText().split("-")[0].trim()); //$NON-NLS-1$
}));
}
@Override
public void createFieldEditors() {
GridData data = new GridData();
data.horizontalSpan = 2;
final Composite parent = getFieldEditorParent();
Link link = new Link(parent, SWT.NONE);
link.setText(Messages.MainPreferencePage_0);
link.addSelectionListener(SelectionListener.widgetSelectedAdapter(
e -> PreferencesUtil.createPreferenceDialogOn(parent.getShell(), e.text, null, null)));
addField(changelogEntryFormatFieldEditor(parent));
Label labelLocal = new Label(parent, SWT.NONE);
labelLocal.setText(Messages.MainPreferencePage_1);
labelLocal.setLayoutData(data);
createLocalesCombo(parent);
addField(new BooleanFieldEditor(PreferenceConstants.P_SPACES_FOR_TABS, Messages.MainPreferencePage_6, parent));
Composite numEditorComp = new Composite(parent, SWT.NONE);
IntegerFieldEditor numEditor = new IntegerFieldEditor(PreferenceConstants.P_NBR_OF_SPACES_FOR_TAB,
Messages.MainPreferencePage_7, numEditorComp, 1);
addField(numEditor);
}
@Override
public void init(IWorkbench workbench) {
}
@Override
protected void performDefaults() {
super.performDefaults();
combo.select(defaultItem);
getPreferenceStore().setValue(PreferenceConstants.P_CHANGELOG_LOCAL, PreferenceConstants.DP_CHANGELOG_LOCAL);
getPreferenceStore().setValue(PreferenceConstants.P_CHANGELOG_ENTRY_FORMAT,
PreferenceConstants.DP_CHANGELOG_ENTRY_FORMAT);
}
}