package org.insightech.er.preference;
import java.io.File;
import java.util.StringTokenizer;
import org.eclipse.jface.preference.FileFieldEditor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.FileDialog;
public class MultiFileFieldEditor extends FileFieldEditor {
private String[] extensions = null;
private boolean multiple = false;
public MultiFileFieldEditor(String name, String labelText, Composite parent) {
super(name, labelText, false, parent);
}
@Override
protected String changePressed() {
StringTokenizer tokenizer = new StringTokenizer(getTextControl()
.getText(), ";");
File f;
if (tokenizer.countTokens() == 0) {
f = null;
} else {
f = new File(tokenizer.nextToken());
if (!f.exists()) {
f = null;
}
}
File[] d = getFile(f);
if (d == null || d.length == 0) {
return null;
}
StringBuilder ret = new StringBuilder();
for (int i = 0; i < d.length; i++) {
ret.append(d[i].getAbsolutePath());
ret.append(";");
}
return ret.toString();
}
private File[] getFile(File startingDirectory) {
int style = SWT.OPEN;
if (multiple) {
style |= SWT.MULTI;
}
FileDialog dialog = new FileDialog(getShell(), style);
if (startingDirectory != null) {
dialog.setFileName(startingDirectory.getPath());
}
if (extensions != null) {
dialog.setFilterExtensions(extensions);
}
dialog.open();
String[] fileNames = dialog.getFileNames();
if (fileNames.length > 0) {
File[] files = new File[fileNames.length];
for (int i = 0; i < fileNames.length; i++) {
files[i] = new File(dialog.getFilterPath(), fileNames[i]);
}
return files;
}
return null;
}
@Override
public void setFileExtensions(String[] extensions) {
this.extensions = extensions;
}
/**
* multiple ��ݒ肵�܂�.
*
* @param multiple
* multiple
*/
public void setMultiple(boolean multiple) {
this.multiple = multiple;
}
}