⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 messagepanel.java

📁 一个用java写的mail.里面的代码值得我们去研究!学习。
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/*** $Id: MessagePanel.java,v 1.9 2001/05/07 12:37:22 kunugi Exp $**** Copyright (c) 2000-2001 Jeff Gay** on behalf of ICEMail.org <http://www.icemail.org>** Copyright (c) 1998-2000 by Timothy Gerard Endres** ** This program is free software.** ** You may redistribute it and/or modify it under the terms of the GNU** General Public License as published by the Free Software Foundation.** Version 2 of the license should be included with this distribution in** the file LICENSE, as well as License.html. If the license is not** included with this distribution, you may find a copy at the FSF web** site at 'www.gnu.org' or 'www.fsf.org', or you may write to the** Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139 USA.**** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND,** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR** REDISTRIBUTION OF THIS SOFTWARE. */package org.icemail.mail;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Component;import java.awt.Dimension;import java.awt.FileDialog;import java.awt.Frame;import java.awt.Rectangle;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.InputEvent;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.io.File;import java.io.FileOutputStream;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Enumeration;import java.util.Vector;import javax.mail.Flags;import javax.mail.Folder;import javax.mail.Message;import javax.mail.MessagingException;import javax.mail.internet.MimeMessage;import javax.swing.Action;import javax.swing.JButton;import javax.swing.JCheckBoxMenuItem;import javax.swing.JDialog;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JProgressBar;import javax.swing.JScrollPane;import javax.swing.JSplitPane;import javax.swing.JTable;import javax.swing.JToolBar;import javax.swing.JViewport;import javax.swing.ListSelectionModel;import javax.swing.ScrollPaneConstants;import javax.swing.SwingConstants;import javax.swing.event.ListSelectionEvent;import javax.swing.event.ListSelectionListener;import javax.swing.table.DefaultTableCellRenderer;import javax.swing.table.JTableHeader;import javax.swing.table.TableColumn;import javax.swing.table.TableColumnModel;import org.icemail.Package; import org.icemail.util.AWTUtilities; import org.icemail.util.ComponentFactory; import org.icemail.util.UserProperties;/** * Class MessagePanel */public class MessagePanel  extends JPanel  implements ActionDistributor{  static private final int Debug_ = Package.DEBUG ? Package.getLevel( "MessagePanel" ) : 0;  static private Color     NewMsgColor_ = Color.red;  static private Color     OldMsgColor_ = Color.black;  /**   * This is the index of the currently displayed message.   * This prevents us from re-displaying the current message   * which wastes bandwidth.   */  private int               currentIndex_ = -1;  private QuickViewer       viewer_ = new QuickViewer();  private JTable            messageTable_ = null;  private JScrollPane       msgScroller = null;  private JScrollPane       tblScroller = null;  private StatusBar         statusBar_;  private JSplitPane        splitPane = null;  private FolderTableModel  model_ = null;  private Folder            folder_ = null;  private String[]          colFields_;  private int[]             colWidths_;  private IActionListener   listener_ = new IActionListener();  public  MessagePanel( StatusBar statusbar ) {    super();        statusBar_ = statusbar;    loadTableColumns();    establishContents();  }  public void  loadLayoutProperties() {    int loc = Configuration.getDividerLocation( Configuration.P_MSG_PANEL_DIVIDER, 75 );    this.splitPane.setDividerLocation( loc );    viewer_.loadLayoutProperties();  }  public void  saveLayoutProperties() {    saveTableColumns();    Configuration.saveDividerLocation( Configuration.P_MSG_PANEL_DIVIDER,                                       this.splitPane.getDividerLocation() );    viewer_.saveLayoutProperties();  }  public Action  getSignedAction() {    return viewer_.getSignedAction();  }  public Action  getEnvelopedAction() {    return viewer_.getEnvelopedAction();  }  public void  setFolder( Folder folder ) {    if ( folder_ == folder ) {      return;    }        try {    // close the previous folder if necessary      if ( folder_ != null ) {        MailUtilities.setStoreConnected( folder_.getStore() );        synchronized ( folder_ ) {          if ( folder_.isOpen() ) {            folder_.close( false );          }        }      }      folder_ = folder;      currentIndex_ = -1;      if ( folder_ == null ) {        model_.setFolder( folder_ );        viewer_.setMessage( null );        messageTable_.getSelectionModel().clearSelection();        statusBar_.showStatusMessage( "" );        statusBar_.setCurrentMessageNum( 0 );        statusBar_.setNumFolderMessages( 0 );        statusBar_.setCurrentFolderName( "" );      } else {        MailUtilities.setFolderOpenAndReady( folder_, Folder.READ_WRITE );        model_.setFolder( folder_ );        messageTable_.getSelectionModel().clearSelection();        viewer_.setMessage( null );        Object[] xargs = new Object[1];        xargs[0] = folder_.getName();        statusBar_.showStatusMessage(            ICEMail.getBundle().getFormatString( "MessagePanel.FolderOpen", xargs ) );        statusBar_.setCurrentMessageNum( 1 );        statusBar_.setNumFolderMessages( folder_.getMessageCount() );        statusBar_.setCurrentFolderName( folder_.getName() );        showTableRow( 0 );        if ( messageTable_.getRowCount() > 0 ) {          messageTable_.setRowSelectionInterval( 0, 0 );        }      }    } catch ( MessagingException ex ) {      folder_ = null;      //ex.printStackTrace( System.err );      //statusBar_.showStatusMessage      //  ( "Error opening folder '" + folder_.getName() + "', "      //    + ex.getMessage() );      Object[] xargs = new Object[2];      xargs[0] = folder_.getName();      xargs[1] = ex.getMessage();      ComponentFactory.showDialog( ICEMail.getBundle(), "MessagePanel.OpenError",                                   0, JOptionPane.ERROR_MESSAGE, xargs );    }  }  /**   * Distribute events from other sources to action listeners and distributors.   * <p>   * Implements ActionDistributor.distribute()   *   * @param event the event to distribute   */  public void  distribute( ActionEvent event ) {    if ( Package.DEBUG && Package.isTraceable( "MessagePanel" ) ) {      System.out.println( "MessagePanel.distribute(ae): " + event );    }    listener_.actionPerformed( event );  }//............................................................  private void  expungeDeletedMessages() {    if ( folder_ == null )      return;    Object[] xargs = new Object[1];    xargs[0] = folder_.getName();    String msg = ICEMail.getBundle().getFormatString( "MessagePanel.Expunging", xargs );    String title = ICEMail.getBundle().getString( "MessagePanel.Expunging.title" );    DialogRunner runner = new DialogRunner( new IExpungeRunner( folder_ ),                                            (Frame)getTopLevelAncestor(), title, msg );    runner.start();  }  private void  showTableRow( int row ) {    Dimension sz = messageTable_.getSize();    Dimension is = messageTable_.getIntercellSpacing();    JViewport port = (JViewport) messageTable_.getParent();    Rectangle portRect = port.getViewRect();    int height = messageTable_.getScrollableUnitIncrement( portRect,                                                           SwingConstants.VERTICAL, 1 );    int top = height * row;    Rectangle aRect = new Rectangle( 0, top, sz.width, height );    messageTable_.scrollRectToVisible( aRect );  }  private void  deleteSelectedMessages() {    if ( folder_ == null )      return;        synchronized( model_ ) {      MainFrame.getInstance().setWaitCursor();      ListSelectionModel selModel = messageTable_.getSelectionModel();      int iMin = selModel.getMinSelectionIndex();      int iMax = selModel.getMaxSelectionIndex();      int[] rows = messageTable_.getSelectedRows();      if ( rows.length < 1 )        return;      Message[] msgs = new Message[ rows.length ];      for ( int idx = 0 ; idx < rows.length ; ++idx ) {        msgs[ idx ] = model_.getMessage( rows[ idx ] );      }      try {        MailUtilities.setFolderOpenAndReady( folder_, Folder.READ_WRITE );        for ( int fi = 0 ; fi < msgs.length ; ++fi ) {          msgs[fi].setFlag( Flags.Flag.DELETED, ! msgs[fi].isSet( Flags.Flag.DELETED ) );        }        model_.flushCache( rows );        model_.fireRowsUpdated( rows );      } catch ( MessagingException ex ) {        Object[] xargs = new Object[1];        xargs[0] = ex.getMessage();        ComponentFactory.showDialog( ICEMail.getBundle(), "MessagePanel.MarkingError",                                     0, JOptionPane.ERROR_MESSAGE, xargs );      }      MainFrame.getInstance().resetCursor();      if ( rows.length == 1 ) {        int newSelRow = rows[0] + 1;        int numRows = messageTable_.getRowCount();        if ( newSelRow >= numRows )          newSelRow = numRows - 1;        messageTable_.setRowSelectionInterval( newSelRow, newSelRow );                showTableRow( newSelRow );      }    }  }  private void  moveSelectedMessage( int incr ) {    if ( incr == 0 )      return;    synchronized( model_ ) {      MainFrame.getInstance().setWaitCursor();      ListSelectionModel selModel = messageTable_.getSelectionModel();      int[] rows = null;      int   newSelRow = -1;      int   numRows = messageTable_.getRowCount();      if ( numRows == 0 ) {        newSelRow = -1;      } else if ( numRows == 1 ) {        newSelRow = 0;      } else {        rows = messageTable_.getSelectedRows();        if ( rows.length < 1 ) {          newSelRow = 0;        } else if ( incr < 0 ) {          newSelRow = rows[0] + incr;        } else {          newSelRow = rows[ rows.length-1 ] + incr;        }        if ( newSelRow >= numRows ) {          newSelRow = numRows - 1;        } else if ( newSelRow < 0 ) {          newSelRow = 0;        }      }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -