]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/editor2/SCLModuleSelectionDialog.java
Externalize strings in org.simantics.scl.ui
[simantics/platform.git] / bundles / org.simantics.scl.ui / src / org / simantics / scl / ui / editor2 / SCLModuleSelectionDialog.java
1 package org.simantics.scl.ui.editor2;
2
3 import java.util.Comparator;
4
5 import org.eclipse.core.runtime.CoreException;
6 import org.eclipse.core.runtime.IProgressMonitor;
7 import org.eclipse.core.runtime.IStatus;
8 import org.eclipse.core.runtime.Status;
9 import org.eclipse.jface.dialogs.IDialogSettings;
10 import org.eclipse.jface.viewers.LabelProvider;
11 import org.eclipse.swt.widgets.Composite;
12 import org.eclipse.swt.widgets.Control;
13 import org.eclipse.swt.widgets.Shell;
14 import org.eclipse.ui.IMemento;
15 import org.eclipse.ui.dialogs.FilteredItemsSelectionDialog;
16 import org.eclipse.ui.dialogs.SearchPattern;
17 import org.simantics.scl.osgi.SCLOsgi;
18 import org.simantics.scl.ui.Activator;
19
20 import gnu.trove.procedure.TObjectProcedure;
21
22 public class SCLModuleSelectionDialog extends FilteredItemsSelectionDialog {
23     private static final String DIALOG_SETTINGS = "SCLModuleSelectionDialogSettings"; //$NON-NLS-1$
24
25     public SCLModuleSelectionDialog(Shell shell) {
26         super(shell, false);
27         setTitle(Messages.SCLModuleSelectionDialog_ChooseSCLModule);
28         setSelectionHistory(new ModuleSelectionHistory());
29         setListLabelProvider(new LabelProvider() {
30             @Override
31             public String getText(Object element) {
32                 if(element == null)
33                     return ""; //$NON-NLS-1$
34                 return (String)element;
35             }
36         });
37     }
38
39     private class ModuleSelectionHistory extends SelectionHistory {
40         protected Object restoreItemFromMemento(IMemento element) {
41             //return element.getString("resource"); //$NON-NLS-1$
42             return null;
43         }
44         protected void storeItemToMemento(Object item, IMemento element) {
45             //element.putString("resource", item.toString()); //$NON-NLS-1$
46         }
47     }
48
49     @Override
50     protected Control createExtendedContentArea(Composite parent) {
51         return null;
52     }
53
54     protected IDialogSettings getDialogSettings() {
55          IDialogSettings settings = Activator.getInstance().getDialogSettings().getSection(DIALOG_SETTINGS);
56          if (settings == null)
57              settings = Activator.getInstance().getDialogSettings().addNewSection(DIALOG_SETTINGS);
58          return settings;
59     }
60
61     @Override
62     protected IStatus validateItem(Object item) {
63         return Status.OK_STATUS;
64     }
65
66     @Override
67     protected ItemsFilter createFilter() {
68         return new ItemsFilter() {
69             {
70                 String patternText = getPattern();
71                 patternMatcher = new SearchPattern();
72                 if(patternText != null && patternText.length() > 0)
73                     patternMatcher.setPattern(patternText);
74                 else 
75                     patternMatcher.setPattern("*"); //$NON-NLS-1$
76             }
77             
78             @Override
79             public boolean matchItem(Object item) {
80                 String text = item.toString();
81                 if(getPattern().contains("/")) //$NON-NLS-1$
82                     return matches(text);
83                 else {
84                     int p = text.lastIndexOf('/');
85                     if(p >= 0)
86                         text = text.substring(p+1);
87                     return matches(text);
88                 }
89             }
90
91             @Override
92             public boolean isConsistentItem(Object item) {
93                 return true;
94             }
95             
96         };
97     }
98
99     @SuppressWarnings("rawtypes")
100     @Override
101     protected Comparator getItemsComparator() {
102         return new Comparator() {
103             public int compare(Object arg0, Object arg1) {
104                 String a = (String)arg0;
105                 String b = (String)arg1;
106                 return a.compareTo(b);
107             }
108         };
109     }
110
111     @Override
112     protected void fillContentProvider(AbstractContentProvider contentProvider,
113             ItemsFilter itemsFilter, IProgressMonitor progressMonitor)
114                     throws CoreException {
115         progressMonitor.beginTask(Messages.SCLModuleSelectionDialog_Searching, 1); 
116         SCLOsgi.SOURCE_REPOSITORY.forAllModules(new TObjectProcedure<String>() {
117             @Override
118             public boolean execute(String moduleName) {
119                 contentProvider.add(moduleName, itemsFilter);
120                 return true;
121             }
122         });
123         progressMonitor.worked(1);
124         progressMonitor.done();
125     }
126
127     @Override
128     public String getElementName(Object item) {
129         return item.toString();
130     }
131
132 }