import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.MouseEvent; 

import javax.swing.JFrame; 
import javax.swing.JMenu; 
import javax.swing.JMenuItem; 
import javax.swing.JPopupMenu; 
import javax.swing.JOptionPane;

public class KeyPopup extends JPopupMenu implements ActionListener { 

  private static final long serialVersionUID = 1L; 
     
  JMenuItem bmi, ami, emi, kmi, dmi1, dmi2, dmi3, vmi; 
  ChatClient cc;
  Key k;
     
  public KeyPopup( MouseEvent event, ChatClient cc, Key k){ 
    this.cc = cc;
    this.k = k;
    //      Submenu 
    
    dmi1 = new JMenuItem("Schlüsselpaar (50bit) erzeugen"); 
    dmi1.addActionListener(this); 
    add(dmi1); 
    dmi2 = new JMenuItem("Schlüsselpaar (512bit) erzeugen"); 
    dmi2.addActionListener(this); 
    add(dmi2); 
    dmi3 = new JMenuItem("Schlüsselpaar (1024bit) erzeugen"); 
    dmi3.addActionListener(this); 
    add(dmi3);
    addSeparator(); 
    if (k != null) {
      vmi = new JMenuItem("Schlüssel-Name-Paar zertifizieren"); 
      vmi.addActionListener(this); 
      add(vmi); 
      
    } // end of if
    bmi = new JMenuItem("Öffentlichen Schlüssel der Zertifizierungsstelle anzeigen"); 
    bmi.addActionListener(this); 
    add(bmi); 
    addSeparator();
    if (k!=null) {
      ami = new JMenuItem("Schlüssel löschen"); 
      ami.addActionListener(this); 
      add(ami); 
      
    } // end of if
    /*
    kmi = new JMenuItem("Schlüssel selbst eingeben"); 
    kmi.addActionListener(this); 
    add(kmi);
    */ 
    show(event.getComponent(), event.getX(), event.getY()); 
  } 
      
  public void actionPerformed(ActionEvent e) { 
    
    
    if (e.getSource() == dmi1) { 
      cc.generateKeyPair(50);
    } 
    if (e.getSource() == dmi2) { 
      cc.generateKeyPair(512);
    } 
    if (e.getSource() == dmi3) { 
      cc.generateKeyPair(1024);
    } 
    if (e.getSource()== bmi) {
      cc.showPublicZertKey();
      
    } // end of if
    if (e.getSource() == vmi) {
      JOptionPane.showMessageDialog(this,
          "Gehen Sie bitte mit Ihrem Schlüssel zur Zertifizierungsstelle.\nSind Sie angekommen?",
          "Zertifizierung",
          JOptionPane.INFORMATION_MESSAGE);
      JOptionPane.showMessageDialog(this,
          "Geben Sie dort bitte Ihren Schlüssel ab und weisen Sie sich als "+cc.jTFName.getText()+" aus.\nHaben Sie sich ausgewiesen?",
          "Zertifizierung",
          JOptionPane.INFORMATION_MESSAGE);
      JOptionPane.showMessageDialog(this,
          "Sie erhalten jetzt von der Zertifizierungsstelle Ihren mit "+cc.jTFName.getText()+" zertifizierten Schlüssel.\nMöchten Sie diesen in Ihrem Chat-Client importieren?",
          "Zertifizierung",
          JOptionPane.INFORMATION_MESSAGE);
      cc.signKey(k);
    } // end of if
    
    if (e.getSource() == ami) {
      cc.deleteKey(k);
    } // end of if
  } 
} 