blob: a9038b2bed3f33ae8b5f1a49cd0846e3f7761fe8 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012 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.ptp.internal.rdt.editor.preferences;
import org.eclipse.jface.preference.FieldEditor;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
/**
* A field editor for a header and footer on a page.
*
* @author batthish
*/
public class HeaderFooterFieldEditor extends FieldEditor {
private Composite _composite;
private Text hLeft;
private Text hCenter;
private Text hRight;
private Text fLeft;
private Text fCenter;
private Text fRight;
private Label _spacer;
/**
* The constructor
*
* @param parent the parent composite
*/
public HeaderFooterFieldEditor(Composite parent) {
init(PrintPreferencePage.PRINT_KEY, "");
createControl(parent);
}
/*
* (non-Javadoc)
* @see org.eclipse.jface.preference.FieldEditor#adjustForNumColumns(int)
*/
@Override
protected void adjustForNumColumns(int columns) {
if (_composite != null) {
GridData gd = (GridData) _composite.getLayoutData();
gd.horizontalSpan = columns - 1;
gd = (GridData) _spacer.getLayoutData();
gd.horizontalSpan = columns ;
}
}
/*
* (non-Javadoc)
* @see org.eclipse.jface.preference.FieldEditor#doFillIntoGrid(org.eclipse.swt.widgets.Composite, int)
*/
@Override
protected void doFillIntoGrid(Composite parent, int columns) {
_spacer = new Label(parent, SWT.NONE);
GridData spData = new GridData(GridData.FILL_HORIZONTAL);
spData.horizontalSpan = columns;
_spacer.setLayoutData(spData);
new Label(parent, SWT.NONE);
_composite = new Composite(parent, SWT.NONE);
GridData gd = new GridData(GridData.FILL_BOTH);
gd.verticalSpan = 4;
gd.horizontalSpan = columns - 1;
_composite.setLayoutData(gd);
GridLayout gl = new GridLayout(3, true);
gl.marginHeight = 0;
gl.marginWidth = 0;
_composite.setLayout(gl);
Label header = new Label(parent, SWT.NONE);
header.setText(PreferenceMessages.Header);
Label spacer = new Label(parent, SWT.NONE);
spacer.setLayoutData(new GridData(GridData.FILL_VERTICAL));
Label footer = new Label(parent, SWT.NONE);
footer.setText(PreferenceMessages.Footer);
Label left = new Label(_composite, SWT.NONE);
left.setText(PreferenceMessages.Left);
gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
left.setLayoutData(gd);
Label center = new Label(_composite, SWT.NONE);
center.setText(PreferenceMessages.Center);
center.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_CENTER));
Label right = new Label(_composite, SWT.NONE);
right.setText(PreferenceMessages.Right);
right.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
Composite page = new Composite(_composite, SWT.BORDER);
gl = new GridLayout(3, true);
page.setLayout(gl);
page.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE));
gd = new GridData(GridData.FILL_BOTH);
gd.horizontalSpan = 3;
page.setLayoutData(gd);
hLeft = new Text(page, SWT.BORDER | SWT.LEFT);
hLeft.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
hLeft.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE));
new HeaderFooterContentProposalAdapter(hLeft);
hCenter = new Text(page, SWT.BORDER | SWT.CENTER);
hCenter.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
hCenter.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE));
new HeaderFooterContentProposalAdapter(hCenter);
hRight = new Text(page, SWT.BORDER | SWT.RIGHT);
hRight.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
hRight.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE));
new HeaderFooterContentProposalAdapter(hRight);
spacer = new Label(page, SWT.NONE);
gd = new GridData(GridData.FILL_BOTH);
gd.horizontalSpan = 3;
spacer.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE));
spacer.setLayoutData(gd);
fLeft = new Text(page, SWT.BORDER | SWT.LEFT);
fLeft.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
fLeft.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE));
new HeaderFooterContentProposalAdapter(fLeft);
fCenter = new Text(page, SWT.BORDER | SWT.CENTER);
fCenter.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
fCenter.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE));
new HeaderFooterContentProposalAdapter(fCenter);
fRight = new Text(page, SWT.BORDER | SWT.RIGHT);
fRight.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
fRight.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE));
new HeaderFooterContentProposalAdapter(fRight);
}
/*
* (non-Javadoc)
* @see org.eclipse.jface.preference.FieldEditor#doLoad()
*/
@Override
protected void doLoad() {
IPreferenceStore store = getPreferenceStore();
if (hRight != null)
hRight.setText(store.getString(PrintPreferencePage.HEADER_KEY + PrintPreferencePage.RIGHT_KEY));
if (hCenter != null)
hCenter.setText(store.getString(PrintPreferencePage.HEADER_KEY + PrintPreferencePage.CENTER_KEY));
if (hLeft != null)
hLeft.setText(store.getString(PrintPreferencePage.HEADER_KEY + PrintPreferencePage.LEFT_KEY));
if (fRight != null)
fRight.setText(store.getString(PrintPreferencePage.FOOTER_KEY + PrintPreferencePage.RIGHT_KEY));
if (fCenter != null)
fCenter.setText(store.getString(PrintPreferencePage.FOOTER_KEY + PrintPreferencePage.CENTER_KEY));
if (fLeft != null)
fLeft.setText(store.getString(PrintPreferencePage.FOOTER_KEY + PrintPreferencePage.LEFT_KEY));
}
/*
* (non-Javadoc)
* @see org.eclipse.jface.preference.FieldEditor#doLoadDefault()
*/
@Override
protected void doLoadDefault() {
IPreferenceStore store = getPreferenceStore();
if (hRight != null)
hRight.setText(store.getDefaultString(PrintPreferencePage.HEADER_KEY + PrintPreferencePage.RIGHT_KEY));
if (hCenter != null)
hCenter.setText(store.getDefaultString(PrintPreferencePage.HEADER_KEY + PrintPreferencePage.CENTER_KEY));
if (hLeft != null)
hLeft.setText(store.getDefaultString(PrintPreferencePage.HEADER_KEY + PrintPreferencePage.LEFT_KEY));
if (fRight != null)
fRight.setText(store.getDefaultString(PrintPreferencePage.FOOTER_KEY + PrintPreferencePage.RIGHT_KEY));
if (fCenter != null)
fCenter.setText(store.getDefaultString(PrintPreferencePage.FOOTER_KEY + PrintPreferencePage.CENTER_KEY));
if (fLeft != null)
fLeft.setText(store.getDefaultString(PrintPreferencePage.FOOTER_KEY + PrintPreferencePage.LEFT_KEY));
}
/*
* (non-Javadoc)
* @see org.eclipse.jface.preference.FieldEditor#doStore()
*/
@Override
protected void doStore() {
IPreferenceStore store = getPreferenceStore();
if (hRight != null)
store.setValue(PrintPreferencePage.HEADER_KEY + PrintPreferencePage.RIGHT_KEY, hRight.getText());
if (hCenter != null)
store.setValue(PrintPreferencePage.HEADER_KEY + PrintPreferencePage.CENTER_KEY, hCenter.getText());
if (hLeft != null)
store.setValue(PrintPreferencePage.HEADER_KEY + PrintPreferencePage.LEFT_KEY, hLeft.getText());
if (fRight != null)
store.setValue(PrintPreferencePage.FOOTER_KEY + PrintPreferencePage.RIGHT_KEY, fRight.getText());
if (fCenter != null)
store.setValue(PrintPreferencePage.FOOTER_KEY + PrintPreferencePage.CENTER_KEY, fCenter.getText());
if (fLeft != null)
store.setValue(PrintPreferencePage.FOOTER_KEY + PrintPreferencePage.LEFT_KEY, fLeft.getText());
}
/*
* (non-Javadoc)
* @see org.eclipse.jface.preference.FieldEditor#getNumberOfControls()
*/
@Override
public int getNumberOfControls() {
return 2;
}
}