ac.soton.fmusim.components.ui.wizards.pages.AbstractComponentDefinitionPage.java Source code

Java tutorial

Introduction

Here is the source code for ac.soton.fmusim.components.ui.wizards.pages.AbstractComponentDefinitionPage.java

Source

/**
 * Copyright (c) 2013 University of Southampton.
 * 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
 */
package ac.soton.fmusim.components.ui.wizards.pages;

import java.util.List;

import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.CheckboxTableViewer;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
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.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;

import ac.soton.fmusim.components.ui.controls.CheckboxTableViewerContainer;
import ac.soton.fmusim.components.ui.controls.EditableTableViewerContainer;
import ac.soton.fmusim.components.ui.controls.EventBNamedComboContainer;
import ac.soton.fmusim.components.ui.providers.ColumnProvider;

/**
 * Abstract component definition page.
 * Contains methods for creating labelled UI controls.
 * 
 * @author vitaly
 *
 */
public abstract class AbstractComponentDefinitionPage extends WizardPage {

    public AbstractComponentDefinitionPage(String pageName) {
        super(pageName);
    }

    public AbstractComponentDefinitionPage(String pageName, String title, ImageDescriptor titleImage) {
        super(pageName, title, titleImage);
    }

    /**
     * Creates labeled control group.
     * 
     * @param parent
     * @param label
     * @param tooltip
     * @return
     */
    protected Group createLabeledGroup(Composite parent, String label, String tooltip) {
        Group group = new Group(parent, SWT.SHADOW_ETCHED_IN);
        group.setText(label);
        group.setToolTipText(tooltip);
        return group;
    }

    /**
     * Creates a labeled plate for use with any type of control.
     * 
     * @param parent parent control
     * @param name label name
     * @return
     */
    private Composite createLabeledPlate(Composite parent, String name) {
        Composite plate = new Composite(parent, SWT.NONE);
        GridLayout layout = new GridLayout(2, false);
        plate.setLayout(layout);

        Label label = new Label(plate, SWT.NONE);
        label.setText(name);
        label.setLayoutData(new GridData(100, SWT.DEFAULT));
        return plate;
    }

    /**
     * Creates labeled text control.
     * Label width is fixed to 100.
     * 
     * @param parent
     * @param label
     * @param tooltip 
     * @return
     */
    protected Text createLabeledText(Composite parent, String label, String tooltip) {
        Composite plate = createLabeledPlate(parent, label);
        Text text = new Text(plate, SWT.SINGLE | SWT.BORDER);
        text.setToolTipText(tooltip);
        text.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
        return text;
    }

    /**
     * Creates a labeled combo control.
     * Label width is fixed to 100.
     * 
     * @param parent parent control
     * @param name combo label
     * @param tooltip tooltip text
     * @return
     */
    protected EventBNamedComboContainer createLabeledEventBNamedCombo(Composite parent, String name,
            String tooltip) {
        Composite plate = createLabeledPlate(parent, name);
        EventBNamedComboContainer comboWrap = new EventBNamedComboContainer(
                new Combo(plate, SWT.DROP_DOWN | SWT.READ_ONLY));
        comboWrap.getCombo().setToolTipText(tooltip);
        comboWrap.getCombo().setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
        return comboWrap;
    }

    /**
     * Creates a labeled table with columns defined by the column providers and an optional viewer filter.
     * 
     * @param parent
     * @param labelText
     * @param tooltip
     * @param columnProviders 
     * @param filter
     * @return table viewer
     */
    public EditableTableViewerContainer createLabeledEditableTable(Composite parent, String labelText,
            String tooltip, List<ColumnProvider> columnProviders, ViewerFilter filter) {
        Composite plate = new Composite(parent, SWT.NONE);
        GridLayout layout = new GridLayout();
        plate.setLayout(layout);

        // label
        Label label = new Label(plate, SWT.NONE);
        label.setText(labelText);
        label.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));

        // table
        EditableTableViewerContainer tableWrap = new EditableTableViewerContainer(
                new TableViewer(plate, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION));
        tableWrap.getViewer().getTable().setToolTipText(tooltip);
        tableWrap.getViewer().getTable().setHeaderVisible(true);
        tableWrap.setColumnProviders(columnProviders, 0);
        tableWrap.getViewer().setContentProvider(ArrayContentProvider.getInstance());
        if (filter != null)
            tableWrap.getViewer().addFilter(filter);
        tableWrap.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

        return tableWrap;
    }

    /**
     * Creates a labeled check-box table with columns defined by the column providers and an optional viewer filter.
     * 
     * @param parent
     * @param labelText
     * @param tooltip
     * @param columnProviders 
     * @param filter
     * @return table viewer
     */
    public CheckboxTableViewerContainer createLabeledCheckboxTable(Composite parent, String labelText,
            String tooltip, List<ColumnProvider> columnProviders, ViewerFilter filter) {
        Composite plate = new Composite(parent, SWT.NONE);
        GridLayout layout = new GridLayout();
        plate.setLayout(layout);

        // label
        Label label = new Label(plate, SWT.NONE);
        label.setText(labelText);
        label.setLayoutData(new GridData());

        // table
        CheckboxTableViewerContainer tableWrap = new CheckboxTableViewerContainer(
                CheckboxTableViewer.newCheckList(plate, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER));
        tableWrap.getViewer().getTable().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
        tableWrap.getViewer().getTable().setToolTipText(tooltip);
        tableWrap.getViewer().getTable().setHeaderVisible(true);
        tableWrap.setColumnProviders(columnProviders);
        tableWrap.getViewer().setContentProvider(ArrayContentProvider.getInstance());
        if (filter != null)
            tableWrap.getViewer().addFilter(filter);

        return tableWrap;
    }

}