1 package org.simantics.scl.ui.imports.internal;
\r
3 import gnu.trove.procedure.TObjectProcedure;
\r
5 import java.util.Comparator;
\r
7 import org.eclipse.core.runtime.CoreException;
\r
8 import org.eclipse.core.runtime.IProgressMonitor;
\r
9 import org.eclipse.core.runtime.IStatus;
\r
10 import org.eclipse.core.runtime.Status;
\r
11 import org.eclipse.jface.dialogs.IDialogSettings;
\r
12 import org.eclipse.swt.widgets.Composite;
\r
13 import org.eclipse.swt.widgets.Control;
\r
14 import org.eclipse.swt.widgets.Shell;
\r
15 import org.eclipse.ui.dialogs.FilteredItemsSelectionDialog;
\r
16 import org.eclipse.ui.dialogs.SearchPattern;
\r
17 import org.simantics.scl.osgi.SCLOsgi;
\r
18 import org.simantics.scl.ui.Activator;
\r
20 public class SCLModuleSelectionDialog extends FilteredItemsSelectionDialog {
\r
22 private static final String SCL_MODULE_SELECTION_DIALOG = "SCL_MODULE_SELECTION_DIALOG";
\r
24 public SCLModuleSelectionDialog(Shell shell) {
\r
29 protected Control createExtendedContentArea(Composite parent) {
\r
34 protected IDialogSettings getDialogSettings() {
\r
35 IDialogSettings settings = org.simantics.scl.ui.Activator.getInstance()
\r
36 .getDialogSettings().getSection(SCL_MODULE_SELECTION_DIALOG);
\r
37 if (settings == null)
\r
38 settings = Activator.getInstance()
\r
39 .getDialogSettings().addNewSection(SCL_MODULE_SELECTION_DIALOG);
\r
44 protected IStatus validateItem(Object item) {
\r
45 return Status.OK_STATUS;
\r
49 protected ItemsFilter createFilter() {
\r
50 return new ItemsFilter() {
\r
52 String patternText = getPattern();
\r
53 patternMatcher = new SearchPattern();
\r
54 if(patternText != null && patternText.length() > 0)
\r
55 patternMatcher.setPattern(patternText);
\r
57 patternMatcher.setPattern("*");
\r
61 public boolean matchItem(Object item) {
\r
62 if(getPattern().indexOf('/') > 0)
\r
63 return matches((String)item);
\r
65 for(String part : ((String)item).split("/"))
\r
73 public boolean isConsistentItem(Object item) {
\r
80 Comparator<String> comparator = new Comparator<String>() {
\r
82 public int compare(String o1, String o2) {
\r
83 return o1.compareTo(o2);
\r
87 @SuppressWarnings("rawtypes")
\r
89 protected Comparator getItemsComparator() {
\r
94 protected void fillContentProvider(final AbstractContentProvider contentProvider,
\r
95 final ItemsFilter itemsFilter, IProgressMonitor progressMonitor)
\r
96 throws CoreException {
\r
97 SCLOsgi.SOURCE_REPOSITORY.forAllModules(new TObjectProcedure<String>() {
\r
99 public boolean execute(String module) {
\r
100 contentProvider.add(module, itemsFilter);
\r
104 if(progressMonitor != null)
\r
105 progressMonitor.done();
\r
109 public String getElementName(Object item) {
\r
110 return (String)item;
\r