]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.fileimport.ui/src/org/simantics/fileimport/ui/ImportFileHandler.java
Sync git svn branch with SVN repository r33144.
[simantics/platform.git] / bundles / org.simantics.fileimport.ui / src / org / simantics / fileimport / ui / ImportFileHandler.java
diff --git a/bundles/org.simantics.fileimport.ui/src/org/simantics/fileimport/ui/ImportFileHandler.java b/bundles/org.simantics.fileimport.ui/src/org/simantics/fileimport/ui/ImportFileHandler.java
new file mode 100644 (file)
index 0000000..ff6ab67
--- /dev/null
@@ -0,0 +1,49 @@
+\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