Subversion Repositories javautils

Rev

Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
  3.  *
  4.  * Redistribution and use in source and binary forms, with or without
  5.  * modification, are permitted provided that the following conditions
  6.  * are met:
  7.  *
  8.  *   - Redistributions of source code must retain the above copyright
  9.  *     notice, this list of conditions and the following disclaimer.
  10.  *
  11.  *   - Redistributions in binary form must reproduce the above copyright
  12.  *     notice, this list of conditions and the following disclaimer in the
  13.  *     documentation and/or other materials provided with the distribution.
  14.  *
  15.  *   - Neither the name of Sun Microsystems nor the names of its
  16.  *     contributors may be used to endorse or promote products derived
  17.  *     from this software without specific prior written permission.
  18.  *
  19.  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
  20.  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
  21.  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  22.  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  23.  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  24.  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  25.  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  26.  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  27.  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  28.  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  29.  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  30.  */
  31.  
  32. import java.awt.*;
  33. import javax.mail.*;
  34. import javax.swing.*;
  35. import javax.swing.event.*;
  36. import javax.swing.table.*;
  37.  
  38. /**
  39.  * @author      Christopher Cotton
  40.  * @author      Bill Shannon
  41.  */
  42.  
  43. public class FolderViewer extends JPanel {
  44.  
  45.     FolderModel model = new FolderModel();
  46.     JScrollPane scrollpane;
  47.     JTable table;
  48.  
  49.     public FolderViewer() {
  50.         this(null);
  51.     }
  52.  
  53.     public FolderViewer(Folder what) {
  54.         super(new GridLayout(1,1));
  55.  
  56.         table = new JTable(model);
  57.         table.setShowGrid(false);
  58.  
  59.         scrollpane = new JScrollPane(table);
  60.  
  61.         // setup the folder we were given
  62.         setFolder(what);
  63.        
  64.         // find out what is pressed
  65.         table.getSelectionModel().addListSelectionListener(
  66.             new FolderPressed());
  67.         scrollpane.setPreferredSize(new Dimension(700, 300));
  68.         add(scrollpane);
  69.     }
  70.  
  71.     /**
  72.      * Change the current Folder for the Viewer
  73.      *
  74.      * @param what      the folder to be viewed
  75.      */
  76.     public void setFolder(Folder what) {
  77.         try {
  78.             table.getSelectionModel().clearSelection();
  79.             if (SimpleClient.mv != null)
  80.                 SimpleClient.mv.setMessage(null);
  81.             model.setFolder(what);
  82.             scrollpane.invalidate();
  83.             scrollpane.validate();
  84.         } catch (MessagingException me) {
  85.             me.printStackTrace();
  86.         }
  87.     }
  88.  
  89.     class FolderPressed implements ListSelectionListener {
  90.  
  91.         public void valueChanged(ListSelectionEvent e) {
  92.             if (model != null && !e.getValueIsAdjusting()) {
  93.                 ListSelectionModel lm = (ListSelectionModel) e.getSource();
  94.                 int which = lm.getMaxSelectionIndex();
  95.                 if (which != -1) {
  96.                     // get the message and display it
  97.                     Message msg = model.getMessage(which);
  98.                     SimpleClient.mv.setMessage(msg);
  99.                 }
  100.             }
  101.         }
  102.     }
  103. }
  104.