package xapc.gui;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintStream;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
import xapc.core.LibGui;
import net.miginfocom.swing.MigLayout;
public class FeedbackPanel extends JDialog
{
private static final long serialVersionUID = 442580013916858376L;
private JTextArea label = new JTextArea("M�chtest du etwas kritisieren, " +
"verbessern, abschaffen oder einfach nur deine Meinung �u�ern,\n" +
"so schreibe all dies in das untere Textfeld und schicke mir dein Feedback.\n\n" +
"Bitte f�lle deine Email und Anmeldeinformationen ein, da die Email " +
"�ber den SMTP Host deines Email\n Providers verschickt wird!");
private JLabel labelEmailFrom = new JLabel("Deine Email");
private JLabel labelHost = new JLabel("(SMTP) Host deines Email Providers");
private JLabel labelName = new JLabel("Name zum Anmelden");
private JLabel labelPassword = new JLabel("Passwort zum Anmelden");
private JTextField jTextFieldEmailFrom = new JTextField(20);
private JTextField jTextFieldHost = new JTextField(20);
private JTextField jTextFieldName = new JTextField(20);
private JPasswordField jTextFieldPassword = new JPasswordField(20);
public FeedbackPanel()
{
super(XRGui.getInstance());
setTitle("Feedback...");
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
getRootPane().registerKeyboardAction(new ActionListener() {@Override
public void actionPerformed(ActionEvent arg0) {
dispose(); }
}, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, false),
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
label.setEditable(false);
label.setOpaque(false);
label.setFont(new JLabel().getFont());
JPanel contentPanel = new JPanel(new MigLayout(
"",
"",
""));
final JTextArea ta = new JTextArea(10, 60);
JScrollPane sp = new JScrollPane(ta);
JButton send = new JButton("Abschicken");
send.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
boolean failure = false;
Properties props = new Properties();
Session session = Session.getDefaultInstance(props);
session.setDebug(true);
File sErrFile = new File("feedback_error.txt");
PrintStream ps = null;
try
{
ps = new PrintStream(sErrFile);
session.setDebugOut(ps);
}
catch (FileNotFoundException e2)
{
e2.printStackTrace();
}
Message message = new MimeMessage(session);
Address addressFrom = null;
Address addressTo = null;
try
{
addressFrom = new InternetAddress(jTextFieldEmailFrom.getText());
addressTo = new InternetAddress("r.Heffler@web.de");
message.setText(ta.getText());
message.setSubject("XhodonRechner Feedback");
message.setFrom(addressFrom);
message.addRecipient(Message.RecipientType.TO, addressTo);
message.saveChanges();
Transport transport = session.getTransport("smtp");
transport.connect(jTextFieldHost.getText(), jTextFieldName.getText(), new String(jTextFieldPassword.getPassword()));
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
catch (Exception e1)
{
failure = true;
if(ps != null) e1.printStackTrace(ps);
// e1.printStackTrace();
LibGui.showErrorDialog("Beim Versenden der Email ist ein Fehler aufgetreten.");
}
if(!failure)
{
JOptionPane.showMessageDialog(XRGui.getInstance(), "Email erfolgreich verschickt...",
"Erfolgreich...", JOptionPane.INFORMATION_MESSAGE);
if(sErrFile.exists()) sErrFile.delete();
}
}
});
JButton cancel = new JButton("Beenden");
cancel.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
dispose();
}
});
contentPanel.add(label, "cell 0 0 2");
contentPanel.add(labelEmailFrom, "cell 0 1 2");
contentPanel.add(jTextFieldEmailFrom, "cell 1 1 2");
contentPanel.add(labelHost, "cell 0 2");
contentPanel.add(jTextFieldHost, "cell 1 2");
contentPanel.add(labelName, "cell 0 3");
contentPanel.add(jTextFieldName, "cell 1 3");
contentPanel.add(labelPassword, "cell 0 4");
contentPanel.add(jTextFieldPassword, "cell 1 4");
contentPanel.add(sp, "cell 0 5 2");
contentPanel.add(send, "cell 0 6 2");
contentPanel.add(cancel, "cell 0 6 2");
setContentPane(contentPanel);
pack();
}
}