1 package org.simantics.scl.ui.tests;
\r
3 import java.util.Comparator;
\r
4 import java.util.List;
\r
6 import org.eclipse.core.runtime.CoreException;
\r
7 import org.eclipse.core.runtime.IProgressMonitor;
\r
8 import org.eclipse.core.runtime.IStatus;
\r
9 import org.eclipse.core.runtime.Status;
\r
10 import org.eclipse.jface.dialogs.IDialogConstants;
\r
11 import org.eclipse.jface.dialogs.IDialogSettings;
\r
12 import org.eclipse.jface.viewers.LabelProvider;
\r
13 import org.eclipse.swt.widgets.Button;
\r
14 import org.eclipse.swt.widgets.Composite;
\r
15 import org.eclipse.swt.widgets.Control;
\r
16 import org.eclipse.swt.widgets.Shell;
\r
17 import org.eclipse.ui.IMemento;
\r
18 import org.eclipse.ui.dialogs.FilteredItemsSelectionDialog;
\r
19 import org.eclipse.ui.dialogs.SearchPattern;
\r
20 import org.simantics.scl.compiler.testing.TestRunnable;
\r
21 import org.simantics.scl.ui.Activator;
\r
23 public class SCLTestsDialog extends FilteredItemsSelectionDialog {
\r
25 private static final String SCL_TEST_DIALOG_SETTINGS = "SCLTestDialogSettings";
\r
27 private List<TestRunnable> tests;
\r
29 public SCLTestsDialog(Shell shell, List<TestRunnable> tests, boolean multi) {
\r
30 super(shell, multi);
\r
32 setTitle("Run SCL Tests");
\r
33 setListLabelProvider(new LabelProvider() {
\r
36 public String getText(Object element) {
\r
37 if (element != null)
\r
38 return ((TestRunnable) element).getName();
\r
42 setSelectionHistory(new ResourceSelectionHistory());
\r
45 private class ResourceSelectionHistory extends SelectionHistory {
\r
47 * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog.SelectionHistory#restoreItemFromMemento(org.eclipse.ui.IMemento)
\r
49 protected Object restoreItemFromMemento(IMemento element) {
\r
50 String testName = element.getString("test"); //$NON-NLS-1$
\r
51 return findTestByName(testName);
\r
54 * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog.SelectionHistory#storeItemToMemento(java.lang.Object,
\r
55 * org.eclipse.ui.IMemento)
\r
57 protected void storeItemToMemento(Object item, IMemento element) {
\r
58 TestRunnable runnable = (TestRunnable) item;
\r
59 element.putString("test", runnable.getName()); //$NON-NLS-1$
\r
63 private TestRunnable findTestByName(String name) {
\r
64 for (TestRunnable runnable : tests) {
\r
65 if (runnable.getName().equals(name))
\r
72 protected Control createExtendedContentArea(Composite parent) {
\r
73 // TODO Auto-generated method stub
\r
78 protected void createButtonsForButtonBar(Composite parent) {
\r
79 super.createButtonsForButtonBar(parent);
\r
80 Button okButton = getButton(IDialogConstants.OK_ID);
\r
81 okButton.setText("Run test");
\r
82 setButtonLayoutData(okButton);
\r
86 protected IDialogSettings getDialogSettings() {
\r
87 IDialogSettings settings = Activator.getInstance().getDialogSettings()
\r
88 .getSection(SCL_TEST_DIALOG_SETTINGS);
\r
89 if (settings == null) {
\r
90 settings = Activator.getInstance().getDialogSettings()
\r
91 .addNewSection(SCL_TEST_DIALOG_SETTINGS);
\r
97 protected IStatus validateItem(Object item) {
\r
98 return Status.OK_STATUS;
\r
102 protected ItemsFilter createFilter() {
\r
103 return new ItemsFilter() {
\r
105 String patternText = getPattern();
\r
106 patternMatcher = new SearchPattern();
\r
107 if(patternText != null && patternText.length() > 0)
\r
108 patternMatcher.setPattern(patternText);
\r
110 patternMatcher.setPattern("**");
\r
113 public boolean matchItem(Object item) {
\r
114 String testName = ((TestRunnable) item).getName();
\r
115 if(getPattern().indexOf('/') > 0)
\r
116 return matches(testName);
\r
118 for(String part : (testName.split("/")))
\r
126 public boolean isConsistentItem(Object item) {
\r
132 Comparator<TestRunnable> comparator = new Comparator<TestRunnable>() {
\r
134 public int compare(TestRunnable o1, TestRunnable o2) {
\r
135 return o1.getName().compareTo(o2.getName());
\r
140 protected Comparator<TestRunnable> getItemsComparator() {
\r
145 protected void fillContentProvider(AbstractContentProvider contentProvider,
\r
146 ItemsFilter itemsFilter, IProgressMonitor progressMonitor)
\r
147 throws CoreException {
\r
148 progressMonitor.beginTask("Searching tests..", tests.size());
\r
149 for (TestRunnable test : tests) {
\r
150 contentProvider.add(test, itemsFilter);
\r
151 progressMonitor.worked(1);
\r
153 progressMonitor.done();
\r
157 public String getElementName(Object item) {
\r
158 return ((TestRunnable) item).getName();
\r