package org.kalisen.classpathdoctor.gui.actions;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.io.File;
import java.util.ResourceBundle;
import javax.swing.AbstractAction;
import javax.swing.JFileChooser;
import javax.swing.JPanel;
import javax.swing.KeyStroke;
import javax.swing.filechooser.FileFilter;
import org.kalisen.classpathdoctor.adapter.ClassPathAdapter;
@SuppressWarnings("serial")
public class AddAnEntryAction extends AbstractAction {
private ClassPathAdapter cpAdapter = null;
private JPanel parent = null;
private static final String ADD_AN_ENTRY_LABEL = ResourceBundle.getBundle(
"UsersMessages").getString("add.an.entry.action.label");
public AddAnEntryAction(JPanel parent, ClassPathAdapter cpAdapter) {
super(ADD_AN_ENTRY_LABEL);
putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke('a'));
putValue(MNEMONIC_KEY, Integer.valueOf(KeyEvent.VK_A));
putValue(SHORT_DESCRIPTION, ResourceBundle.getBundle("UsersMessages")
.getString("add.an.entry.action.shortdesc"));
setParent(parent);
setClassPathAdapter(cpAdapter);
}
protected ClassPathAdapter getClassPathAdapter() {
return this.cpAdapter;
}
protected void setClassPathAdapter(ClassPathAdapter cpAdapter) {
if (cpAdapter == null) {
throw new IllegalArgumentException("null is not a valid argument");
}
this.cpAdapter = cpAdapter;
}
protected JPanel getParent() {
return this.parent;
}
protected void setParent(JPanel parent) {
if (parent == null) {
throw new IllegalArgumentException("null is not a valid argument");
}
this.parent = parent;
}
public void actionPerformed(ActionEvent e) {
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileFilter(new JavaLibraryFileFilter());
fileChooser.setName("Add An Entry");
fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
fileChooser.setMultiSelectionEnabled(true);
fileChooser.showOpenDialog(getParent());
final File[] files = fileChooser.getSelectedFiles();
final ClassPathAdapter adapter = this.cpAdapter;
if (files.length > 0) {
for (File file : files) {
adapter.addEntry(file.getPath());
}
}
}
public static class JavaLibraryFileFilter extends FileFilter {
@Override
public String getDescription() {
return "Java libraries";
}
@Override
public boolean accept(File f) {
return f != null
&& (f.isDirectory() || f.getName().endsWith(".jar") || f
.getName().endsWith(".zip"));
}
}
}