Go to the documentation of this file.00001
00002 import java.awt.Color;
00003 import java.awt.Dimension;
00004 import java.awt.Font;
00005 import java.awt.Toolkit;
00006 import java.awt.event.ActionEvent;
00007 import java.awt.event.ActionListener;
00008 import java.awt.event.WindowEvent;
00009
00010 import javax.swing.GroupLayout;
00011 import javax.swing.JButton;
00012 import javax.swing.JCheckBox;
00013 import javax.swing.JFrame;
00014 import javax.swing.JLabel;
00015 import javax.swing.JPanel;
00016 import javax.swing.JScrollPane;
00017 import javax.swing.JEditorPane;
00018 import javax.swing.JTextField;
00019 import javax.swing.LayoutStyle;
00020 import javax.swing.SwingUtilities;
00021 import javax.swing.WindowConstants;
00022 import javax.swing.GroupLayout.Alignment;
00023 import javax.swing.plaf.metal.MetalBorders;
00024
00025
00026
00027
00028
00029
00030
00031
00032 public class GetMailApp extends JFrame
00033 implements ActionListener
00034 {
00035
00036
00037
00038 private static final long serialVersionUID = -5231008427555021088L;
00039
00040
00041
00042
00043 private final static String appTitle = "IP1-6.2: POP3 Get Mail";
00044
00045
00046
00047
00048 private JButton buttonReceive;
00049 private JLabel labelServer;
00050 private JTextField fieldServer;
00051 private JLabel labelUsername;
00052 private JTextField fieldUsername;
00053 private JLabel labelPassword;
00054 private JTextField fieldPassword;
00055 private JScrollPane messageScrollPane;
00056 private JEditorPane messageContents;
00057 private JCheckBox showContents;
00058
00059
00060
00061
00062 public GetMailApp ()
00063 {
00064 super( appTitle );
00065
00066 setDefaultCloseOperation( WindowConstants.EXIT_ON_CLOSE );
00067
00068
00069
00070 addWindowListener( new java.awt.event.WindowAdapter () {
00071 public void windowClosing( java.awt.event.WindowEvent evt ) {
00072 formWindowClosing( evt );
00073 }
00074 });
00075
00076 buttonReceive = new JButton ();
00077 labelServer = new JLabel( "POP3 Server:" );
00078 fieldServer = new JTextField ();
00079 labelUsername = new JLabel( "Username:" );
00080 fieldUsername = new JTextField ();
00081 labelPassword = new JLabel( "Password:" );
00082 fieldPassword = new JTextField ();
00083 showContents = new JCheckBox( "Contents" );
00084
00085 messageContents = new JEditorPane ();
00086 messageContents.setEditable( false );
00087
00088 messageScrollPane = new JScrollPane ();
00089 messageScrollPane.setViewportView( messageContents );
00090
00091 buttonReceive.setText( "Receive" );
00092 buttonReceive.addActionListener( this );
00093
00094 showContents.setSelected( false );
00095
00096
00097
00098 Font btnFont = new Font( Font.SANS_SERIF, Font.BOLD, 12 );
00099 Font textFont = new Font( Font.SANS_SERIF, Font.PLAIN, 12 );
00100 Font monoFont = new Font( Font.MONOSPACED, Font.PLAIN, 14 );
00101
00102 buttonReceive.setFont( btnFont );
00103 labelServer.setFont( textFont );
00104 labelUsername.setFont( textFont );
00105 labelPassword.setFont( textFont );
00106 fieldServer.setFont( textFont );
00107 fieldUsername.setFont( textFont );
00108 fieldPassword.setFont( textFont );
00109 messageContents.setFont( monoFont );
00110 messageContents.setBackground( new Color( 255, 255, 240 ) );
00111
00112
00113
00114 JPanel authenticationPane = new JPanel ();
00115 authenticationPane.setBorder( new MetalBorders.Flush3DBorder() );
00116
00117
00118
00119
00120
00121
00122
00123
00124 GroupLayout layout = new GroupLayout( getContentPane () );
00125 getContentPane().setLayout( layout );
00126 layout.setAutoCreateContainerGaps( true );
00127 layout.setAutoCreateGaps( true );
00128
00129 layout.setHorizontalGroup
00130 (
00131 layout
00132 .createParallelGroup( Alignment.LEADING )
00133 .addGroup
00134 (
00135 layout
00136 .createSequentialGroup ()
00137 .addGroup
00138 (
00139 layout
00140 .createParallelGroup( Alignment.LEADING )
00141 .addGroup
00142 (
00143 Alignment.TRAILING,
00144 layout
00145 .createSequentialGroup ()
00146 .addComponent( labelServer )
00147 .addGap( 5 )
00148 .addComponent( fieldServer, 120, 120, 2000 )
00149 .addPreferredGap( LayoutStyle.ComponentPlacement.RELATED )
00150 .addComponent( labelUsername )
00151 .addGap( 5 )
00152 .addComponent( fieldUsername )
00153 .addPreferredGap( LayoutStyle.ComponentPlacement.RELATED )
00154 .addComponent( labelPassword )
00155 .addGap( 5 )
00156 .addComponent( fieldPassword )
00157 .addGap( 25 )
00158 .addComponent( buttonReceive )
00159 .addGap( 5 )
00160 .addComponent( showContents )
00161 )
00162 .addComponent( messageScrollPane )
00163 )
00164 )
00165 );
00166
00167 layout.setVerticalGroup
00168 (
00169 layout
00170 .createParallelGroup( Alignment.LEADING )
00171 .addGroup
00172 (
00173 layout
00174 .createSequentialGroup ()
00175 .addGroup
00176 (
00177 layout
00178 .createParallelGroup( Alignment.CENTER )
00179 .addComponent( labelServer )
00180 .addComponent( fieldServer, Alignment.CENTER, 25, 25, 25 )
00181 .addComponent( labelUsername )
00182 .addComponent( fieldUsername, Alignment.CENTER, 25, 25, 25 )
00183 .addComponent( labelPassword )
00184 .addComponent( fieldPassword, Alignment.CENTER, 25, 25, 25 )
00185 .addComponent( buttonReceive, Alignment.CENTER, 25, 25, 25 )
00186 .addComponent( showContents )
00187 )
00188 .addPreferredGap( LayoutStyle.ComponentPlacement.UNRELATED )
00189 .addComponent( messageScrollPane )
00190 )
00191 );
00192
00193 pack();
00194
00195
00196
00197
00198
00199 Dimension win = new Dimension( 1024, 600 );
00200 Dimension scsz = Toolkit.getDefaultToolkit().getScreenSize();
00201 win.width = Math.min( win.width, scsz.width );
00202 win.height = Math.min( win.height, scsz.height - 40 );
00203 setSize( win );
00204 setMinimumSize( new Dimension( 700, 500 ) );
00205
00206
00207
00208 setLocation( ( scsz.width - win.width )/2, ( scsz.height - 40 - win.height )/2 );
00209
00210
00211
00212 messageContents.setForeground( Color.BLUE );
00213 messageContents.setText( "\n"
00214 + " To get messages from POP3 server:\n\n"
00215 + " 1) Enter server's hostname or IP address\n"
00216 + " 2) Enter your credentials\n"
00217 + " 3) Click 'Receive'.\n\n"
00218 + " By default, messages' contents is not displayed.\n"
00219 + " To display the contents, turn on the 'Contents' check-box.\n"
00220 );
00221
00222
00223
00224 fieldServer.requestFocus ();
00225 }
00226
00227
00228
00229
00230
00231
00232 private void formWindowClosing( WindowEvent evt )
00233 {
00234 System.exit( 0 );
00235 }
00236
00237
00238
00239
00240 public void actionPerformed( ActionEvent evt )
00241 {
00242 if ( fieldServer.getText().isEmpty () || fieldUsername.getText().isEmpty () ) {
00243 return;
00244 }
00245
00246 messageContents.setContentType( "text/html" );
00247 messageContents.setText(
00248 "<html><head></head><body><h3>Receiving...</h3></body></html>" );
00249 buttonReceive.setEnabled( false );
00250
00251 new MessageStore (
00252 this,
00253 fieldServer.getText (),
00254 fieldUsername.getText (),
00255 fieldPassword.getText (),
00256 showContents.isSelected ()
00257 );
00258 }
00259
00260
00261
00262
00263
00264 public void onGetMessagesCompleted( StringBuffer outs )
00265 {
00266 final String str = outs.toString ();
00267
00268 SwingUtilities.invokeLater( new Runnable () {
00269 public void run () {
00270 messageContents.setContentType( "text/html" );
00271 messageContents.setText( str );
00272 buttonReceive.setEnabled( true );
00273 }
00274 } );
00275 }
00276
00277
00278
00279
00280
00281
00282 public static void main( String args[] )
00283 {
00284 java.awt.EventQueue.invokeLater(
00285 new Runnable() {
00286 public void run() {
00287 new GetMailApp ().setVisible( true );
00288 }
00289 }
00290 );
00291 }
00292 }
00293
00294
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318
00319
00320
00321
00322
00323
00324
00325
00326
00327
00328
00329
00330
00331
00332
00333
00334
00335
00336
00337
00338
00339
00340
00341
00342
00343
00344
00345