]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.fileimport.ui/src/org/simantics/fileimport/ui/ImportFileHandler.java
Merge "Testing SonarQube with Simantics Platform SDK"
[simantics/platform.git] / bundles / org.simantics.fileimport.ui / src / org / simantics / fileimport / ui / ImportFileHandler.java
1 \r
2 package org.simantics.fileimport.ui;\r
3 \r
4 import java.nio.file.Paths;\r
5 import java.util.Map;\r
6 import java.util.Optional;\r
7 \r
8 import javax.inject.Named;\r
9 \r
10 import org.eclipse.e4.core.di.annotations.CanExecute;\r
11 import org.eclipse.e4.core.di.annotations.Execute;\r
12 import org.eclipse.e4.ui.services.IServiceConstants;\r
13 import org.eclipse.swt.SWT;\r
14 import org.eclipse.swt.widgets.FileDialog;\r
15 import org.eclipse.swt.widgets.Shell;\r
16 import org.simantics.fileimport.FileImportService;\r
17 \r
18 public class ImportFileHandler {\r
19 \r
20     @CanExecute\r
21     public boolean canExecute() {\r
22         return !FileImportService.supportedExtensionsWithFilters().isEmpty();\r
23     }\r
24 \r
25     @Execute\r
26     public void execute(@Named(IServiceConstants.ACTIVE_SHELL) Shell shell) {\r
27 \r
28         Map<String, String> extensions = FileImportService.supportedExtensionsWithFilters();\r
29         String[] filterExtensions = (String[]) extensions.keySet().toArray(new String[extensions.keySet().size()]);\r
30         String[] filterNames = (String[]) extensions.values().toArray(new String[extensions.values().size()]);\r
31         \r
32         // Sanity check\r
33         for (int i = 0; i < filterExtensions.length; i++) {\r
34             String extension = filterExtensions[i];\r
35             if (!extension.startsWith("*.")) {\r
36                 System.err.println("Invalid extension filter provied: " + extension);\r
37             }\r
38         }\r
39 \r
40         FileDialog dialog = new FileDialog(shell, SWT.OPEN);\r
41         dialog.setText("Choose File");\r
42         dialog.setFilterExtensions(filterExtensions);\r
43         dialog.setFilterNames(filterNames);\r
44         final String fileName = dialog.open();\r
45         if (fileName == null)\r
46             return;\r
47         FileImportService.performFileImport(Paths.get(fileName), Optional.empty());\r
48     }\r
49 }