--- /dev/null
+\r
+package org.simantics.fileimport.ui;\r
+\r
+import java.nio.file.Paths;\r
+import java.util.Map;\r
+import java.util.Optional;\r
+\r
+import javax.inject.Named;\r
+\r
+import org.eclipse.e4.core.di.annotations.CanExecute;\r
+import org.eclipse.e4.core.di.annotations.Execute;\r
+import org.eclipse.e4.ui.services.IServiceConstants;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.widgets.FileDialog;\r
+import org.eclipse.swt.widgets.Shell;\r
+import org.simantics.fileimport.FileImportService;\r
+\r
+public class ImportFileHandler {\r
+\r
+ @CanExecute\r
+ public boolean canExecute() {\r
+ return !FileImportService.supportedExtensionsWithFilters().isEmpty();\r
+ }\r
+\r
+ @Execute\r
+ public void execute(@Named(IServiceConstants.ACTIVE_SHELL) Shell shell) {\r
+\r
+ Map<String, String> extensions = FileImportService.supportedExtensionsWithFilters();\r
+ String[] filterExtensions = (String[]) extensions.keySet().toArray(new String[extensions.keySet().size()]);\r
+ String[] filterNames = (String[]) extensions.values().toArray(new String[extensions.values().size()]);\r
+ \r
+ // Sanity check\r
+ for (int i = 0; i < filterExtensions.length; i++) {\r
+ String extension = filterExtensions[i];\r
+ if (!extension.startsWith("*.")) {\r
+ System.err.println("Invalid extension filter provied: " + extension);\r
+ }\r
+ }\r
+\r
+ FileDialog dialog = new FileDialog(shell, SWT.OPEN);\r
+ dialog.setText("Choose File");\r
+ dialog.setFilterExtensions(filterExtensions);\r
+ dialog.setFilterNames(filterNames);\r
+ final String fileName = dialog.open();\r
+ if (fileName == null)\r
+ return;\r
+ FileImportService.performFileImport(Paths.get(fileName), Optional.empty());\r
+ }\r
+}
\ No newline at end of file