org.eclipse.reqcycle.predicates.ui.dialogs.CheckBoxInputDialog.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.reqcycle.predicates.ui.dialogs.CheckBoxInputDialog.java

Source

/*****************************************************************************
 * Copyright (c) 2013 AtoS.
 *
 *    
 * 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:
 *  Papa Issa DIAKHATE (AtoS) papa-issa.diakhate@atos.net - Initial API and implementation
 *
 *****************************************************************************/
package org.eclipse.reqcycle.predicates.ui.dialogs;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;

import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.IInputValidator;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.CheckboxTableViewer;
import org.eclipse.jface.viewers.ColumnWeightData;
import org.eclipse.jface.viewers.IContentProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.TableLayout;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;

public class CheckBoxInputDialog extends AbstractCustomDialog {

    private IContentProvider contentProvider;

    private ITableLabelProvider labelProvider;

    private CheckboxTableViewer checkboxTableViewer;

    private final List<Object> selectedItems;

    private Collection<Object> initialSelection;

    public CheckBoxInputDialog(Shell parentShell, String dialogTitle, String dialogMessage, Object initialInput,
            IInputValidator validator, Collection<Object> initialSelection) {
        super(parentShell, dialogTitle, dialogMessage, initialInput, validator);
        this.selectedItems = new ArrayList<Object>();
        this.initialSelection = initialSelection;
    }

    @Override
    protected void createCustomDialogArea(Composite parent) {

        checkboxTableViewer = CheckboxTableViewer.newCheckList(parent, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI);
        Table tableOfCustomPredicates = checkboxTableViewer.getTable();
        tableOfCustomPredicates.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

        TableLayout tableLayout = new TableLayout();
        tableLayout.addColumnData(new ColumnWeightData(3, 100, true));
        tableOfCustomPredicates.setLayout(tableLayout);

        TableViewerColumn column = new TableViewerColumn(checkboxTableViewer, SWT.None);
        column.getColumn().setResizable(true);

        if (this.contentProvider == null)
            this.contentProvider = ArrayContentProvider.getInstance();
        if (this.labelProvider == null)
            this.labelProvider = this.getDefaultLabelProvider();

        this.checkboxTableViewer.setContentProvider(this.contentProvider);
        this.checkboxTableViewer.setLabelProvider(this.labelProvider);
        this.checkboxTableViewer.setInput(getInput());
        if (initialSelection != null && !initialSelection.isEmpty()) {
            this.checkboxTableViewer.setCheckedElements(initialSelection.toArray());
        }
    }

    private ITableLabelProvider getDefaultLabelProvider() {
        return new ITableLabelProvider() {

            @Override
            public void removeListener(ILabelProviderListener listener) {
            }

            @Override
            public boolean isLabelProperty(Object element, String property) {
                return false;
            }

            @Override
            public void dispose() {
            }

            @Override
            public void addListener(ILabelProviderListener listener) {
            }

            @Override
            public String getColumnText(Object element, int columnIndex) {
                return element.toString();
            }

            @Override
            public Image getColumnImage(Object element, int columnIndex) {
                return null;
            }
        };
    }

    @Override
    protected void buttonPressed(int buttonId) {
        if (buttonId == IDialogConstants.OK_ID) {
            this.selectedItems.addAll(Arrays.asList(this.checkboxTableViewer.getCheckedElements()));
        } else {
            this.selectedItems.removeAll(selectedItems);
        }
        super.buttonPressed(buttonId);
    }

    @Override
    public Collection<Object> getSelectedItems() {
        return this.selectedItems;
    }

    public void setContentProvider(IContentProvider contentProvider) {
        this.contentProvider = contentProvider;
    }

    public void setLabelProvider(ITableLabelProvider labelProvider) {
        this.labelProvider = labelProvider;
    }
}