org.eclipse.ptp.internal.rdt.editor.preferences.HeaderFooterFieldEditor.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.ptp.internal.rdt.editor.preferences.HeaderFooterFieldEditor.java

Source

/*******************************************************************************
 * 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);
        Boolean highContrast = Display.getDefault().getHighContrast();
        if (!highContrast)
            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));
        if (!highContrast)
            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));
        if (!highContrast)
            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));
        if (!highContrast)
            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;
        if (!highContrast)
            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));
        if (!highContrast)
            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));
        if (!highContrast)
            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));
        if (!highContrast)
            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;
    }

}