org.eclipse.thym.ui.wizard.export.CheckboxTableSelectionGroup.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.thym.ui.wizard.export.CheckboxTableSelectionGroup.java

Source

/*******************************************************************************
 * Copyright (c) 2013, 2014 Red Hat, Inc. 
 * 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:
 *        Red Hat Inc. - initial API and implementation and/or initial documentation
 *******************************************************************************/
package org.eclipse.thym.ui.wizard.export;

import org.eclipse.jface.viewers.CheckStateChangedEvent;
import org.eclipse.jface.viewers.CheckboxTableViewer;
import org.eclipse.jface.viewers.ICheckStateListener;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Table;

public class CheckboxTableSelectionGroup extends Group {

    private CheckboxTableViewer tableViewer;

    public CheckboxTableSelectionGroup(Composite parent, int style) {
        super(parent, style);
        createGroup();
    }

    private void createGroup() {
        setLayout(new GridLayout(2, false));
        tableViewer = CheckboxTableViewer.newCheckList(this, SWT.BORDER | SWT.FULL_SELECTION);
        Table table = tableViewer.getTable();
        table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
        tableViewer.addCheckStateListener(new ICheckStateListener() {
            @Override
            public void checkStateChanged(CheckStateChangedEvent event) {
                sendSelectionEvent();
            }
        });

        Composite projectButtons = new Composite(this, SWT.NONE);
        projectButtons.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, false, 1, 1));
        RowLayout rl_projectButtons = new RowLayout(SWT.VERTICAL);
        rl_projectButtons.center = true;
        rl_projectButtons.fill = true;
        rl_projectButtons.justify = true;
        rl_projectButtons.pack = false;
        projectButtons.setLayout(rl_projectButtons);

        Button btnSelectAll = new Button(projectButtons, SWT.NONE);
        btnSelectAll.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                tableViewer.setAllChecked(true);
                sendSelectionEvent();
            }
        });
        btnSelectAll.setText("Select All");

        Button btnDeselectAll = new Button(projectButtons, SWT.NONE);
        btnDeselectAll.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                tableViewer.setAllChecked(false);
                sendSelectionEvent();
            }
        });
        btnDeselectAll.setText("Deselect All");
    }

    @Override
    protected void checkSubclass() {
    }

    private void sendSelectionEvent() {
        Event e = new Event();
        e.type = SWT.Selection;
        e.widget = this;
        e.data = tableViewer.getCheckedElements();
        notifyListeners(SWT.Selection, e);
    }

    public CheckboxTableViewer getTableViewer() {
        return tableViewer;
    }

}