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

📄 foldertreepanel.java

📁 一个用java写的mail.里面的代码值得我们去研究!学习。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*** $Id: FolderTreePanel.java,v 1.6 2001/05/07 12:37:21 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.Dimension;import java.awt.Frame;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import javax.mail.Folder;import javax.mail.MessagingException;import javax.mail.NoSuchProviderException;import javax.mail.Session;import javax.mail.Store;import javax.mail.URLName;import javax.swing.JDialog;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JPopupMenu;import javax.swing.JProgressBar;import javax.swing.JScrollPane;import javax.swing.JTree;import javax.swing.tree.DefaultMutableTreeNode;import javax.swing.tree.DefaultTreeModel;import javax.swing.tree.TreeModel;import javax.swing.tree.TreeNode;import javax.swing.tree.TreePath;import javax.swing.event.TreeSelectionEvent;import javax.swing.event.TreeSelectionListener;import org.icemail.Package; import org.icemail.util.ComponentFactory; import org.icemail.util.UserProperties; /** * Class FolderTreePanel */public class FolderTreePanel  extends JPanel  implements ActionDistributor{  private static final int Debug_ = Package.DEBUG ? Package.getLevel( "FolderTreePanel" ) : 0;  private static FolderTreePanel Instance_ = null;  private DefaultMutableTreeNode rootNode_;  private JTree                  tree_;  private MessagePanel           messagePanel_;  private JPopupMenu             folderPopup_;  private JPopupMenu             storePopup_;  private ActionListener         actionListener_ = new IActionListener();  /**   * Default constructor, private to disable multiple instantiations.   */  private  FolderTreePanel() {    super( true );    String nodeTitle = ICEMail.getBundle().getString( "FolderTree.title.stores" );    rootNode_ = new RootTreeNode( nodeTitle );    TreeModel xtreeModel = new DefaultTreeModel( rootNode_ );    tree_ = new JTree( xtreeModel );    folderPopup_ = ComponentFactory.getPopupMenuAndItems( ICEMail.getBundle(),                                                          "FolderTree.Folder",                                                          actionListener_ );    storePopup_ = ComponentFactory.getPopupMenuAndItems( ICEMail.getBundle(),                                                         "FolderTree.Store",                                                         actionListener_ );    tree_.addMouseListener( new IMouseAdapter() );    tree_.setCellRenderer( new FolderTreeCellRenderer() );    tree_.addTreeSelectionListener( new ITreeSelectionListener() );    JScrollPane xscrollPane = new JScrollPane();    xscrollPane.setMinimumSize( new Dimension(5, 25) );    xscrollPane.setPreferredSize( new Dimension(100, 150) );    xscrollPane.getViewport().add( tree_ );    setLayout( new BorderLayout() );    add( xscrollPane );  }  /**   * Get the SINGLE instance of the panel, creating it if necessary.   *   * @return the SINGLE instance of the panel   */  public static synchronized FolderTreePanel  getInstance() {    if ( FolderTreePanel.Instance_ == null ) {      FolderTreePanel.Instance_ = new FolderTreePanel();    }    return FolderTreePanel.Instance_;  }  public void  distribute( ActionEvent event ) {    if ( Package.DEBUG && Package.isTraceable( "FolderTreePanel" ) ) {      System.out.println( "FolderTreePanel.distribute(ae): " + event );    }    actionListener_.actionPerformed( event );  }  public ActionListener  getActionListener() {    return actionListener_;  }  public DefaultMutableTreeNode  getRootNode() {    return rootNode_;  }  public void  setMessagePanel( MessagePanel messagePanel ) {    messagePanel_ = messagePanel;    loadRootStores();  }  public Store  getStore( String name ) {    int numRoot = rootNode_.getChildCount();    for ( int i = 0 ; i < numRoot ; ++i ) {      StoreTreeNode node = (StoreTreeNode)rootNode_.getChildAt( i );      if ( node != null && name.equals( node.getName() ) ) {        return node.getStore();      }    }    return null;  }  public void  loadRootStores() {    if ( messagePanel_ != null ) {      messagePanel_.setFolder( null );    }    String[] nameList =      UserProperties.getStringArray( Configuration.P_STORE_LIST, null );    if ( nameList == null )      return;    String[] storeList = new String[ nameList.length ];    String[] spaceList = new String[ nameList.length ];    for ( int i = 0 ; i < nameList.length ; ++i ) {      storeList[i] =        UserProperties.getProperty( Configuration.PP_STORE_URL + nameList[i], null );      spaceList[i] =        UserProperties.getProperty( Configuration.PP_STORE_NMSPC + nameList[i], null );    }    setRootStores( nameList, storeList, spaceList );  }  private void  setRootStores( String[] storeNames, String[] storeList, String[] nameSpaceList ) {    try {      Session session = ICEMail.getDefaultSession();      String nodeTitle = ICEMail.getBundle().getString( "FolderTree.title.stores" );      rootNode_ = new RootTreeNode( nodeTitle );    // create a node for each store we have      for ( int i = 0 ; i < storeList.length ; ++i ) {        if ( storeList[i] == null )          continue;        URLName urln = new URLName( storeList[i] );        Store store = session.getStore( urln );                StoreTreeNode storenode =          new StoreTreeNode( storeNames[i], store, nameSpaceList[i] );        rootNode_.add( storenode );      }    } catch ( NoSuchProviderException ex ) {      System.err.println( "FolderTreePanel.setRootFolders: NoSuchProviderException: " +                          ex.getMessage() );    }    TreeModel xtreeModel = new DefaultTreeModel( rootNode_ );    tree_.setModel( xtreeModel );    tree_.expandRow( 0 );  }  private void  openSelectedNode() {    DefaultMutableTreeNode node = getSelectedNode();    if ( node instanceof StoreTreeNode ) {      tree_.expandPath( new TreePath( node.getPath() ) );    } else if ( node instanceof FolderTreeNode ) {      openSelectedFolder();    }  }  private FolderTreeNode  getSelectedFolder() {    DefaultMutableTreeNode node = getSelectedNode();    if ( node instanceof FolderTreeNode )      return (FolderTreeNode) node;    else      return null;  }  private DefaultMutableTreeNode  getSelectedNode() {    DefaultMutableTreeNode result = null;    TreePath path = tree_.getSelectionPath();    if ( path != null ) {      Object obj = path.getLastPathComponent();      result = (DefaultMutableTreeNode) obj;    }    return result;  }  private void  addNewStore() {    OpenStoreDialog dlg = new OpenStoreDialog( (Frame)getTopLevelAncestor() );    dlg.show();    if ( dlg.getStoreURL() != null && dlg.getStoreURL().length() > 0 &&         dlg.getStoreName() != null && dlg.getStoreName().length() > 0 ) {      try {        Session session = ICEMail.getDefaultSession();        URLName urln = new URLName( dlg.getStoreURL() );        Store store = session.getStore( urln );        StoreTreeNode newNode =          new StoreTreeNode( dlg.getStoreName(), store, dlg.getNameSpace() );        int tsz = rootNode_.getChildCount();        rootNode_.insert( newNode, tsz );        DefaultTreeModel model = (DefaultTreeModel) tree_.getModel();                int[] indices = { tsz };        model.nodesWereInserted( rootNode_, indices );        tree_.expandRow( 0 );        tree_.invalidate();        tree_.validate();      } catch ( NoSuchProviderException ex ) {      // UNDONE - notify use with JOptionPane...        System.err.println( "FolderTreePanel.setRootFolders: NoSuchProviderException: " +

⌨️ 快捷键说明

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