| SimpleClient |
| ------------ |
| |
| Notes: |
| ====== |
| |
| This should not be taken as a demo of how to use the Swing API, but |
| rather a very simple graphical mail client. It shows how viewers can |
| be used to display the content from mail messages. It also (like the |
| other demos) shows how to retrieve Folders from a Store, Messages |
| from a Folder, and content from Messages. |
| |
| |
| To run the demo: |
| ================ |
| |
| 1. If you're using JDK 1.1.x, download the latest version of the JFC |
| (Swing) APIs from http://java.sun.com/products/jfc/download.html. |
| The SimpleClient uses at least version 1.1 of Swing. |
| |
| If you're using JDK 1.2 (J2SE 1.2) or newer, Swing is included |
| and no separate download is necessary. |
| |
| We *strongly* encourage you to use the latest version of J2SE, |
| which you can download from http://java.sun.com/j2se/. |
| |
| 2. Set your CLASSPATH to include the "mail.jar", "activation.jar", |
| and (if you're using JDK 1.1.x and downloaded Swing separately) |
| "swingall.jar", and the current directory. For example: |
| |
| For JDK 1.1 on UNIX: |
| |
| export CLASSPATH=/u/me/download/mail.jar:/u/me/download/activation.jar:/u/me/download/swingall.jar:. |
| |
| For JDK 1.2 and newer on UNIX: |
| |
| export CLASSPATH=/u/me/download/mail.jar:/u/me/download/activation.jar:. |
| |
| 3. Go to the demo/client directory |
| |
| 4. Compile all the files using your Java compiler. For example: |
| |
| javac *.java |
| |
| 5. Run the demo. For example: |
| |
| java SimpleClient -L imap://username:password@hostname/ |
| |
| Note that SimpleClient expects to read the "simple.mailcap" |
| file from the current directory. The simple.mailcap file |
| contains configuration information about viewers needed by |
| the SimpleClient demo program. |
| |
| |
| |
| Overview of the Classes |
| ======================= |
| |
| Main Classes: |
| |
| SimpleClient = contains main(). |
| Uses the parameters to the application to |
| locate the correct Store. e.g. |
| |
| SimpleClient -L imap://cotton:secret@snow-goon/ |
| |
| It will create the main frame and |
| creates a tree. The tree uses the |
| StoreTreeNodes and FolderTreeNodes. |
| |
| StoreTreeNode = subclass of Swing's DefaultMutableTreeNode. |
| This class shows how to get Folders from |
| the Store. |
| |
| FolderTreeNode = subclass of Swing's DefaultMutableTreeNode. |
| If the folder has messages, it will create |
| a FolderViewer. Otherwise it will add the |
| subfolders to the tree. |
| |
| SimpleAuthenticator = subclass of javax.mail.Authenticator. If |
| the Store is missing the username or the |
| password, this authenticator will be used. |
| It displays a dialog requesting the |
| information from the user. |
| |
| |
| Viewing Folders: |
| |
| FolderViewer = Uses a Swing Table to display all of the |
| Message in a Folder. The "model" of the |
| data for this Table is a FolderModel which |
| knows how to get displayable information |
| from a Message. |
| |
| JAF Viewers: |
| |
| MessageViewer = Uses the content of the DataHandler. The |
| content will be a javax.mail.Message |
| object. Displays the headers and then |
| uses the JAF to find another viewer for |
| the content type of the Message. (either |
| multipart/mixed, image/gif, or text/plain) |
| |
| MultipartViewer = Uses the content of the DataHandler. The |
| content will be a javax.mail.Multipart |
| object. Uses the JAF to find another |
| viewer for the first BodyPart's content. |
| Also puts Buttons (as "attachments") for |
| the rest of the BodyParts. When the |
| Button are pressed, it uses the JAF to |
| find a viewer for the BodyPart's content, |
| and displays it in a separate frame (using |
| ComponentFrame). |
| |
| TextViewer = Uses the content of the DataHandler. The |
| content will be either a java.lang.String |
| object, or a java.io.InputStream object. |
| Creates a TextArea and sets the text using |
| the String or InputStream. |
| |
| Support Classes: |
| |
| ComponentFrame = support class which takes a java.awt.Component |
| and displays it in a Frame. |