Source of Main.java


  1: 
  2: package mail.gui; 
  3: 
  4: import java.awt.Dimension;
  5: import java.awt.Toolkit;
  6: import java.util.*;
  7: import javax.swing.*; 
  8: import javax.swing.tree.*; 
  9: import javax.swing.event.*; 
 10: 
 11: import mail.*;
 12: import adapter.*;
 13: 
 14: public class Main { 
 15: 
 16:   public static final int INITIAL_FRAME_WIDTH = 800;
 17:   public static final int INITIAL_FRAME_HEIGHT = 400;
 18: 
 19:   public static void main(String[] args) {     
 20:     MailFolder inboxFolder = mail.Main.buildInbox();
 21:     JTree tree = new JTree(buildMailFolderTree(inboxFolder));
 22:     JSplitPane splitPane = new JSplitPane(); 
 23:     splitPane.setLeftComponent(new JScrollPane(tree));
 24:     splitPane.setRightComponent(new JPanel());
 25:     tree.addTreeSelectionListener(new MailFolderTreeSelectionListener(tree, splitPane));
 26: 
 27:     JFrame frame = new JFrame("Mails");
 28:     frame.setContentPane(splitPane); 
 29:     frame.setSize(INITIAL_FRAME_WIDTH, INITIAL_FRAME_HEIGHT);
 30:     Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
 31:     frame.setLocation(screenSize.width / 2 - INITIAL_FRAME_WIDTH / 2, 
 32:                       screenSize.height / 2 - INITIAL_FRAME_HEIGHT / 2);    
 33:     frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
 34:     frame.setVisible(true); 
 35:   }
 36: 
 37:   static class MailFolderTreeSelectionListener implements TreeSelectionListener {
 38: 
 39:     MailFolderTreeSelectionListener(JTree tree, JSplitPane splitPane) { 
 40:       this.tree = tree;
 41:       this.splitPane = splitPane; 
 42:     }
 43: 
 44:     public void valueChanged(TreeSelectionEvent ev) {
 45:       DefaultMutableTreeNode node = 
 46:         (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
 47:       if (node != null) {
 48:         Object item = node.getUserObject();
 49:         if (item instanceof MailFolder) {
 50:           splitPane.setRightComponent(new JScrollPane(buildTable((MailFolder) item)));
 51:         }
 52:       }
 53:     }
 54: 
 55:     JTree tree;
 56:     JSplitPane splitPane;
 57:   }
 58: 
 59:   protected static DefaultMutableTreeNode buildMailFolderTree(MailFolder folder) { 
 60:     if (folder != null) { 
 61:       DefaultMutableTreeNode root = new DefaultMutableTreeNode(folder); 
 62:       List subfolders = folder.getSubFolders(); 
 63:       Iterator iterator = subfolders.iterator(); 
 64:       while (iterator.hasNext()) { 
 65:         Object item = iterator.next(); 
 66:         if (item instanceof MailFolder) { 
 67:           root.add(buildMailFolderTree((MailFolder) item)); 
 68:         }
 69:       }
 70:       return root; 
 71:     }
 72:     return null; 
 73:   }
 74: 
 75:   protected static Table buildTable(MailFolder folder) { 
 76:     if (folder != null) { 
 77:       List mails = folder.getMails(); 
 78:       List entries = new ArrayList(mails.size()); 
 79:       for (int i = 0; i < mails.size(); i++) { 
 80:         entries.add(new MailEntry((Mail) mails.get(i))); 
 81:       }
 82:       return new Table(entries); 
 83:     }
 84:     return null; 
 85:   }
 86: 
 87: }