fr.inria.soctrace.tools.framesoc.exporter.dbimporter.ImportDBResultDialog.java Source code

Java tutorial

Introduction

Here is the source code for fr.inria.soctrace.tools.framesoc.exporter.dbimporter.ImportDBResultDialog.java

Source

/*******************************************************************************
 * Copyright (c) 2012-2015 INRIA.
 * 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:
 *     Generoso Pagano - initial API and implementation
 ******************************************************************************/
package fr.inria.soctrace.tools.framesoc.exporter.dbimporter;

import java.util.List;

import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.CheckStateChangedEvent;
import org.eclipse.jface.viewers.CheckboxTableViewer;
import org.eclipse.jface.viewers.ICheckStateListener;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;

import fr.inria.soctrace.lib.model.AnalysisResult;

/**
 * Eclipse Dialog to select analysis result to import.
 * 
 * @author "Generoso Pagano <generoso.pagano@inria.fr>"
 */
public class ImportDBResultDialog extends Dialog {

    private GridData gd_grpAnalysisResultTo;
    private Label lblInTheDatabase;
    private CheckboxTableViewer checkboxTableViewer;
    private List<AnalysisResult> arToShow;
    private Object[] arToKeep;

    public ImportDBResultDialog(Shell parentShell, List<AnalysisResult> arToShow) {
        super(parentShell);
        this.arToShow = arToShow;
    }

    @Override
    protected Control createDialogArea(Composite parent) {

        Composite composite = (Composite) super.createDialogArea(parent);

        lblInTheDatabase = new Label(composite, SWT.READ_ONLY);
        lblInTheDatabase
                .setText("In the database you want to import there are some analysis results you can keep.");

        Label lblPleaseChoseFrom = new Label(composite, SWT.NONE);
        lblPleaseChoseFrom.setText("Please chose from the following list");

        Group grpAnalysisResultTo = new Group(composite, SWT.NONE);
        grpAnalysisResultTo.setText("Analysis Result to keep");
        GridLayout gl_grpAnalysisResultTo = new GridLayout(1, false);
        grpAnalysisResultTo.setLayout(gl_grpAnalysisResultTo);
        gd_grpAnalysisResultTo = new GridData(GridData.FILL_BOTH);
        grpAnalysisResultTo.setLayoutData(gd_grpAnalysisResultTo);

        checkboxTableViewer = CheckboxTableViewer.newCheckList(grpAnalysisResultTo,
                SWT.BORDER | SWT.FULL_SELECTION);
        Table table = checkboxTableViewer.getTable();
        table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
        checkboxTableViewer.setContentProvider(new ResultsContentProvider());
        checkboxTableViewer.setLabelProvider(new ResultsLabelProvider());
        checkboxTableViewer.setInput(arToShow);
        checkboxTableViewer.addCheckStateListener(new ICheckStateListener() {
            @Override
            public void checkStateChanged(CheckStateChangedEvent event) {
                arToKeep = checkboxTableViewer.getCheckedElements();
            }
        });

        return composite;
    }

    protected Point getInitialSize() {
        return new Point(556, 423);
    }

    @Override
    protected void createButtonsForButtonBar(Composite parent) {
        Button ok = createButton(parent, IDialogConstants.OK_ID, "Import", true);
        ok.setText("Import");
        setButtonLayoutData(ok);
    }

    class ResultsContentProvider extends ArrayContentProvider {
        public Object[] getElements(Object arg0) {
            @SuppressWarnings("unchecked")
            List<AnalysisResult> srl = (List<AnalysisResult>) arg0;
            return srl.toArray();
        }
    }

    class ResultsLabelProvider extends LabelProvider {
        public String getText(Object arg0) {
            AnalysisResult ar = (AnalysisResult) arg0;
            return ar.getTool().getName() + ": " + ar.getDescription();
        }
    }

    public Object[] getResultsToKeep() {
        return arToKeep;
    }
}