package rtt.ui.dialogs; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.IMessageProvider; import org.eclipse.jface.dialogs.TitleAreaDialog; import org.eclipse.jface.layout.TableColumnLayout; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.ColumnLabelProvider; import org.eclipse.jface.viewers.ColumnPixelData; import org.eclipse.jface.viewers.ColumnWeightData; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TableViewerColumn; 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.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; import rtt.core.utils.GenerationInformation; import rtt.core.utils.GenerationInformation.GenerationResult; import rtt.core.utils.GenerationInformation.GenerationType; public class GenerationResultsDialog extends TitleAreaDialog { class ResultsColumnLabelProvider extends ColumnLabelProvider { final static int SUITE_COLUMN = 0; final static int CASE_COLUMN = 1; final static int COMMENT_COLUMN = 2; private int column = 0; public ResultsColumnLabelProvider(int column) { this.column = column; } @Override public String getText(Object element) { if (element instanceof GenerationResult) { GenerationResult genResult = (GenerationResult) element; switch (column) { case SUITE_COLUMN: return genResult.suiteName; case CASE_COLUMN: return genResult.caseName; case COMMENT_COLUMN: return genResult.getMessage(); } } return super.getText(element); } } private GenerationInformation results; private Table table; private String message; /** * Create the dialog. * * @param parentShell * @param results */ public GenerationResultsDialog(Shell parentShell, GenerationInformation results) { super(parentShell); setShellStyle(SWT.CLOSE | SWT.RESIZE | SWT.TITLE); setHelpAvailable(false); setBlockOnOpen(false); this.results = results; if (results.hasErrors()) { message = "Some of the " + results.getType().text + " could not be generated."; } else { message = "The generation process has been completed."; } } /** * Create contents of the dialog. * * @param parent */ @Override protected Control createDialogArea(Composite parent) { super.setTitle("Generation results"); super.setMessage(message, results.hasErrors() ? IMessageProvider.ERROR : IMessageProvider.INFORMATION); Composite container = (Composite) super.createDialogArea(parent); GridLayout gridLayout = (GridLayout) container.getLayout(); gridLayout.verticalSpacing = 5; gridLayout.marginWidth = 10; gridLayout.marginHeight = 10; gridLayout.makeColumnsEqualWidth = true; gridLayout.horizontalSpacing = 3; Composite composite = new Composite(container, SWT.NONE); composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); TableColumnLayout tcl_composite = new TableColumnLayout(); composite.setLayout(tcl_composite); TableViewer tableViewer = new TableViewer(composite, SWT.BORDER | SWT.FULL_SELECTION); table = tableViewer.getTable(); table.setHeaderVisible(true); table.setLinesVisible(true); tableViewer.setContentProvider(new ArrayContentProvider()); TableViewerColumn suiteViewerColumn = new TableViewerColumn( tableViewer, SWT.NONE); TableColumn suiteColumn = suiteViewerColumn.getColumn(); tcl_composite.setColumnData(suiteColumn, new ColumnPixelData(80, true, true)); suiteColumn.setText("Test suite"); suiteViewerColumn.setLabelProvider(new ResultsColumnLabelProvider( ResultsColumnLabelProvider.SUITE_COLUMN)); TableViewerColumn caseViewerColumn = new TableViewerColumn(tableViewer, SWT.NONE); TableColumn caseColumn = caseViewerColumn.getColumn(); tcl_composite.setColumnData(caseColumn, new ColumnPixelData(80, true, true)); caseColumn.setText("Test case"); caseViewerColumn.setLabelProvider(new ResultsColumnLabelProvider( ResultsColumnLabelProvider.CASE_COLUMN)); TableViewerColumn commentViewerColumn = new TableViewerColumn( tableViewer, SWT.NONE); TableColumn descriptionColumn = commentViewerColumn.getColumn(); tcl_composite.setColumnData(descriptionColumn, new ColumnWeightData(1, 300, true)); descriptionColumn.setText("Description"); commentViewerColumn.setLabelProvider(new ResultsColumnLabelProvider( ResultsColumnLabelProvider.COMMENT_COLUMN)); boolean showAll = (results.getType() == GenerationType.REFERENCE_DATA); tableViewer.setInput(results.getResults(showAll)); return container; } /** * Create contents of the button bar. * * @param parent */ @Override protected void createButtonsForButtonBar(Composite parent) { createButton(parent, IDialogConstants.OK_ID, "Close", true); } /** * Return the initial size of the dialog. */ @Override protected Point getInitialSize() { return new Point(550, 400); } }