package gitj.ui.components;
import java.awt.Component;
import java.util.List;
import javax.swing.DefaultComboBoxModel;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JList;
import git.Remote;
import git.Repository;
@SuppressWarnings("serial")
public class RemoteComboBox extends JComboBox<Remote> {
private DefaultComboBoxModel<Remote> model;
public RemoteComboBox(Repository repo) throws Exception {
model = new DefaultComboBoxModel<Remote>();
super.setRenderer(new Renderer());
super.setModel(model);
reload(repo.getRemotes());
}
public Remote getSelectedRemote() {
return (Remote) model.getSelectedItem();
}
public void reload(List<Remote> list) {
model.removeAllElements();
for (Remote remote : list) {
this.addItem(remote);
}
}
public class Renderer extends DefaultListCellRenderer {
@Override
public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
JLabel label = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (value instanceof Remote) {
Remote remote = (Remote) value;
label.setText(remote.getName() + ", " + remote.getPath());
}
return label;
}
}
}