/******************************************************************************* * 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; } }