-
Notifications
You must be signed in to change notification settings - Fork 6
/
FileLoading.pde
168 lines (147 loc) · 5.48 KB
/
FileLoading.pde
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
// Author: "Golan Levin" <[email protected]>, 01 August, 2011
//================================================================
String getUserSelectedQRCodeImageFilename () {
// Ask the user to load a QR code image file.
// These commands to open a file chooser are taken from:
// http://processing.org/discourse/yabb2/YaBB.pl?board=Syntax;action=display;num=1210972905
println();
println("After a moment, you should see a file dialog window.");
println("Please select a QR-code image file.");
QRImageFilename = QRDefaultImageFilename;
JFileChooser chooser = new JFileChooser();
boolean bFailed = false;
try
{
File dataDir = new File(sketchPath() + "/data/");
if (!dataDir.exists()) {
dataDir.mkdirs();
}
String fileExtensions[] = {"gif", "jpg", "jpeg", "png", "tiff", "tif"};
ImageFileFilter IFF = new ImageFileFilter (fileExtensions, "Images");
chooser.setAcceptAllFileFilterUsed (true);
chooser.addChoosableFileFilter(IFF);
chooser.setFileFilter(IFF);
chooser.setDialogTitle("Please select a QR code image!");
chooser.setApproveButtonText("Load QR Image");
chooser.setApproveButtonToolTipText ("Load the selected QR code. This should be a png, jpg, gif or tif.");
chooser.setCurrentDirectory(dataDir);
int returnVal = chooser.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
String tmpString = chooser.getSelectedFile().getName();
String ext = tmpString.substring(tmpString.lastIndexOf('.') + 1);
ext.toLowerCase();
if (ext.equals("jpg") || ext.equals("jpeg") || ext.equals("gif") || ext.equals("png")) {
//QRImageFilename = chooser.getSelectedFile().getName();
QRImageFilename = chooser.getSelectedFile().getPath();
println("You chose to open this file:\n " + QRImageFilename);
println();
}
else {
bFailed = true;
println("The file you selected does not appear to be an image file.");
}
}
else {
bFailed = true;
println ("An error occurred during file loading.");
}
}
catch(Exception e) {
e.printStackTrace();
}
if (bFailed) {
println("Loading default QR code image: " + QRImageFilename);
}
return QRImageFilename;
}
//===============================================================
// adapted from http://www.student.nada.kth.se/~u1eetop7/prost/ExampleFileFilter.java
class ImageFileFilter extends FileFilter {
private String TYPE_UNKNOWN = "Type Unknown";
private String HIDDEN_FILE = "Hidden File";
private Hashtable filters = null;
private String description = null;
private String fullDescription = null;
private boolean useExtensionsInDescription = true;
//----------------------------------------------------------------
// Example: new ImageFileFilter (String {"gif", "jpg"}, "Gif and JPG Images");
// "gif", "jpg", "jpeg", "png", "tiff", "tif"
public ImageFileFilter(String[] filters, String description) {
this.filters = new Hashtable();
for (int i = 0; i < filters.length; i++) {
addExtension(filters[i]);
}
if (description!=null) {
setDescription(description);
}
}
//----------------------------------------------------------------
public void addExtension(String extension) {
if (filters == null) {
filters = new Hashtable(5);
}
filters.put(extension.toLowerCase(), this);
fullDescription = null;
}
//----------------------------------------------------------------
public void setDescription(String description) {
this.description = description;
fullDescription = null;
}
//----------------------------------------------------------------
// Returns the human readable description of this filter. For
// example: "JPEG and GIF Image Files (*.jpg, *.gif)"
public String getDescription() {
if (fullDescription == null) {
if (description == null || isExtensionListInDescription()) {
fullDescription = description==null ? "(" : description + " (";
// build the description from the extension list
Enumeration extensions = filters.keys();
if (extensions != null) {
fullDescription += "." + (String) extensions.nextElement();
while (extensions.hasMoreElements ()) {
fullDescription += ", " + (String) extensions.nextElement();
}
}
fullDescription += ")";
}
else {
fullDescription = description;
}
}
return fullDescription;
}
//----------------------------------------------------------------
public boolean accept(File f) {
if (f != null) {
if (f.isDirectory()) {
return true;
}
String extension = getExtension(f);
if (extension != null && filters.get(getExtension(f)) != null) {
return true;
};
}
return false;
}
//----------------------------------------------------------------
public boolean isExtensionListInDescription() {
return useExtensionsInDescription;
}
//----------------------------------------------------------------
public String getExtension(File f) {
if (f != null) {
String filename = f.getName();
int i = filename.lastIndexOf('.');
if (i>0 && i<filename.length()-1) {
return filename.substring(i+1).toLowerCase();
};
}
return null;
}
//----------------------------------------------------------------
public void setExtensionListInDescription(boolean b) {
useExtensionsInDescription = b;
fullDescription = null;
}
}