package org.irmacard.cardmanagement; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; import java.awt.Frame; import java.awt.SystemColor; import java.awt.Toolkit; import java.util.List; import java.util.ResourceBundle; import javax.swing.DefaultListModel; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JSplitPane; import javax.swing.JTabbedPane; import javax.swing.ListSelectionModel; import javax.swing.border.EmptyBorder; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import net.sourceforge.scuba.smartcards.CardService; import net.sourceforge.scuba.smartcards.CardServiceException; import org.irmacard.credentials.Attributes; import org.irmacard.credentials.CredentialsException; import org.irmacard.credentials.idemix.IdemixCredentials; import org.irmacard.credentials.info.CredentialDescription; import org.irmacard.credentials.info.InfoException; public class MainWindow extends JFrame implements ListSelectionListener { private static final long serialVersionUID = 3280620387236869052L; private static final ResourceBundle BUNDLE = ResourceBundle.getBundle("org.irmacard.cardmanagement.messages"); //$NON-NLS-1$ private JPanel contentPane; private DefaultListModel credentialListModel; private CredentialDetailView credentialDetailView; private JList list; private CardService cardService; /** * Create the frame. * @param manager * @param cardService */ public MainWindow(CardService cardService) { this.cardService = cardService; setExtendedState(Frame.MAXIMIZED_BOTH); setTitle(BUNDLE.getString("MainWindow.frmCardManagement.title")); //$NON-NLS-1$ setIconImage(Toolkit.getDefaultToolkit().getImage(MainWindow.class.getResource("/img/irma.png"))); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 673, 450); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); contentPane.setLayout(new BorderLayout(0, 0)); setContentPane(contentPane); JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP); tabbedPane.setForeground(new Color(0, 66, 137)); tabbedPane.setFont(new Font("Ubuntu", Font.PLAIN, 11)); contentPane.add(tabbedPane, BorderLayout.CENTER); JSplitPane credentialsTab = new JSplitPane(); tabbedPane.addTab("Credentials", null, credentialsTab, null); credentialDetailView = new CredentialDetailView(); /*Attributes attributes = new Attributes(); attributes.add("University", "Radboud University Nijmegen".getBytes()); attributes.add("Student ID", "u921154".getBytes()); attributes.add("Student Card", "2300921154".getBytes()); try { credentialDetailView.setCredential(new CredentialDescription((short)0), attributes); } catch (InfoException e) { // TODO Auto-generated catch block e.printStackTrace(); }*/ credentialsTab.setRightComponent(credentialDetailView); list = new JList(); list.setBackground(SystemColor.control); list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); credentialListModel = new DefaultListModel(); /*try { credentialListModel.addElement(new CredentialDescription((short)0)); credentialListModel.addElement(new CredentialDescription((short)1)); credentialListModel.addElement(new CredentialDescription((short)2)); } catch (InfoException e) { // TODO Auto-generated catch block e.printStackTrace(); }*/ list.setCellRenderer(new CredentialRenderer()); list.setModel(credentialListModel); list.addListSelectionListener(this); credentialsTab.setLeftComponent(list); JSplitPane logTab = new JSplitPane(); tabbedPane.addTab("Log", null, logTab, null); loadCredentials(); } private void loadCredentials() { IdemixCredentials ic = new IdemixCredentials(cardService); try { ic.connect(); List<CredentialDescription> credentials = ic.getCredentials(); for(CredentialDescription cred : credentials) { credentialListModel.addElement(cred); } } catch (CardServiceException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InfoException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (CredentialsException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override public void valueChanged(ListSelectionEvent event) { Attributes attributes = new Attributes(); if(list.getSelectedIndex() == 0) { attributes.add("University", "Radboud University Nijmegen".getBytes()); attributes.add("Student ID", "u921154".getBytes()); attributes.add("Student Card", "2300921154".getBytes()); } else if(list.getSelectedIndex() == 1) { attributes.add("Over 16", "True".getBytes()); attributes.add("Over 18", "True".getBytes()); attributes.add("Over 21", "False".getBytes()); } else if(list.getSelectedIndex() == 2) { attributes.add("Nationality", "Nederlands".getBytes()); } credentialDetailView.setCredential((CredentialDescription)list.getSelectedValue(), attributes); } }