package call.gui;
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import call.AbstractId;
import call.Contact;
import call.ContactList;
import call.ContactListUpdateListener;
public class ContactListGui extends AbstractId implements ContactListUpdateListener {
@SuppressWarnings("unused")
private final MainWindow main;
private final JList<Contact> peerlist;
private final ContactListModel peermodel;
private final JPanel panel;
public ContactListGui(MainWindow main) {
this.main = main;
panel = new JPanel();
panel.setLayout(new BorderLayout());
peermodel = new ContactListModel();
peerlist = new JList<>(peermodel);
peerlist.setCellRenderer(new ContactListCellRenderer());
// peer list
new ContactMouseAdapter(peerlist, peermodel);
ContactList.addListener(this);
}
public void addToWindow(JFrame window) {
window.getContentPane().add(BorderLayout.WEST, getComponent());
}
public JComponent getComponent() {
JScrollPane listPane = new JScrollPane(peerlist);
// panel.add(BorderLayout.NORTH, new JLabel("Contacts", JLabel.CENTER));
panel.add(BorderLayout.CENTER, listPane);
panel.setPreferredSize(new Dimension(180, 350));
return panel;
}
@Override
public void onAnyContactUpdate() {
panel.repaint();
}
@Override
public void onContactUpdate(Contact contact) {}
public void setSelectedContact(Contact contact) {
if (contact != null) {
int index = peermodel.indexOfElement(contact);
if (index >= 0 && peerlist.getSelectedIndex() != index) {
peerlist.setSelectedIndex(index);
}
} else {
peerlist.clearSelection();
}
}
@Override
public String getId() {
return "ContactListGui";
}
}