blob: d11067e20b40f96cffc9979305b5e39dbe8bbb50 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2009 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.team.examples.pessimistic.ui;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.team.examples.pessimistic.IPessimisticFilesystemConstants;
import org.eclipse.team.examples.pessimistic.PessimisticFilesystemProviderPlugin;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
/**
* A preference page for the <code>PessimisticFilesystemProviderPlugin</code>.
*/
public class PessimisticPreferencesPage
extends PreferencePage
implements IWorkbenchPreferencePage {
/*
* Widget for the files are edited preference
*/
private Combo filesAreEditedCombo;
/*
* Widget for the files are edited without a context preference
*/
private Combo filesAreEditedNoPromptCombo;
/*
* Widget for the files are saved preference
*/
private Combo filesAreSavedCombo;
/*
* Widget for the files are edited preference
*/
private Combo addToControlCombo;
/*
* Widget for the change file contents preference
*/
private Button changeFileContents;
/*
* Widget for the fail validate edit preference
*/
private Button failValidateEdit;
/*
* Option strings for the files are edited preference.
*/
private static final String[] EDIT_OPTION_STRINGS=
new String[] {
"Prompt to checkout",
"Checkout",
"Do nothing", };
/*
* Option values for the files are edited preference.
*/
private static final int[] EDIT_OPTION_KEYS=
new int[] {
IPessimisticFilesystemConstants.OPTION_PROMPT,
IPessimisticFilesystemConstants.OPTION_AUTOMATIC,
IPessimisticFilesystemConstants.OPTION_DO_NOTHING, };
/*
* Option strings for the files are edited without a context preference.
*/
private static final String[] EDIT_NO_PROMPT_OPTION_STRINGS=
new String[] {
"Checkout",
"Do nothing", };
/*
* Option strings for the files are saved preference.
*/
private static final String[] SAVE_OPTION_STRINGS=
new String[] {
"Checkout",
"Do nothing", };
/*
* Option values for the files are saved preference.
*/
private static final int[] SAVE_OPTION_KEYS=
new int[] {
IPessimisticFilesystemConstants.OPTION_AUTOMATIC,
IPessimisticFilesystemConstants.OPTION_DO_NOTHING, };
/*
* Option strings for the add to control preference.
*/
private static final String[] ADD_TO_CONTROL_OPTION_STRINGS=
new String[] {
"Prompt to add to control",
"Add to control",
"Do nothing", };
/*
* Option values for the add to control preference.
*/
private static final int[] ADD_TO_CONTROL_OPTION_KEYS=
new int[] {
IPessimisticFilesystemConstants.OPTION_PROMPT,
IPessimisticFilesystemConstants.OPTION_AUTOMATIC,
IPessimisticFilesystemConstants.OPTION_DO_NOTHING, };
@Override
protected IPreferenceStore doGetPreferenceStore() {
return PessimisticFilesystemProviderPlugin.getInstance().getPreferenceStore();
}
/*
* Sets the layout to be a grid layout with the given number of columns.
*/
protected void setDefaultLayout(Composite group, int columns) {
GridLayout layout = new GridLayout();
group.setLayout(layout);
GridData data =
new GridData(
GridData.VERTICAL_ALIGN_FILL
| GridData.HORIZONTAL_ALIGN_FILL
| GridData.GRAB_HORIZONTAL);
layout.numColumns = columns;
group.setLayoutData(data);
}
@Override
protected Control createContents(Composite parent) {
Composite composite = new Composite(parent, SWT.NULL);
setDefaultLayout(composite, 1);
Composite options = new Composite(composite, SWT.NULL);
setDefaultLayout(options, 2);
Label label = new Label(options, SWT.NONE);
label.setText("File handling:");
GridData gridData = new GridData();
gridData.horizontalSpan = 2;
gridData.horizontalAlignment = GridData.FILL;
label.setLayoutData(gridData);
label = new Label(options, SWT.NONE);
label.setText("When checked in files are edited:");
gridData = new GridData();
gridData.horizontalSpan = 1;
gridData.horizontalAlignment = GridData.FILL;
label.setLayoutData(gridData);
filesAreEditedCombo= new Combo(options, SWT.BORDER | SWT.READ_ONLY);
gridData = new GridData();
gridData.horizontalSpan= 1;
gridData.horizontalAlignment = GridData.FILL;
filesAreEditedCombo.setLayoutData(gridData);
filesAreEditedCombo.setItems(EDIT_OPTION_STRINGS);
label = new Label(options, SWT.NONE);
label.setText("When checked in files are edited programmatically:");
gridData = new GridData();
gridData.horizontalSpan = 1;
gridData.horizontalAlignment = GridData.FILL;
label.setLayoutData(gridData);
filesAreEditedNoPromptCombo= new Combo(options, SWT.BORDER | SWT.READ_ONLY);
gridData = new GridData();
gridData.horizontalSpan= 1;
gridData.horizontalAlignment = GridData.FILL;
filesAreEditedNoPromptCombo.setLayoutData(gridData);
filesAreEditedNoPromptCombo.setItems(EDIT_NO_PROMPT_OPTION_STRINGS);
label = new Label(options, SWT.NONE);
label.setText("When checked in files are saved:");
gridData = new GridData();
gridData.horizontalSpan = 1;
gridData.horizontalAlignment = GridData.FILL;
label.setLayoutData(gridData);
filesAreSavedCombo= new Combo(options, SWT.BORDER | SWT.READ_ONLY);
gridData = new GridData();
gridData.horizontalSpan = 1;
gridData.horizontalAlignment = GridData.FILL;
filesAreSavedCombo.setLayoutData(gridData);
filesAreSavedCombo.setItems(SAVE_OPTION_STRINGS);
label = new Label(options, SWT.NONE);
label.setText("When files are created:");
gridData = new GridData();
gridData.horizontalSpan = 1;
gridData.horizontalAlignment = GridData.FILL;
label.setLayoutData(gridData);
addToControlCombo= new Combo(options, SWT.BORDER | SWT.READ_ONLY);
gridData = new GridData();
gridData.horizontalSpan = 1;
gridData.horizontalAlignment = GridData.FILL;
addToControlCombo.setLayoutData(gridData);
addToControlCombo.setItems(ADD_TO_CONTROL_OPTION_STRINGS);
options = new Composite(composite, SWT.NULL);
setDefaultLayout(options, 1);
label = new Label(options, SWT.NONE);
label.setText("Error cases:");
gridData = new GridData();
gridData.horizontalSpan = 1;
gridData.horizontalAlignment = GridData.FILL;
label.setLayoutData(gridData);
failValidateEdit= new Button(options, SWT.CHECK | SWT.LEFT);
failValidateEdit.setText("Fail validate edit");
gridData = new GridData();
failValidateEdit.setLayoutData(gridData);
changeFileContents= new Button(options, SWT.CHECK | SWT.LEFT);
changeFileContents.setText("Touch files during validate edit");
gridData = new GridData();
changeFileContents.setLayoutData(gridData);
updatePreferencePage();
return composite;
}
@Override
public void init(IWorkbench workbench) {
// do nothing
}
@Override
protected void performDefaults() {
IPreferenceStore store = getPreferenceStore();
filesAreEditedCombo.select(
getEditOptionIndex(store.getDefaultInt(IPessimisticFilesystemConstants.PREF_CHECKED_IN_FILES_EDITED)));
filesAreEditedNoPromptCombo.select(
getEditNoPromptOptionIndex(store.getDefaultInt(IPessimisticFilesystemConstants.PREF_CHECKED_IN_FILES_EDITED_NOPROMPT)));
filesAreSavedCombo.select(
getSaveOptionIndex(store.getDefaultInt(IPessimisticFilesystemConstants.PREF_CHECKED_IN_FILES_SAVED)));
addToControlCombo.select(
getAddToControlOptionIndex(store.getDefaultInt(IPessimisticFilesystemConstants.PREF_ADD_TO_CONTROL)));
failValidateEdit.setSelection(
store.getDefaultBoolean(IPessimisticFilesystemConstants.PREF_FAIL_VALIDATE_EDIT));
changeFileContents.setSelection(
store.getDefaultBoolean(IPessimisticFilesystemConstants.PREF_TOUCH_DURING_VALIDATE_EDIT));
super.performDefaults();
}
@Override
public boolean performOk() {
IPreferenceStore store = getPreferenceStore();
int selectionIndex = filesAreEditedCombo.getSelectionIndex();
if (selectionIndex != -1)
store.setValue(
IPessimisticFilesystemConstants.PREF_CHECKED_IN_FILES_EDITED,
EDIT_OPTION_KEYS[selectionIndex]);
selectionIndex = filesAreEditedNoPromptCombo.getSelectionIndex();
if (selectionIndex != -1)
store.setValue(
IPessimisticFilesystemConstants.PREF_CHECKED_IN_FILES_EDITED_NOPROMPT,
SAVE_OPTION_KEYS[selectionIndex]);
selectionIndex = filesAreSavedCombo.getSelectionIndex();
if (selectionIndex != -1)
store.setValue(
IPessimisticFilesystemConstants.PREF_CHECKED_IN_FILES_SAVED,
SAVE_OPTION_KEYS[selectionIndex]);
selectionIndex = addToControlCombo.getSelectionIndex();
if (selectionIndex != -1)
store.setValue(
IPessimisticFilesystemConstants.PREF_ADD_TO_CONTROL,
ADD_TO_CONTROL_OPTION_KEYS[selectionIndex]);
store.setValue(
IPessimisticFilesystemConstants.PREF_FAIL_VALIDATE_EDIT,
failValidateEdit.getSelection());
store.setValue(
IPessimisticFilesystemConstants.PREF_TOUCH_DURING_VALIDATE_EDIT,
changeFileContents.getSelection());
return true;
}
/*
* Sets the widgets to have the state stored in the preferences.
*/
protected void updatePreferencePage() {
IPreferenceStore store = getPreferenceStore();
filesAreEditedCombo.select(
getEditOptionIndex(store.getInt(IPessimisticFilesystemConstants.PREF_CHECKED_IN_FILES_EDITED)));
filesAreEditedNoPromptCombo.select(
getEditNoPromptOptionIndex(store.getInt(IPessimisticFilesystemConstants.PREF_CHECKED_IN_FILES_EDITED_NOPROMPT)));
filesAreSavedCombo.select(
getSaveOptionIndex(store.getInt(IPessimisticFilesystemConstants.PREF_CHECKED_IN_FILES_SAVED)));
addToControlCombo.select(
getAddToControlOptionIndex(store.getInt(IPessimisticFilesystemConstants.PREF_ADD_TO_CONTROL)));
failValidateEdit.setSelection(
store.getBoolean(IPessimisticFilesystemConstants.PREF_FAIL_VALIDATE_EDIT));
changeFileContents.setSelection(
store.getBoolean(IPessimisticFilesystemConstants.PREF_TOUCH_DURING_VALIDATE_EDIT));
}
/*
* Answers the index of the given key.
*/
protected int getEditOptionIndex(int key) {
for(int i= 0; i < EDIT_OPTION_KEYS.length; i++) {
if (EDIT_OPTION_KEYS[i] == key)
return i;
}
return -1;
}
/*
* Answers the index of the given key.
*/
protected int getSaveOptionIndex(int key) {
for(int i= 0; i < SAVE_OPTION_KEYS.length; i++) {
if (SAVE_OPTION_KEYS[i] == key)
return i;
}
return -1;
}
/*
* Answers the index of the given key.
*/
protected int getEditNoPromptOptionIndex(int key) {
for(int i= 0; i < SAVE_OPTION_KEYS.length; i++) {
if (SAVE_OPTION_KEYS[i] == key)
return i;
}
return -1;
}
/*
* Answers the index of the given key.
*/
protected int getAddToControlOptionIndex(int key) {
for(int i= 0; i < ADD_TO_CONTROL_OPTION_KEYS.length; i++) {
if (ADD_TO_CONTROL_OPTION_KEYS[i] == key)
return i;
}
return -1;
}
}