// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.plugins.opendata.core.io.archive;
import static org.openstreetmap.josm.tools.I18n.tr;
import java.awt.Component;
import java.awt.GridBagLayout;
import java.io.File;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import org.openstreetmap.josm.gui.ExtendedDialog;
import org.openstreetmap.josm.tools.GBC;
@SuppressWarnings("serial")
public class CandidateChooser extends ExtendedDialog {
/**
* This is the panel holding all candidate files
*/
private final JPanel projPanel = new JPanel(new GridBagLayout());
private final JComboBox<File> fileCombo;
public CandidateChooser(Component parent, List<File> candidates) {
this(parent, tr("File to load"), new String[] {tr("OK"), tr("Cancel")}, candidates);
}
private class Renderer extends DefaultListCellRenderer {
@Override
public Component getListCellRendererComponent(JList<?> list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (value instanceof File) {
setText(((File) value).getName());
}
return this;
}
}
protected CandidateChooser(Component parent, String title, String[] buttonTexts, List<File> candidates) {
super(parent, title, buttonTexts);
this.fileCombo = new JComboBox<>(candidates.toArray(new File[0]));
this.fileCombo.setRenderer(new Renderer());
addGui(candidates);
}
public void addGui(List<File> candidates) {
projPanel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
projPanel.setLayout(new GridBagLayout());
projPanel.add(new JLabel(tr("File to load")), GBC.std().insets(5, 5, 0, 5));
projPanel.add(GBC.glue(5, 0), GBC.std().fill(GBC.HORIZONTAL));
/*for (File file : candidates) {
JCheckBox cbox = new JCheckBox(file.getName());
checkBoxes.put(cbox, file);
projPanel.add(cbox, GBC.eop().fill(GBC.HORIZONTAL).insets(0, 5, 5, 5));
}*/
projPanel.add(fileCombo, GBC.eop().fill(GBC.HORIZONTAL).insets(0, 5, 5, 5));
setContent(projPanel);
}
/*public List<File> getSelectedFiles() {
List<File> result = new ArrayList<File>();
for (JCheckBox cbox : checkBoxes.keySet()) {
if (cbox.isSelected()) {
result.add(checkBoxes.get(cbox));
}
}
return result;
}*/
public File getSelectedFile() {
return (File) fileCombo.getSelectedItem();
}
}