1
2
3
4
5
6
7
8
9
10
11
12
13 package com.eviware.x.impl.swing;
14
15 import java.awt.Component;
16 import java.io.File;
17 import java.util.HashMap;
18 import java.util.Map;
19
20 import javax.swing.JFileChooser;
21
22 import com.eviware.soapui.support.ExtensionFileFilter;
23 import com.eviware.x.dialogs.XFileDialogs;
24
25 /***
26 *
27 * @author Lars
28 */
29 public class SwingFileDialogs implements XFileDialogs
30 {
31 private static Component parent;
32 private static Map<Object, JFileChooser> choosers = new HashMap<Object, JFileChooser>();
33
34 public SwingFileDialogs(Component parent)
35 {
36 SwingFileDialogs.parent = parent;
37 }
38
39 public static synchronized JFileChooser getChooser(Object action)
40 {
41 action = null;
42 JFileChooser chooser = choosers.get(action);
43 if( chooser == null )
44 {
45 chooser = new JFileChooser();
46 choosers.put(action, chooser);
47 }
48
49 chooser.resetChoosableFileFilters();
50
51 return chooser;
52 }
53
54 public static Component getParent()
55 {
56 return parent;
57 }
58
59 public File saveAs(Object action, String title)
60 {
61 return saveAs(action, title, null, null, null);
62 }
63
64 public File saveAs(Object action, String title, String extension, String fileType, File defaultFile)
65 {
66 JFileChooser chooser = getChooser(action);
67 chooser.setFileSelectionMode( JFileChooser.FILES_ONLY );
68 chooser.setDialogTitle(title);
69 chooser.setAcceptAllFileFilterUsed( true );
70
71 if(extension != null && fileType != null)
72 chooser.setFileFilter( new ExtensionFileFilter( extension, fileType ));
73
74 if(defaultFile != null)
75 chooser.setSelectedFile(defaultFile);
76
77 if (chooser.showSaveDialog(getParent()) != JFileChooser.APPROVE_OPTION)
78 return null;
79
80 return chooser.getSelectedFile();
81 }
82
83 public File open(Object action, String title, String extension, String fileType, String current)
84 {
85 return openFile( action, title, extension, fileType, current );
86 }
87
88 public static File openFile(Object action, String title, String extension, String fileType, String current)
89 {
90 JFileChooser chooser = getChooser(action);
91 chooser.setFileSelectionMode( JFileChooser.FILES_ONLY);
92 chooser.setDialogTitle(title);
93 chooser.setAcceptAllFileFilterUsed( true );
94 if( current != null )
95 {
96 File file = new File( current);
97 if( file.isDirectory())
98 chooser.setCurrentDirectory(file);
99 else
100 chooser.setSelectedFile( file );
101 }
102
103 if(extension != null && fileType != null)
104 chooser.setFileFilter( new ExtensionFileFilter( extension, fileType ));
105
106 if (chooser.showOpenDialog(getParent()) != JFileChooser.APPROVE_OPTION)
107 return null;
108
109 return chooser.getSelectedFile();
110 }
111
112 public File openXML(Object action, String title)
113 {
114 return open(action, title, ".xml", "XML Files (*.xml)", null);
115 }
116
117 public File openDirectory(Object action, String title, File defaultDirectory)
118 {
119 JFileChooser chooser = getChooser(action);
120 chooser.setDialogTitle(title);
121 chooser.setFileSelectionMode( JFileChooser.DIRECTORIES_ONLY );
122
123 if(defaultDirectory != null)
124 chooser.setCurrentDirectory( defaultDirectory );
125
126 if (chooser.showOpenDialog(getParent()) != JFileChooser.APPROVE_OPTION)
127 return null;
128
129 return chooser.getSelectedFile();
130 }
131 }