2 package org.simantics.fileimport.ui;
\r
4 import java.nio.file.Paths;
\r
5 import java.util.Map;
\r
6 import java.util.Optional;
\r
8 import javax.inject.Named;
\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
18 public class ImportFileHandler {
\r
21 public boolean canExecute() {
\r
22 return !FileImportService.supportedExtensionsWithFilters().isEmpty();
\r
26 public void execute(@Named(IServiceConstants.ACTIVE_SHELL) Shell shell) {
\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
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
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
47 FileImportService.performFileImport(Paths.get(fileName), Optional.empty());
\r