Java tutorial
package com.fisbein.joan.gui; import java.awt.FlowLayout; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.mail.MessagingException; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.SwingUtilities; import javax.swing.WindowConstants; import org.apache.log4j.Logger; import com.fisbein.joan.model.ImapCopier; import com.fisbein.joan.model.ImapCopyAplicationEvent; import com.fisbein.joan.model.ImapCopyEvent; import com.fisbein.joan.model.ImapCopyFolderEvent; import com.fisbein.joan.model.ImapCopyListenerInterface; import com.jgoodies.forms.layout.CellConstraints; import com.jgoodies.forms.layout.FormLayout; /** * This code was edited or generated using CloudGarden's Jigloo SWT/Swing GUI Builder, which is free * for non-commercial use. If Jigloo is being used commercially (ie, by a corporation, company or * business for any purpose whatever) then you should purchase a license for each developer using * Jigloo. Please visit www.cloudgarden.com for details. Use of Jigloo implies acceptance of these * licensing terms. A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR THIS MACHINE, SO JIGLOO OR THIS * CODE CANNOT BE USED LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE. */ public class ImapCopyGui extends javax.swing.JFrame implements ImapCopyListenerInterface { private static final long serialVersionUID = 3773683855479203142L; private final static Logger log = Logger.getLogger(ImapCopyGui.class); private JButton btnStop; private JLabel labelLog; private JButton btnCopy; private JButton btnEditImapSource; private JButton btnEditImapTarget; private JTextField textImapTarget; private JTextField textImapSource; private JLabel labelImapTarget; private JLabel labelImapSource; private Thread copyThread; /** * Auto-generated main method to display this JFrame */ public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { ImapCopyGui inst = new ImapCopyGui(); inst.setLocationRelativeTo(null); inst.setVisible(true); } }); } public ImapCopyGui() { super(); initGUI(); } private void initGUI() { try { FormLayout thisLayout = new FormLayout("max(p;5dlu), 83dlu, 78dlu, max(p;5dlu)", "max(p;5dlu), max(p;5dlu), max(p;5dlu), max(p;5dlu), max(p;15dlu)"); getContentPane().setLayout(thisLayout); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); this.setTitle("Imap Copy"); this.setPreferredSize(new java.awt.Dimension(474, 128)); this.setResizable(false); { labelImapSource = new JLabel(); getContentPane().add(labelImapSource, new CellConstraints("1, 1, 1, 1, default, default")); labelImapSource.setText("Source Account:"); } { labelImapTarget = new JLabel(); getContentPane().add(labelImapTarget, new CellConstraints("1, 2, 1, 1, default, default")); labelImapTarget.setText("Target Account:"); } { textImapSource = new JTextField(); getContentPane().add(textImapSource, new CellConstraints("2, 1, 2, 1, default, default")); } { textImapTarget = new JTextField(); getContentPane().add(textImapTarget, new CellConstraints("2, 2, 2, 1, default, default")); } { btnEditImapTarget = new JButton(); getContentPane().add(btnEditImapTarget, new CellConstraints("4, 2, 1, 1, default, default")); btnEditImapTarget.setText("..."); btnEditImapTarget.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { btnEditImapTargetActionPerformed(evt); } }); } { btnEditImapSource = new JButton(); getContentPane().add(btnEditImapSource, new CellConstraints("4, 1, 1, 1, default, default")); btnEditImapSource.setText("..."); btnEditImapSource.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { btnEditImapSourceActionPerformed(evt); } }); } { btnCopy = new JButton(); FlowLayout btnCopyLayout = new FlowLayout(); btnCopy.setLayout(btnCopyLayout); getContentPane().add(btnCopy, new CellConstraints("2, 4, 1, 1, default, default")); btnCopy.setText("Copy"); btnCopy.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { btnCopyActionPerformed(evt); } }); } { labelLog = new JLabel(); getContentPane().add(labelLog, new CellConstraints("2, 3, 3, 1, default, default")); labelLog.setText("log"); } { btnStop = new JButton(); FlowLayout btnStopLayout = new FlowLayout(); btnStop.setLayout(btnStopLayout); getContentPane().add(btnStop, new CellConstraints("3, 4, 1, 1, default, default")); btnStop.setText("Stop"); btnStop.setEnabled(false); btnStop.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { btnStopActionPerformed(evt); } }); } this.setSize(474, 128); } catch (Exception e) { log.error(e.getMessage(), e); } } private void btnCopyActionPerformed(ActionEvent evt) { log.debug("btnCopy.actionPerformed, event=" + evt); ImapCopier ic = new ImapCopier(); ic.addImapCopyListener(this); try { ic.openSourceConnection(textImapSource.getText()); ic.openTargetConnection(textImapTarget.getText()); btnCopy.setEnabled(false); btnStop.setEnabled(true); copyThread = new Thread(ic); copyThread.start(); } catch (MessagingException e) { log.error(e.getMessage(), e); } } private void btnEditImapSourceActionPerformed(ActionEvent evt) { log.debug("btnEditImapSource.actionPerformed, event=" + evt); imapUrlCreatorDialog dialog = new imapUrlCreatorDialog(this); Rectangle bounds = dialog.getBounds(); bounds.x = this.getBounds().x; bounds.y = this.getBounds().y; dialog.setBounds(bounds); dialog.setURL(textImapSource.getText()); dialog.setModal(true); dialog.setVisible(true); } private void btnEditImapTargetActionPerformed(ActionEvent evt) { log.debug("btnEditImapTarget.actionPerformed, event=" + evt); imapUrlCreatorDialog dialog = new imapUrlCreatorDialog(this); Rectangle bounds = dialog.getBounds(); bounds.x = this.getBounds().x; bounds.y = this.getBounds().y; dialog.setBounds(bounds); dialog.setURL(textImapTarget.getText()); dialog.setModal(true); dialog.setVisible(true); } public void eventNotification(ImapCopyEvent event) { if (event instanceof ImapCopyFolderEvent) { labelLog.setText("Copying Folder:" + ((ImapCopyFolderEvent) event).getFolderName()); this.repaint(); } else if (event instanceof ImapCopyAplicationEvent) { if (((ImapCopyAplicationEvent) event).getType() == ImapCopyAplicationEvent.END) { btnCopy.setEnabled(true); btnStop.setEnabled(false); } } } @SuppressWarnings("deprecation") private void btnStopActionPerformed(ActionEvent evt) { log.debug("btnStop.actionPerformed, event=" + evt); this.copyThread.stop(); btnCopy.setEnabled(true); btnStop.setEnabled(false); } }