org.eclipse.ui.ide.markers.compatibility.internal.DescriptionConfigurationArea.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.ui.ide.markers.compatibility.internal.DescriptionConfigurationArea.java

Source

package org.eclipse.ui.ide.markers.compatibility.internal;

/*******************************************************************************
 * Copyright (c) 2007 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
 ******************************************************************************/
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.TraverseEvent;
import org.eclipse.swt.events.TraverseListener;
import org.eclipse.swt.graphics.FontMetrics;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.ide.markers.compatibility.api.FilterConfigurationArea;
import org.eclipse.ui.ide.markers.compatibility.api.MarkerFieldFilter;
import org.eclipse.ui.ide.markers.compatibility.api.MarkerSupportConstants;
import org.eclipse.ui.ide.markers.compatibility.api.internal.MarkerMessages;

/**
 * DescriptionConfigurationArea is the configuration area for description
 * configuration fields.
 * 
 */
public class DescriptionConfigurationArea extends FilterConfigurationArea {

    private Combo descriptionCombo;
    private Text descriptionText;

    /**
     * Create new instance of the receiver.
     */
    public DescriptionConfigurationArea() {
        super();
    }

    /*
     * (non-Javadoc)
     * 
     * @see org.eclipse.ui.internal.provisional.views.markers.api.FilterConfigurationArea#apply(org.eclipse.ui.internal.provisional.views.markers.api.MarkerFieldFilter)
     */
    public void apply(MarkerFieldFilter filter) {
        DescriptionFieldFilter desc = (DescriptionFieldFilter) filter;
        if (descriptionCombo.getSelectionIndex() == 0)
            desc.setContainsModifier(MarkerSupportConstants.CONTAINS_KEY);
        else
            desc.setContainsModifier(MarkerSupportConstants.DOES_NOT_CONTAIN_KEY);
        desc.setContainsText(descriptionText.getText());

    }

    /*
     * (non-Javadoc)
     * 
     * @see org.eclipse.ui.internal.provisional.views.markers.api.FilterConfigurationArea#createContents(org.eclipse.swt.widgets.Composite)
     */
    public void createContents(Composite parent) {
        createDescriptionGroup(parent);
    }

    /*
     * (non-Javadoc)
     * 
     * @see org.eclipse.ui.internal.provisional.views.markers.api.FilterConfigurationArea#initialize(org.eclipse.ui.internal.provisional.views.markers.api.MarkerFieldFilter)
     */
    public void initialize(MarkerFieldFilter filter) {
        DescriptionFieldFilter desc = (DescriptionFieldFilter) filter;
        if (desc.getContainsModifier().equals(MarkerSupportConstants.CONTAINS_KEY))
            descriptionCombo.select(0);
        else
            descriptionCombo.select(1);

        descriptionText.setText(desc.getContainsText());

    }

    /**
     * Create the group for the description filter.
     * 
     * @param parent
     */
    private void createDescriptionGroup(Composite parent) {

        Composite descriptionComposite = new Composite(parent, SWT.NONE);
        descriptionComposite.setLayout(new GridLayout(3, false));
        descriptionComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

        Label descriptionLabel = new Label(descriptionComposite, SWT.NONE);
        descriptionLabel.setText(MarkerMessages.filtersDialog_descriptionLabel);

        descriptionCombo = new Combo(descriptionComposite, SWT.READ_ONLY);
        descriptionCombo.add(MarkerMessages.filtersDialog_contains);
        descriptionCombo.add(MarkerMessages.filtersDialog_doesNotContain);

        // Prevent Esc and Return from closing the dialog when the combo is
        // active.
        descriptionCombo.addTraverseListener(new TraverseListener() {
            public void keyTraversed(TraverseEvent e) {
                if (e.detail == SWT.TRAVERSE_ESCAPE || e.detail == SWT.TRAVERSE_RETURN) {
                    e.doit = false;
                }
            }
        });

        GC gc = new GC(descriptionComposite);
        gc.setFont(JFaceResources.getDialogFont());
        FontMetrics fontMetrics = gc.getFontMetrics();
        gc.dispose();

        descriptionText = new Text(descriptionComposite, SWT.SINGLE | SWT.BORDER);
        GridData data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
        data.widthHint = Dialog.convertWidthInCharsToPixels(fontMetrics, 25);
        descriptionText.setLayoutData(data);
    }

}