blob: ba8d2869ed9eee9ab07c04798b3031dcf513c0ec [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2006 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ui.examples.readmetool;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.PlatformUI;
/**
* This class implements a sample preference page that is
* added to the preference dialog based on the registration.
*/
public class ReadmePreferencePage extends PreferencePage implements
IWorkbenchPreferencePage, SelectionListener, ModifyListener {
private Button radioButton1;
private Button radioButton2;
private Button radioButton3;
private Button checkBox1;
private Button checkBox2;
private Button checkBox3;
private Text textField;
/**
* Creates an new checkbox instance and sets the default
* layout data.
*
* @param group the composite in which to create the checkbox
* @param label the string to set into the checkbox
* @return the new checkbox
*/
private Button createCheckBox(Composite group, String label) {
Button button = new Button(group, SWT.CHECK | SWT.LEFT);
button.setText(label);
button.addSelectionListener(this);
GridData data = new GridData();
button.setLayoutData(data);
return button;
}
/**
* Creates composite control and sets the default layout data.
*
* @param parent the parent of the new composite
* @param numColumns the number of columns for the new composite
* @return the newly-created coposite
*/
private Composite createComposite(Composite parent, int numColumns) {
Composite composite = new Composite(parent, SWT.NULL);
//GridLayout
GridLayout layout = new GridLayout();
layout.numColumns = numColumns;
composite.setLayout(layout);
//GridData
GridData data = new GridData();
data.verticalAlignment = GridData.FILL;
data.horizontalAlignment = GridData.FILL;
composite.setLayoutData(data);
return composite;
}
/** (non-Javadoc)
* Method declared on PreferencePage
*/
protected Control createContents(Composite parent) {
PlatformUI.getWorkbench().getHelpSystem().setHelp(parent,
IReadmeConstants.PREFERENCE_PAGE_CONTEXT);
//composite_textField << parent
Composite composite_textField = createComposite(parent, 2);
createLabel(composite_textField, MessageUtil.getString("Text_Field")); //$NON-NLS-1$
textField = createTextField(composite_textField);
createPushButton(composite_textField, MessageUtil.getString("Change")); //$NON-NLS-1$
//composite_tab << parent
Composite composite_tab = createComposite(parent, 2);
createLabel(composite_tab, MessageUtil
.getString("Radio_Button_Options")); //$NON-NLS-1$
//
tabForward(composite_tab);
//radio button composite << tab composite
Composite composite_radioButton = createComposite(composite_tab, 1);
radioButton1 = createRadioButton(composite_radioButton, MessageUtil
.getString("Radio_button_1")); //$NON-NLS-1$
radioButton2 = createRadioButton(composite_radioButton, MessageUtil
.getString("Radio_button_2")); //$NON-NLS-1$
radioButton3 = createRadioButton(composite_radioButton, MessageUtil
.getString("Radio_button_3")); //$NON-NLS-1$
//composite_tab2 << parent
Composite composite_tab2 = createComposite(parent, 2);
createLabel(composite_tab2, MessageUtil.getString("Check_Box_Options")); //$NON-NLS-1$
//
tabForward(composite_tab2);
//composite_checkBox << composite_tab2
Composite composite_checkBox = createComposite(composite_tab2, 1);
checkBox1 = createCheckBox(composite_checkBox, MessageUtil
.getString("Check_box_1")); //$NON-NLS-1$
checkBox2 = createCheckBox(composite_checkBox, MessageUtil
.getString("Check_box_2")); //$NON-NLS-1$
checkBox3 = createCheckBox(composite_checkBox, MessageUtil
.getString("Check_box_3")); //$NON-NLS-1$
initializeValues();
//font = null;
return new Composite(parent, SWT.NULL);
}
/**
* Utility method that creates a label instance
* and sets the default layout data.
*
* @param parent the parent for the new label
* @param text the text for the new label
* @return the new label
*/
private Label createLabel(Composite parent, String text) {
Label label = new Label(parent, SWT.LEFT);
label.setText(text);
GridData data = new GridData();
data.horizontalSpan = 2;
data.horizontalAlignment = GridData.FILL;
label.setLayoutData(data);
return label;
}
/**
* Utility method that creates a push button instance
* and sets the default layout data.
*
* @param parent the parent for the new button
* @param label the label for the new button
* @return the newly-created button
*/
private Button createPushButton(Composite parent, String label) {
Button button = new Button(parent, SWT.PUSH);
button.setText(label);
button.addSelectionListener(this);
GridData data = new GridData();
data.horizontalAlignment = GridData.FILL;
button.setLayoutData(data);
return button;
}
/**
* Utility method that creates a radio button instance
* and sets the default layout data.
*
* @param parent the parent for the new button
* @param label the label for the new button
* @return the newly-created button
*/
private Button createRadioButton(Composite parent, String label) {
Button button = new Button(parent, SWT.RADIO | SWT.LEFT);
button.setText(label);
button.addSelectionListener(this);
GridData data = new GridData();
button.setLayoutData(data);
return button;
}
/**
* Create a text field specific for this application
*
* @param parent the parent of the new text field
* @return the new text field
*/
private Text createTextField(Composite parent) {
Text text = new Text(parent, SWT.SINGLE | SWT.BORDER);
text.addModifyListener(this);
GridData data = new GridData();
data.horizontalAlignment = GridData.FILL;
data.grabExcessHorizontalSpace = true;
data.verticalAlignment = GridData.CENTER;
data.grabExcessVerticalSpace = false;
text.setLayoutData(data);
return text;
}
/**
* The <code>ReadmePreferencePage</code> implementation of this
* <code>PreferencePage</code> method
* returns preference store that belongs to the our plugin.
* This is important because we want to store
* our preferences separately from the workbench.
*/
protected IPreferenceStore doGetPreferenceStore() {
return ReadmePlugin.getDefault().getPreferenceStore();
}
/* (non-Javadoc)
* Method declared on IWorkbenchPreferencePage
*/
public void init(IWorkbench workbench) {
// do nothing
}
/**
* Initializes states of the controls using default values
* in the preference store.
*/
private void initializeDefaults() {
IPreferenceStore store = getPreferenceStore();
checkBox1.setSelection(store
.getDefaultBoolean(IReadmeConstants.PRE_CHECK1));
checkBox2.setSelection(store
.getDefaultBoolean(IReadmeConstants.PRE_CHECK2));
checkBox3.setSelection(store
.getDefaultBoolean(IReadmeConstants.PRE_CHECK3));
radioButton1.setSelection(false);
radioButton2.setSelection(false);
radioButton3.setSelection(false);
int choice = store.getDefaultInt(IReadmeConstants.PRE_RADIO_CHOICE);
switch (choice) {
case 1:
radioButton1.setSelection(true);
break;
case 2:
radioButton2.setSelection(true);
break;
case 3:
radioButton3.setSelection(true);
break;
}
textField.setText(store.getDefaultString(IReadmeConstants.PRE_TEXT));
}
/**
* Initializes states of the controls from the preference store.
*/
private void initializeValues() {
IPreferenceStore store = getPreferenceStore();
checkBox1.setSelection(store.getBoolean(IReadmeConstants.PRE_CHECK1));
checkBox2.setSelection(store.getBoolean(IReadmeConstants.PRE_CHECK2));
checkBox3.setSelection(store.getBoolean(IReadmeConstants.PRE_CHECK3));
int choice = store.getInt(IReadmeConstants.PRE_RADIO_CHOICE);
switch (choice) {
case 1:
radioButton1.setSelection(true);
break;
case 2:
radioButton2.setSelection(true);
break;
case 3:
radioButton3.setSelection(true);
break;
}
textField.setText(store.getString(IReadmeConstants.PRE_TEXT));
}
/** (non-Javadoc)
* Method declared on ModifyListener
*/
public void modifyText(ModifyEvent event) {
//Do nothing on a modification in this example
}
/* (non-Javadoc)
* Method declared on PreferencePage
*/
protected void performDefaults() {
super.performDefaults();
initializeDefaults();
}
/* (non-Javadoc)
* Method declared on PreferencePage
*/
public boolean performOk() {
storeValues();
ReadmePlugin.getDefault().savePluginPreferences();
return true;
}
/**
* Stores the values of the controls back to the preference store.
*/
private void storeValues() {
IPreferenceStore store = getPreferenceStore();
store.setValue(IReadmeConstants.PRE_CHECK1, checkBox1.getSelection());
store.setValue(IReadmeConstants.PRE_CHECK2, checkBox2.getSelection());
store.setValue(IReadmeConstants.PRE_CHECK3, checkBox3.getSelection());
int choice = 1;
if (radioButton2.getSelection())
choice = 2;
else if (radioButton3.getSelection())
choice = 3;
store.setValue(IReadmeConstants.PRE_RADIO_CHOICE, choice);
store.setValue(IReadmeConstants.PRE_TEXT, textField.getText());
}
/**
* Creates a tab of one horizontal spans.
*
* @param parent the parent in which the tab should be created
*/
private void tabForward(Composite parent) {
Label vfiller = new Label(parent, SWT.LEFT);
GridData gridData = new GridData();
gridData = new GridData();
gridData.horizontalAlignment = GridData.BEGINNING;
gridData.grabExcessHorizontalSpace = false;
gridData.verticalAlignment = GridData.CENTER;
gridData.grabExcessVerticalSpace = false;
vfiller.setLayoutData(gridData);
}
/** (non-Javadoc)
* Method declared on SelectionListener
*/
public void widgetDefaultSelected(SelectionEvent event) {
//Handle a default selection. Do nothing in this example
}
/** (non-Javadoc)
* Method declared on SelectionListener
*/
public void widgetSelected(SelectionEvent event) {
//Do nothing on selection in this example;
}
}