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; } }