blob: 6c56188bc7a068ed3f8225890951e84244b1ddce [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 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
*******************************************************************************/
//------------------------------------------------------------------------------
// Copyright (c) 2005, 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 implementation
//------------------------------------------------------------------------------
package org.eclipse.epf.richtext.preferences;
import org.eclipse.epf.richtext.RichTextPlugin;
import org.eclipse.epf.richtext.RichTextResources;
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;
/**
* The Preference page for the rich text editor.
*
* @author Kelvin Low
* @since 1.0
*/
public class RichTextPreferencePage extends PreferencePage implements
IWorkbenchPreferencePage, SelectionListener, ModifyListener {
private IPreferenceStore store;
private Text lineWidthText;
private Button indentCheckbox;
private Text indentSizeText;
/**
* @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
*/
public void init(IWorkbench workbench) {
store = RichTextPlugin.getDefault().getPreferenceStore();
}
/**
* @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
*/
protected Control createContents(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
composite.setLayout(new GridLayout(1, false));
composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Composite widthComposite = new Composite(composite, SWT.NONE);
widthComposite.setLayout(new GridLayout(2, false));
widthComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Label lineWidthLabel = new Label(widthComposite, SWT.NONE);
lineWidthLabel.setText(RichTextResources.maxCharsPerLineLabel_text);
lineWidthText = new Text(widthComposite, SWT.BORDER);
lineWidthText.setText(store.getString(RichTextPreferences.LINE_WIDTH));
lineWidthText.setTextLimit(3);
GridData gridData = new GridData();
gridData.widthHint = 25;
lineWidthText.setLayoutData(gridData);
lineWidthText.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
}
});
Composite indentComposite = new Composite(composite, SWT.NONE);
indentComposite.setLayout(new GridLayout(2, false));
indentComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
indentCheckbox = new Button(indentComposite, SWT.CHECK);
indentCheckbox.setText(RichTextResources.indentHTMLCheckbox_text);
indentCheckbox.setSelection(store
.getBoolean(RichTextPreferences.INDENT));
new Label(indentComposite, SWT.NONE);
Label indentSizeLabel = new Label(indentComposite, SWT.NONE);
gridData = new GridData();
gridData.horizontalIndent = 20;
indentSizeLabel.setLayoutData(gridData);
indentSizeLabel.setText(RichTextResources.indentSizeLabel_text);
indentSizeText = new Text(indentComposite, SWT.BORDER);
indentSizeText
.setText(store.getString(RichTextPreferences.INDENT_SIZE));
indentSizeText.setTextLimit(1);
gridData = new GridData();
gridData.widthHint = 10;
indentSizeText.setLayoutData(gridData);
indentSizeText.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
}
});
return composite;
}
/**
* @see org.eclipse.jface.preference.PreferencePage.performDefaults
*/
protected void performDefaults() {
super.performDefaults();
lineWidthText.setText(store
.getDefaultString(RichTextPreferences.LINE_WIDTH));
indentCheckbox.setSelection(store
.getDefaultBoolean(RichTextPreferences.INDENT));
indentSizeText.setText(store
.getDefaultString(RichTextPreferences.INDENT_SIZE));
}
/**
* @see org.eclipse.jface.preference.PreferencePage.performOk
*/
public boolean performOk() {
String lineWidthValue = lineWidthText.getText();
if (lineWidthValue != null && lineWidthValue.length() > 0) {
try {
int lineWidth = Integer.parseInt(lineWidthValue);
store.setValue(RichTextPreferences.LINE_WIDTH, lineWidth);
} catch (Exception e) {
}
}
boolean indentValue = indentCheckbox.getSelection();
store.setValue(RichTextPreferences.INDENT, indentValue);
String indentSizeValue = indentSizeText.getText();
if (indentSizeValue != null && indentSizeValue.length() > 0) {
try {
int indentSize = Integer.parseInt(indentSizeValue);
store.setValue(RichTextPreferences.INDENT_SIZE, indentSize);
} catch (Exception e) {
}
}
return true;
}
/**
* @see org.eclipse.swt.events.SelectionListener#widgetSelected(SelectionEvent)
*/
public void widgetSelected(SelectionEvent e) {
}
/**
* @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(SelectionEvent)
*/
public void widgetDefaultSelected(SelectionEvent e) {
}
/**
* @see org.eclipse.swt.events.ModifyListener#modifyText(ModifyEvent)
*/
public void modifyText(ModifyEvent e) {
}
}