org.eclipse.jubula.client.teststyle.properties.dialogs.contexts.EditContextDialog.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.jubula.client.teststyle.properties.dialogs.contexts.EditContextDialog.java

Source

/*******************************************************************************
 * Copyright (c) 2004, 2012 BREDEX GmbH.
 * 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:
 *     BREDEX GmbH - initial API and implementation and/or initial documentation
 *******************************************************************************/
package org.eclipse.jubula.client.teststyle.properties.dialogs.contexts;

import java.util.Map;
import java.util.TreeMap;

import org.eclipse.jface.dialogs.TrayDialog;
import org.eclipse.jface.viewers.CheckStateChangedEvent;
import org.eclipse.jface.viewers.CheckboxTableViewer;
import org.eclipse.jface.viewers.ICheckStateListener;
import org.eclipse.jubula.client.teststyle.checks.BaseCheck;
import org.eclipse.jubula.client.teststyle.checks.contexts.BaseContext;
import org.eclipse.jubula.client.teststyle.i18n.Messages;
import org.eclipse.jubula.client.teststyle.properties.dialogs.DlgUtils;
import org.eclipse.jubula.client.teststyle.properties.dialogs.contexts.provider.ContextCheckProvider;
import org.eclipse.jubula.client.teststyle.properties.dialogs.contexts.provider.ContextContentProvider;
import org.eclipse.jubula.client.teststyle.properties.dialogs.contexts.provider.ContextLabelProvider;
import org.eclipse.jubula.client.ui.constants.ContextHelpIds;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.ui.PlatformUI;

/**
 * @author marcell
 * @created Oct 25, 2010
 */
public class EditContextDialog extends TrayDialog {

    // Constants
    /** Style for the CheckboxTableViewer */
    public static final int CON_STL = SWT.FULL_SELECTION | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL;
    /** Name of the edit contexts window */
    public static final String CONT_TITLE = Messages.EditContextDialogTitle;
    /** Header text for the name column */
    private static final String NAME_COLUMN = Messages.EditContextColumnName;
    /** Header text for the description column */
    private static final String DESCRIPTION_COLUMN = Messages.EditContextColumnDescription;
    /** Column width for the name column */
    private static final int NAME_COLUMN_WIDTH = 200;
    /** Column width for the description column */
    private static final int DESCRIPTION_COLUMN_WIDTH = 100;

    /** ContextHelpId for TESTSTYLE_PROPERTY_PAGE_EDIT_CONTEXT */
    private static final String TESTSTYLE_PROPERTY_PAGE_EDIT_CONTEXT = ContextHelpIds.PRAEFIX
            + "testStylePropertyPageEditContextContextId"; //$NON-NLS-1$

    // Members
    /** Check that will be edited */
    private BaseCheck m_check;
    /** TreeMap copy of the context activity */
    private Map<BaseContext, Boolean> m_contexts;

    // GUI-Components
    /** The listviewer with the elements */
    private CheckboxTableViewer m_tablView;

    /**
     * @param parentShell
     *            The parent shell
     * @param check
     *            The check that will be edited.
     */
    public EditContextDialog(Shell parentShell, BaseCheck check) {
        super(parentShell);
        setShellStyle(SWT.CLOSE | SWT.TITLE | SWT.BORDER | SWT.APPLICATION_MODAL | SWT.RESIZE);
        this.m_check = check;
        this.m_contexts = new TreeMap<BaseContext, Boolean>(check.getContexts());
    }

    /**
     * {@inheritDoc}
     */
    protected Control createDialogArea(Composite parent) {
        // Creates a nicely fitting composite
        Composite composite = DlgUtils.createFillComposite(parent);
        // Creates the list
        createTable(composite);
        // Events for the list
        setTableEvents();

        // Set an approriate Title
        getShell().setText(CONT_TITLE);

        setHelpAvailable(true);
        PlatformUI.getWorkbench().getHelpSystem().setHelp(getShell(), TESTSTYLE_PROPERTY_PAGE_EDIT_CONTEXT);
        return super.createDialogArea(parent);
    }

    /**
     * 
     * @param parent
     *            The composite where the list will be stored.
     */
    private void createTable(Composite parent) {
        m_tablView = CheckboxTableViewer.newCheckList(parent, CON_STL);

        m_tablView.setColumnProperties(new String[] { NAME_COLUMN, DESCRIPTION_COLUMN, });
        Table table = m_tablView.getTable();

        // Then we configure the table approriate
        table.setHeaderVisible(true);
        table.setLinesVisible(true);

        // Now we add columns to this table
        TableColumn nameColumn = new TableColumn(table, SWT.NONE);
        nameColumn.setWidth(NAME_COLUMN_WIDTH);
        nameColumn.setText(NAME_COLUMN);

        TableColumn descriptionColumn = new TableColumn(table, SWT.NONE);
        descriptionColumn.setWidth(DESCRIPTION_COLUMN_WIDTH);
        descriptionColumn.setText(DESCRIPTION_COLUMN);

        m_tablView.setContentProvider(new ContextContentProvider());
        m_tablView.setCheckStateProvider(new ContextCheckProvider(m_contexts));
        m_tablView.setLabelProvider(new ContextLabelProvider());

        m_tablView.setInput(m_contexts);

        // Let the name column fit nicely
        nameColumn.pack();
        nameColumn.setWidth(nameColumn.getWidth() + 5);

        descriptionColumn.pack();
        descriptionColumn.setWidth(descriptionColumn.getWidth() + 5);

    }

    /**
     * Sets the events for the listviewer.
     */
    public void setTableEvents() {
        m_tablView.addCheckStateListener(new ICheckStateListener() {

            @SuppressWarnings("synthetic-access")
            public void checkStateChanged(CheckStateChangedEvent event) {
                BaseContext context = (BaseContext) event.getElement();
                m_contexts.put(context, event.getChecked());
                m_tablView.refresh();
            }
        });
    }

    /**
     * {@inheritDoc}
     */
    protected void okPressed() {
        super.okPressed();
        this.m_check.setContexts(m_contexts);
    }

}