/*
* Created on 12.06.2005
* Author: Moritz Kroll
*/
package jplagAdminTool;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.util.Vector;
import javax.swing.AbstractAction;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRootPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
import javax.swing.Timer;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.text.BadLocationException;
import jplagWsClient.jplagClient.MailTemplate;
import jplagWsClient.jplagClient.RequestData;
import jplagWsClient.jplagClient.SetMailTemplateParams;
public class MailDialog extends JDialog {
private static final long serialVersionUID = -384670645825122963L;
public static final String JPLAG_SERVER = "https://www.ipd.kit.edu/jplag";
public static final int MAIL_ACCEPTED = 0;
public static final int MAIL_DECLINED = 1;
public static final int MAIL_SERVER = 2;
public static final int MAIL_ALL = 3;
public static final int USERNAME=0;
public static final int PASSWORD=1;
public static final int EXPIRES=2;
public static final int REALNAME=3;
public static final int EMAIL=4;
public static final int EMAILSECOND=5;
public static final int HOMEPAGE=6;
public static final int SERVER=7;
private static final String[] tagNames = { "username", "password", "expires", "realname", "email", "emailSecond", "homepage", "server" };
/*
* public static final int S_USERNAME=0; public static final int
* S_PASSWORD=1; public static final int S_EXPIRES=2; public static final
* int S_LASTUSAGE=3; public static final int S_NUMOFSUBS=4; public static
* final int S_REALNAME=5; public static final int S_EMAIL=6; public static
* final int S_EMAILSECOND=7; public static final int S_HOMEPAGE=8; public
* static final int S_SERVER=9;
*
* private static final String[] serverTagNames = { "username", "password",
* "expires", "lastUsage", "numOfSubs", "realname", "email", "emailSecond",
* "homepage", "server" };
*/
private static final String[] typeNames = { "accepted", "declined", "serverMail" };
private javax.swing.JPanel jContentPane = null;
private JTextArea jTemplateTextArea = null;
private JPanel jPanel = null;
private JLabel jLabel = null;
private JLabel jLabel1 = null;
private JScrollPane jTemplateScrollPane = null;
private JScrollPane jPreviewScrollPane = null;
private JTextArea jPreviewTextArea = null;
private JPanel jButtonPanel = null;
private JButton jSaveAndSendButton = null;
private JButton jSendButton = null;
private JButton jCancelButton = null;
private JButton jSaveButton = null;
private JComboBox<String> jTemplateComboBox = null;
private JLabel jLabel2 = null;
private JComboBox<String> jTagComboBox = null;
private Vector<MailTemplate> templates = null;
private AdminTool adminTool = null;
private int type = 0;
private RequestData reqData = null;
private boolean showSendButtons = true;
private boolean cancelled = true;
private String preview = "";
private String subject = "";
private JTextField jSubjectField = null;
private JLabel jLabel3 = null;
private JPanel jTypeChoosePanel = null;
private JLabel jChooseTypeLabel = null;
private JComboBox<String> jTypeComboBox = null;
private JButton jCopyTemplateButton = null;
private JButton jRenameTemplateButton = null;
private JButton jDeleteTemplateButton = null;
public MailDialog(int typ, String title, RequestData rd, JDialog parent,
AdminTool at) {
super(parent,true); // make modal
init(typ,title,rd,at);
}
public MailDialog(int typ, String title, RequestData rd, AdminTool at) {
super(at,true); // make modal
init(typ,title,rd,at);
}
private void init(int typ, String title, RequestData rd, AdminTool at) {
adminTool = at;
type = typ;
reqData = rd;
if(type == MAIL_ALL) {
showSendButtons = false;
type = MAIL_ACCEPTED;
}
try {
MailTemplate[] temps = at.getJPlagStub().getMailTemplates(type).
getItems();
templates = new Vector<MailTemplate>(temps.length,3);
for(int i=0;i<temps.length;i++)
templates.add(temps[i]);
}
catch(Exception ex) {
at.CheckException(ex,at);
}
initialize(title);
}
protected JRootPane createRootPane() {
KeyStroke stroke=KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0);
JRootPane rootPane=new JRootPane();
rootPane.registerKeyboardAction(new ActionListener() {
public void actionPerformed(ActionEvent actionEvent) {
setVisible(false);
dispose();
}
}, stroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
return rootPane;
}
public boolean isCancelled() {
return cancelled;
}
public String getMailString() {
return preview;
}
public String getMailSubjectString() {
return subject;
}
/**
* This method initializes this
*
* @return void
*/
private void initialize(String title) {
this.setSize(640, 400);
this.setTitle(title);
this.setContentPane(getJContentPane());
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private javax.swing.JPanel getJContentPane() {
if(jContentPane == null) {
jContentPane = new javax.swing.JPanel();
jContentPane.setLayout(new java.awt.BorderLayout());
jContentPane.add(getJPanel(), java.awt.BorderLayout.CENTER);
jContentPane.add(getJButtonPanel(), java.awt.BorderLayout.SOUTH);
if(!showSendButtons)
jContentPane.add(getJTypeChoosePanel(),
java.awt.BorderLayout.NORTH);
}
return jContentPane;
}
/**
* This method initializes jPanel
*
* @return javax.swing.JPanel
*/
private JPanel getJPanel() {
if (jPanel == null) {
GridBagConstraints gridBagConstraints10 = new GridBagConstraints();
gridBagConstraints10.gridx = 4;
gridBagConstraints10.insets = new java.awt.Insets(0,5,0,0);
gridBagConstraints10.gridy = 0;
GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
gridBagConstraints1.gridx = 3;
gridBagConstraints1.insets = new java.awt.Insets(0,5,0,0);
gridBagConstraints1.gridy = 0;
GridBagConstraints gridBagConstraints = new GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.insets = new java.awt.Insets(0,5,0,0);
gridBagConstraints.gridy = 0;
GridBagConstraints gridBagConstraints6 = new GridBagConstraints();
gridBagConstraints6.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints6.gridx = 1;
gridBagConstraints6.gridy = 1;
gridBagConstraints6.gridwidth = 1;
gridBagConstraints6.weightx = 1.0D;
gridBagConstraints6.insets = new java.awt.Insets(10,5,0,5);
GridBagConstraints gridBagConstraints51 = new GridBagConstraints();
gridBagConstraints51.gridx = 0;
gridBagConstraints51.gridy = 1;
gridBagConstraints51.insets = new java.awt.Insets(10,0,0,0);
gridBagConstraints51.anchor = java.awt.GridBagConstraints.WEST;
jLabel3 = new JLabel();
jLabel3.setText("Subject:");
GridBagConstraints gridBagConstraints9 = new GridBagConstraints();
gridBagConstraints9.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints9.gridx = 3;
gridBagConstraints9.gridy = 1;
gridBagConstraints9.gridwidth = 2;
gridBagConstraints9.insets = new java.awt.Insets(5,5,0,0);
GridBagConstraints gridBagConstraints8 = new GridBagConstraints();
gridBagConstraints8.gridx = 2;
gridBagConstraints8.insets = new java.awt.Insets(10,0,0,0);
gridBagConstraints8.gridy = 1;
jLabel2 = new JLabel();
jLabel2.setText("Insert tag:");
GridBagConstraints gridBagConstraints7 = new GridBagConstraints();
gridBagConstraints7.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints7.gridx = 1;
gridBagConstraints7.gridy = 0;
gridBagConstraints7.weightx = 1.0;
gridBagConstraints7.insets = new java.awt.Insets(0,5,0,5);
GridBagConstraints gridBagConstraints5 = new GridBagConstraints();
gridBagConstraints5.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints5.gridx = 0;
gridBagConstraints5.gridy = 4;
gridBagConstraints5.weightx = 1.0;
gridBagConstraints5.weighty = 1.0;
gridBagConstraints5.insets = new java.awt.Insets(5,10,0,0);
gridBagConstraints5.gridwidth = 6;
GridBagConstraints gridBagConstraints4 = new GridBagConstraints();
gridBagConstraints4.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints4.gridx = 0;
gridBagConstraints4.gridy = 2;
gridBagConstraints4.weightx = 1.0;
gridBagConstraints4.weighty = 1.0;
gridBagConstraints4.insets = new java.awt.Insets(5,10,5,0);
gridBagConstraints4.gridwidth = 5;
GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
gridBagConstraints3.gridx = 0;
gridBagConstraints3.gridy = 3;
gridBagConstraints3.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints3.gridwidth = 4;
jLabel1 = new JLabel();
jLabel1.setText("E-Mail preview:");
GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
gridBagConstraints2.gridx = 0;
gridBagConstraints2.gridy = 0;
gridBagConstraints2.anchor = java.awt.GridBagConstraints.WEST;
jLabel = new JLabel();
jLabel.setText("Template:");
jPanel = new JPanel();
jPanel.setLayout(new GridBagLayout());
jPanel.setBorder(
javax.swing.BorderFactory.createEmptyBorder(5,5,5,5));
jPanel.add(getJPreviewScrollPane(), gridBagConstraints5);
jPanel.add(getJSubjectField(), gridBagConstraints6);
jPanel.add(jLabel3, gridBagConstraints51);
jPanel.add(getJTagComboBox(), gridBagConstraints9);
jPanel.add(jLabel2, gridBagConstraints8);
jPanel.add(getJTemplateComboBox(), gridBagConstraints7);
jPanel.add(jLabel, gridBagConstraints2);
jPanel.add(jLabel1, gridBagConstraints3);
jPanel.add(getJTemplateScrollPane(), gridBagConstraints4);
jPanel.add(getJCopyTemplateButton(), gridBagConstraints);
jPanel.add(getJRenameTemplateButton(), gridBagConstraints1);
jPanel.add(getJDeleteTemplateButton(), gridBagConstraints10);
}
return jPanel;
}
/**
* This method initializes jTemplateScrollPane
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJTemplateScrollPane() {
if (jTemplateScrollPane == null) {
jTemplateScrollPane = new JScrollPane();
jTemplateScrollPane.setViewportView(getJTemplateTextArea());
}
return jTemplateScrollPane;
}
/**
* This method initializes jTextArea
*
* @return javax.swing.JTextArea
*/
private JTextArea getJTemplateTextArea() {
if (jTemplateTextArea == null) {
jTemplateTextArea = new JTextArea();
jTemplateTextArea.setLineWrap(true);
jTemplateTextArea.setWrapStyleWord(true);
jTemplateTextArea.getDocument().addDocumentListener(new DocumentListener() {
private Timer timer = null;
@SuppressWarnings("serial")
private Timer getTimer() {
if (timer == null) {
timer = new Timer(300, new AbstractAction() {
public void actionPerformed(ActionEvent e) {
updatePreview();
}
});
timer.setRepeats(false);
}
return timer;
}
public void changedUpdate(DocumentEvent arg0) {
getTimer().restart();
}
public void insertUpdate(DocumentEvent arg0) {
getTimer().restart();
}
public void removeUpdate(DocumentEvent arg0) {
getTimer().restart();
}
});
}
return jTemplateTextArea;
}
/**
* This method initializes jPreviewScrollPane
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJPreviewScrollPane() {
if (jPreviewScrollPane == null) {
jPreviewScrollPane = new JScrollPane();
jPreviewScrollPane.setViewportView(getJPreviewTextArea());
}
return jPreviewScrollPane;
}
/**
* This method initializes jPreviewTextArea
*
* @return javax.swing.JTextArea
*/
private JTextArea getJPreviewTextArea() {
if (jPreviewTextArea == null) {
jPreviewTextArea = new JTextArea();
jPreviewTextArea.setLineWrap(true);
jPreviewTextArea.setWrapStyleWord(true);
jPreviewTextArea.setEditable(false);
}
return jPreviewTextArea;
}
/**
* This method initializes jButtonPanel
*
* @return javax.swing.JPanel
*/
private JPanel getJButtonPanel() {
if (jButtonPanel == null) {
jButtonPanel = new JPanel();
if(showSendButtons)
{
jButtonPanel.add(getJSendButton(), null);
jButtonPanel.add(getJCancelButton(), null);
jButtonPanel.add(Box.createHorizontalStrut(20),null);
jButtonPanel.add(getJSaveButton(), null);
jButtonPanel.add(getJSaveAndSendButton(), null);
}
else {
jButtonPanel.add(getJSaveButton(), null);
jButtonPanel.add(getJCancelButton(), null);
}
}
return jButtonPanel;
}
/**
* This method initializes jButton
*
* @return javax.swing.JButton
*/
private JButton getJSaveAndSendButton() {
if (jSaveAndSendButton == null) {
jSaveAndSendButton = new JButton();
jSaveAndSendButton.setText("Save and send");
jSaveAndSendButton.addActionListener(
new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
subject=getJSubjectField().getText();
saveTemplate();
cancelled = false;
setVisible(false);
dispose();
}
});
}
return jSaveAndSendButton;
}
/**
* This method initializes jButton2
*
* @return javax.swing.JButton
*/
private JButton getJSendButton() {
if (jSendButton == null) {
jSendButton = new JButton();
jSendButton.setText("Send");
jSendButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
subject=getJSubjectField().getText();
cancelled = false;
setVisible(false);
dispose();
}
});
}
return jSendButton;
}
/**
* This method initializes jButton1
*
* @return javax.swing.JButton
*/
private JButton getJCancelButton() {
if (jCancelButton == null) {
jCancelButton = new JButton();
jCancelButton.setText(showSendButtons ? "Cancel" : "Close");
jCancelButton.addActionListener(
new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
setVisible(false);
dispose();
}
});
}
return jCancelButton;
}
private void setMailTemplate(String name, String subject, String data) {
try {
adminTool.getJPlagStub().setMailTemplate(new SetMailTemplateParams(
type,new MailTemplate(name,subject,data)));
}
catch(Exception ex) {
adminTool.CheckException(ex,this);
}
}
private void saveTemplate() {
String name = (String) getJTemplateComboBox().getSelectedItem();
String data = getJTemplateTextArea().getText();
setMailTemplate(name, subject, data);
// Update template object
int tempNum = jTemplateComboBox.getSelectedIndex();
if(tempNum < 0) // if no name selected don't update...
return; // (this shouldn't happen...)
MailTemplate tmpl = templates.get(tempNum);
tmpl.setName(name);
tmpl.setSubject(subject);
tmpl.setData(data);
}
/**
* This method initializes jButton3
*
* @return javax.swing.JButton
*/
private JButton getJSaveButton() {
if (jSaveButton == null) {
jSaveButton = new JButton();
jSaveButton.setText("Save");
jSaveButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
subject=getJSubjectField().getText();
saveTemplate();
}
});
}
return jSaveButton;
}
private void updatePreview() {
String template = getJTemplateTextArea().getText();
String[] tokens = template.split("[{}]");
// TODO: Check whether every '{' has a following '}'
preview = tokens[0];
for(int i=1;i<tokens.length;i+=2)
{
int j;
for(j=0;j<tagNames.length;j++)
{
if(tagNames[j].equals(tokens[i]))
break;
}
switch(j)
{
case USERNAME: preview += reqData.getUsername(); break;
case PASSWORD: preview += reqData.getPassword(); break;
case REALNAME: preview += reqData.getRealName(); break;
case EMAIL: preview += reqData.getEmail(); break;
case EMAILSECOND: preview += reqData.getEmailSecond(); break;
case HOMEPAGE: preview += reqData.getHomepage(); break;
case SERVER: preview += JPLAG_SERVER; break;
default: preview += "[N/A]"; break;
}
if(i+1<tokens.length) preview += tokens[i+1];
}
getJPreviewTextArea().setText(preview);
try
{
// Set preview cursor into the same line as the template cursor
int viewline=getJTemplateTextArea().getLineOfOffset(
getJTemplateTextArea().getCaretPosition());
getJPreviewTextArea().setCaretPosition(
getJPreviewTextArea().getLineStartOffset(viewline));
// Let preview viewport start painting at the same line as
// the template viewport
Point p=getJTemplateScrollPane().getViewport().getViewPosition();
getJPreviewScrollPane().getViewport().setViewPosition(p);
}
catch(BadLocationException ex) {} // just don't scroll
}
/**
* This method initializes jComboBox
*
* @return javax.swing.JComboBox
*/
private JComboBox<String> getJTemplateComboBox() {
if (jTemplateComboBox == null) {
String[] templateNames = new String[templates.size()];
for(int i=0;i<templates.size();i++)
templateNames[i] = templates.get(i).getName();
jTemplateComboBox = new JComboBox<String>(templateNames);
jTemplateComboBox.addActionListener(
new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
int tempNum = jTemplateComboBox.getSelectedIndex();
if(tempNum < 0) // if new name selected
return; // don't change the text
MailTemplate tmpl = templates.get(tempNum);
getJSubjectField().setText(tmpl.getSubject());
getJTemplateTextArea().setText(tmpl.getData());
getJTemplateTextArea().setCaretPosition(0);
updatePreview();
}
});
if(templates.size()>0)
jTemplateComboBox.setSelectedIndex(0);
}
return jTemplateComboBox;
}
/**
* This method initializes jComboBox1
*
* @return javax.swing.JComboBox
*/
private JComboBox<String> getJTagComboBox() {
if (jTagComboBox == null) {
jTagComboBox = new JComboBox<String>(tagNames);
jTagComboBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
JTextArea ta = getJTemplateTextArea();
ta.insert("{" + (String) jTagComboBox.getSelectedItem() +
"}",ta.getCaretPosition());
}
});
}
return jTagComboBox;
}
/**
* This method initializes jTextField
*
* @return javax.swing.JTextField
*/
private JTextField getJSubjectField() {
if (jSubjectField == null) {
jSubjectField = new JTextField();
jSubjectField.setColumns(51);
}
return jSubjectField;
}
/**
* This method initializes jTypeChoosePanel
*
* @return javax.swing.JPanel
*/
private JPanel getJTypeChoosePanel() {
if(jTypeChoosePanel == null) {
FlowLayout flowLayout = new FlowLayout();
flowLayout.setAlignment(java.awt.FlowLayout.LEFT);
flowLayout.setVgap(0);
jChooseTypeLabel = new JLabel();
jChooseTypeLabel.setText("Type:");
jChooseTypeLabel.setPreferredSize(jLabel.getPreferredSize());
jTypeChoosePanel = new JPanel();
jTypeChoosePanel.setBorder(
javax.swing.BorderFactory.createEmptyBorder(5,0,0,0));
jTypeChoosePanel.setLayout(flowLayout);
jTypeChoosePanel.add(jChooseTypeLabel, null);
jTypeChoosePanel.add(getJTypeComboBox(), null);
}
return jTypeChoosePanel;
}
private void setButtonsEnabled(boolean enabled) {
if(showSendButtons) {
getJSendButton().setEnabled(enabled);
getJSaveAndSendButton().setEnabled(enabled);
}
getJSaveButton().setEnabled(enabled);
}
/**
* This method initializes jTypeComboBox
*
* @return javax.swing.JComboBox
*/
private JComboBox<String> getJTypeComboBox() {
if(jTypeComboBox == null) {
jTypeComboBox = new JComboBox<String>(typeNames);
jTypeComboBox.addActionListener(
new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
final SwingWorker worker = new SwingWorker() {
public Object construct() {
try {
MailTemplate[] temps = adminTool.getJPlagStub().
getMailTemplates(type).getItems();
templates =
new Vector<MailTemplate>(temps.length,3);
for(int i=0;i<temps.length;i++)
templates.add(temps[i]);
}
catch(Exception ex)
{
adminTool.CheckException(ex,adminTool);
}
return null;
}
public void finished() {
jTemplateComboBox.removeAllItems();
for(int i=0;i<templates.size();i++)
jTemplateComboBox.addItem(
templates.get(i).getName());
if(templates.size()>0)
jTemplateComboBox.setSelectedIndex(0);
setButtonsEnabled(true);
}
};
int newtype = jTypeComboBox.getSelectedIndex();
if(newtype == type) return;
setButtonsEnabled(false);
type = newtype;
worker.start();
}
});
}
return jTypeComboBox;
}
/**
* This method initializes jCopyTemplateButton
*
* @return javax.swing.JButton
*/
private JButton getJCopyTemplateButton() {
if(jCopyTemplateButton == null) {
jCopyTemplateButton = new JButton();
jCopyTemplateButton.setText("Copy");
jCopyTemplateButton.addActionListener(
new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
String newname = JOptionPane.showInputDialog(
MailDialog.this, "Please enter the new template name" +
"\n(You will have to save the new template before\n" +
"switching to another one to avoid loosing the text):",
"Add new template", JOptionPane.PLAIN_MESSAGE);
if(newname.length()==0) {
JOptionPane.showMessageDialog(MailDialog.this,
"You didn't provide a new template name!",
"Adding new template aborted",
JOptionPane.WARNING_MESSAGE);
return;
}
MailTemplate newtemp = new MailTemplate(newname,
getJSubjectField().getText(),
getJTemplateTextArea().getText());
templates.add(newtemp);
getJTemplateComboBox().addItem(newname);
getJTemplateComboBox().setSelectedItem(newname);
}
});
}
return jCopyTemplateButton;
}
/**
* This method initializes jRenameTemplateButton
*
* @return javax.swing.JButton
*/
private JButton getJRenameTemplateButton() {
if(jRenameTemplateButton == null) {
jRenameTemplateButton = new JButton();
jRenameTemplateButton.setText("Rename");
jRenameTemplateButton.addActionListener(
new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
int tempNum = jTemplateComboBox.getSelectedIndex();
if(tempNum < 0) // if no name selected
return; // don't rename
MailTemplate tmpl = templates.get(tempNum);
String newname = JOptionPane.showInputDialog(
MailDialog.this, "The old template name is:\n "
+ tmpl.getName() + "\nPlease enter the new "
+ "template name:",
"Rename template", JOptionPane.PLAIN_MESSAGE);
setMailTemplate(tmpl.getName(),newname,"");
tmpl.setName(newname);
jTemplateComboBox.removeItemAt(tempNum);
jTemplateComboBox.insertItemAt(newname,tempNum);
jTemplateComboBox.setSelectedItem(newname);
}
});
}
return jRenameTemplateButton;
}
/**
* This method initializes jDeleteTemplateButton
*
* @return javax.swing.JButton
*/
private JButton getJDeleteTemplateButton() {
if(jDeleteTemplateButton == null) {
jDeleteTemplateButton = new JButton();
jDeleteTemplateButton.setText("Delete");
jDeleteTemplateButton.addActionListener(
new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
int tempNum = jTemplateComboBox.getSelectedIndex();
if(tempNum < 0) // if no name selected
return; // don't rename
MailTemplate tmpl = templates.get(tempNum);
if(JOptionPane.showConfirmDialog(MailDialog.this,
"Do you really want to delete this template:\n "
+ tmpl.getName() + "?", "Delete template",
JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE)==JOptionPane.NO_OPTION)
return;
setMailTemplate(tmpl.getName(),"","");
jTemplateComboBox.removeItemAt(tempNum);
templates.remove(tempNum);
}
});
}
return jDeleteTemplateButton;
}
} // @jve:decl-index=0:visual-constraint="10,10"