~berthold-daum/zora/trunk

« back to all changes in this revision

Viewing changes to com.bdaum.zoom.ui/src/com/bdaum/zoom/ui/internal/actions/ImportFileAction.java

  • Committer: bdaum
  • Date: 2015-12-26 10:21:51 UTC
  • Revision ID: berthold.daum@bdaum.de-20151226102151-44f1j5113167thb9
VersionĀ 2.4.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
import org.eclipse.swt.SWT;
30
30
import org.eclipse.swt.widgets.FileDialog;
31
31
 
 
32
import com.bdaum.zoom.core.internal.CoreActivator;
32
33
import com.bdaum.zoom.core.internal.FileInput;
 
34
import com.bdaum.zoom.core.internal.IMediaSupport;
33
35
import com.bdaum.zoom.image.ImageConstants;
34
36
import com.bdaum.zoom.job.OperationJob;
35
37
import com.bdaum.zoom.operations.internal.ImportOperation;
38
40
@SuppressWarnings("restriction")
39
41
public class ImportFileAction extends OperationActionDelegate {
40
42
 
41
 
 
42
43
        public void run(IAction action) {
43
44
                FileDialog dialog = new FileDialog(window.getShell(), SWT.OPEN
44
45
                                | SWT.MULTI);
46
47
                UiActivator activator = UiActivator.getDefault();
47
48
                dialog.setFilterPath(activator.getFileLocation());
48
49
                dialog.setFilterIndex(activator.getFilterIndex());
49
 
                String[] supportedImageFileExtensions = ImageConstants.getSupportedImageFileExtensions(true);
 
50
                String[] supportedImageFileExtensions = ImageConstants
 
51
                                .getSupportedImageFileExtensions(true);
50
52
                StringBuilder sb = new StringBuilder();
 
53
                IMediaSupport[] mediaSupport = CoreActivator.getDefault()
 
54
                                .getMediaSupport();
51
55
                int l = supportedImageFileExtensions.length;
52
 
                String[] allImageFileExtensions = new String[l + 1];
53
 
                for (int i = 1; i < l; i++) {
54
 
                        allImageFileExtensions[i] = supportedImageFileExtensions[i - 1];
55
 
                        allImageFileExtensions[i] += ";" //$NON-NLS-1$
56
 
                                        + supportedImageFileExtensions[i - 1].toUpperCase();
 
56
                String[] allImageFileExtensions = new String[l + 2
 
57
                                + mediaSupport.length];
 
58
                for (int i = 0; i < l; i++) {
 
59
                        allImageFileExtensions[i + 2] = supportedImageFileExtensions[i];
 
60
                        allImageFileExtensions[i + 2] += ";" //$NON-NLS-1$
 
61
                                        + supportedImageFileExtensions[i].toUpperCase();
57
62
                        if (sb.length() > 0)
58
63
                                sb.append(';');
59
 
                        sb.append(allImageFileExtensions[i]);
 
64
                        sb.append(allImageFileExtensions[i + 2]);
 
65
                }
 
66
                allImageFileExtensions[1] = sb.toString();
 
67
                for (int i = 0; i < mediaSupport.length; i++) {
 
68
                        StringBuilder msb = new StringBuilder();
 
69
                        for (String ext : mediaSupport[i].getFileExtensions()) {
 
70
                                if (msb.length() > 0)
 
71
                                        msb.append(';');
 
72
                                msb.append("*.").append(ext); //$NON-NLS-1$
 
73
                                if (sb.length() > 0)
 
74
                                        sb.append(';');
 
75
                                sb.append("*.").append(ext); //$NON-NLS-1$
 
76
                        }
 
77
                        allImageFileExtensions[l + 2 + i] = msb.toString();
60
78
                }
61
79
                allImageFileExtensions[0] = sb.toString();
62
 
                allImageFileExtensions[l] = supportedImageFileExtensions[l - 1];
63
80
                dialog.setFilterExtensions(allImageFileExtensions);
64
 
                String[] supportedImageFileNames = ImageConstants.getSupportedImageFileNames(true);
65
 
                String[] allImageFileNames = new String[l + 1];
66
 
                System.arraycopy(supportedImageFileNames, 0, allImageFileNames, 1, l);
67
 
                allImageFileNames[0] = Messages.ImportFileAction_all_supported_files;
 
81
 
 
82
                String[] supportedImageFileNames = ImageConstants
 
83
                                .getSupportedImageFileNames(true);
 
84
                String[] allImageFileNames = new String[l + 2 + mediaSupport.length];
 
85
                System.arraycopy(supportedImageFileNames, 0, allImageFileNames, 2, l);
 
86
                allImageFileNames[0] = Messages.ImportFileAction_supported_file_types;
 
87
                allImageFileNames[1] = Messages.ImportFileAction_all_supported_files;
 
88
                for (int i = 0; i < mediaSupport.length; i++) {
 
89
                        IMediaSupport ms = mediaSupport[i];
 
90
                        StringBuilder msb = new StringBuilder();
 
91
                        msb.append(ms.getName()).append(" ("); //$NON-NLS-1$
 
92
                        for (String ext : ms.getFileExtensions()) {
 
93
                                if (msb.length() > 2)
 
94
                                        msb.append(", "); //$NON-NLS-1$
 
95
                                msb.append("*.").append(ext); //$NON-NLS-1$
 
96
                        }
 
97
                        msb.append(')');
 
98
                        allImageFileNames[l + 2 + i] = msb.toString();
 
99
                }
68
100
                dialog.setFilterNames(allImageFileNames);
69
101
                String file = dialog.open();
70
102
                if (file != null) {
77
109
                                List<File> files = new ArrayList<File>(fileNames.length);
78
110
                                for (String fileName : fileNames)
79
111
                                        files.add(new File(filterPath, fileName));
80
 
                                OperationJob.executeOperation(new ImportOperation(new FileInput(files, false),
81
 
                                                activator.createImportConfiguration(this), null, null), this);
 
112
                                OperationJob.executeOperation(
 
113
                                                new ImportOperation(new FileInput(files, false),
 
114
                                                                activator.createImportConfiguration(this),
 
115
                                                                null, null), this);
82
116
                        }
83
117
                }
84
118
        }
85
119
 
86
 
 
87
120
        @Override
88
121
        public void selectionChanged(IAction action, ISelection selection) {
89
122
                if (isDbReadOnly())