package org.swtchart.ext.internal.properties;
import org.eclipse.jface.preference.ColorSelector;
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.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Spinner;
import org.eclipse.swt.widgets.Text;
import org.swtchart.ext.InteractiveChart;
/**
* Abstract class for properties page.
*/
public abstract class AbstractPage extends PreferencePage {
/** the chart */
protected InteractiveChart chart;
/** the properties resources */
protected PropertiesResources resources;
/**
* Constructor.
*
* @param chart
* the chart
* @param resources
* the properties resources
* @param title
* the title
*/
public AbstractPage(InteractiveChart chart,
PropertiesResources resources, String title) {
this.chart = chart;
this.resources = resources;
setTitle(title);
}
/*
* @see PreferencePage#performOk()
*/
@Override
public boolean performOk() {
if (getControl() != null) {
apply();
chart.redraw();
}
return true;
}
/**
* Apply the values specified on controls.
*/
abstract public void apply();
/**
* Creates the group control which contains two columns for controls.
*
* @param parent
* the parent to create the group control
* @param text
* the group name
* @param equal
* true if making columns equal width
* @return the group
*/
protected Group createGroupControl(Composite parent, String text,
boolean equal) {
Group group = new Group(parent, SWT.NULL);
group.setText(text);
group.setLayout(new GridLayout(2, equal));
group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
return group;
}
/**
* Creates the label.
*
* @param parent
* the parent to create the label
* @param text
* the label text
* @return the label
*/
protected Label createLabelControl(Composite parent, String text) {
Label label = new Label(parent, SWT.NULL);
label.setText(text);
GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
gridData.horizontalSpan = 1;
label.setLayoutData(gridData);
return label;
}
/**
* Creates the color selector.
*
* @param parent
* the parent to create the color selector
* @return the color selector
*/
protected ColorSelector createColorButtonControl(Composite parent) {
return new ColorSelector(parent);
}
/**
* Creates the check box.
*
* @param parent
* the parent to create the check box
* @param label
* the label text
* @return {@link Button} control
*/
protected Button createCheckBoxControl(Composite parent, String label) {
Composite composite = new Composite(parent, SWT.NULL);
GridData gridData = new GridData();
gridData.horizontalSpan = 2;
composite.setLayoutData(gridData);
composite.setLayout(new GridLayout(2, false));
Button button = new Button(composite, SWT.CHECK);
GridData gridData1 = new GridData();
gridData1.horizontalSpan = 1;
button.setLayoutData(gridData1);
createLabelControl(composite, label);
return button;
}
/**
* Creates the text field.
*
* @param parent
* the parent to create the text field
* @return the text
*/
protected Text createTextControl(Composite parent) {
Text text = new Text(parent, SWT.BORDER | SWT.SINGLE);
GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
gridData.horizontalSpan = 1;
text.setLayoutData(gridData);
return text;
}
/**
* Creates the combo control.
*
* @param parent
* the parent to create the combo
* @param items
* the combo items
* @return the combo
*/
protected Combo createComboControl(Composite parent, String[] items) {
Combo combo = new Combo(parent, SWT.BORDER | SWT.SINGLE);
combo.setItems(items);
GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
gridData.horizontalSpan = 1;
combo.setLayoutData(gridData);
return combo;
}
/**
* Creates the spinner.
*
* @param parent
* the parent to create the spinner
* @param min
* the minimum value of spinner
* @param max
* the maximum value of spinner
* @return the spinner
*/
protected Spinner createSpinnerControl(Composite parent, int min, int max) {
Spinner spinner = new Spinner(parent, SWT.BORDER);
spinner.setMinimum(min);
spinner.setMaximum(max);
GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
gridData.horizontalSpan = 1;
spinner.setLayoutData(gridData);
return spinner;
}
}