📄 foldertreepanel.java
字号:
ex.getMessage() ); } } else { // UNDONE - notify use with JOptionPane... } } private void createNewFolder() { TreePath path = tree_.getSelectionPath(); if ( path == null ) { return; } Folder folder = null; DefaultMutableTreeNode root = null; Object obj = path.getLastPathComponent(); if ( obj instanceof StoreTreeNode ) { StoreTreeNode node = (StoreTreeNode) obj; folder = node.getDefaultFolder(); root = node; } else if ( obj instanceof FolderTreeNode ) { FolderTreeNode node = (FolderTreeNode) obj; folder = node.getFolder(); root = node; } if ( folder != null ) { NewFolderDialog dlg = new NewFolderDialog( (Frame)getTopLevelAncestor(), folder.getFullName() ); dlg.show(); String xfolderName = dlg.folderName(); if ( xfolderName != null && xfolderName.length() > 0 ) { try { MailUtilities.setStoreConnected( folder.getStore() ); Folder newFolder = folder.getFolder( xfolderName ); if ( newFolder.exists() ) { Object[] xargs = new Object[2]; xargs[0] = xfolderName; xargs[1] = folder.getFullName(); ComponentFactory.showDialog( ICEMail.getBundle(), "FolderTree.FolderExists", 0, JOptionPane.ERROR_MESSAGE, xargs ); } else { int flags = 0; if ( dlg.holdsFolders() ) flags += Folder.HOLDS_FOLDERS; if ( dlg.holdsMessages() ) flags += Folder.HOLDS_MESSAGES; boolean ok = newFolder.create( flags ); if ( ok ) { FolderTreeNode newNode = new FolderTreeNode( newFolder ); int ri; int indice = 0; int rsz = root.getChildCount(); for ( ri = 1 ; ri < rsz ; ++ri ) { String name = null; TreeNode n = root.getChildAt( ri ); if ( n instanceof FolderTreeNode ) { name = ((FolderTreeNode) n).getFolder().getName(); } else if ( n instanceof StoreTreeNode ) { name = ((StoreTreeNode) n).getName(); } if ( name != null && name.compareTo( newFolder.getName() ) > 0 ) { root.insert( newNode, ri ); indice = ri; break; } } if ( ri >= rsz ) { indice = rsz; root.insert( newNode, rsz ); } DefaultTreeModel model = (DefaultTreeModel)tree_.getModel(); int[] indices = { indice }; model.nodesWereInserted( root, indices ); tree_.invalidate(); tree_.validate(); } else { Object[] xargs = new Object[1]; xargs[0] = xfolderName; ComponentFactory.showDialog( ICEMail.getBundle(), "FolderTree.CreateFailed", 0, JOptionPane.ERROR_MESSAGE, xargs ); } } } catch ( MessagingException ex ) { Object[] xargs = new Object[1]; xargs[0] = xfolderName; xargs[1] = ex.getMessage(); ComponentFactory.showDialog( ICEMail.getBundle(), "FolderTree.StoreFailed", 0, JOptionPane.ERROR_MESSAGE, xargs ); } } } } private void openSelectedFolder() { FolderTreeNode node = getSelectedFolder(); if ( node == null ) return; Folder folder = node.getFolder(); String msg = ICEMail.getBundle().getString( "FolderTree.Opening.text" ); DialogRunner runner = new DialogRunner( new OpenFolderRunner( folder ), (Frame)getTopLevelAncestor(), msg, msg ); runner.start(); }//............................................................ private class IActionListener implements ActionListener { /** * Invoked when an action occurs. * <p> * Implementation of java.awt.event.ActionListener.actionPerformed() * * @param event the action event that occured */ public void actionPerformed( ActionEvent event ) { String command = event.getActionCommand(); if ( command.equals( "OPEN" ) ) { openSelectedNode(); } else if ( command.equals( "PROPS" ) ) { // UNDONE } else if ( command.equals( "CREATEFOLDER" ) ) { createNewFolder(); } else if ( command.equals( "ADDSTORE" ) ) { addNewStore(); } else if ( command.equals( "RELOAD" ) ) { loadRootStores(); } else if ( command.equals( "EXPAND" ) ) { TreePath path = tree_.getSelectionPath(); if ( path != null ) { tree_.expandPath( path ); } } else if ( command.equals( "COLLAPSE" ) ) { TreePath path = tree_.getSelectionPath(); if ( path != null ) { tree_.collapsePath( path ); } } else if ( command.equals( "MOVEMSG" ) ) { FolderTreeNode node = getSelectedFolder(); if ( node != null ) { messagePanel_.copySelectedMessages( node.getFolder(), true ); } } else if ( command.equals( "COPYMSG" ) ) { FolderTreeNode node = getSelectedFolder(); if ( node != null ) { messagePanel_.copySelectedMessages( node.getFolder(), false ); } } } }//............................................................ private class ITreeSelectionListener implements TreeSelectionListener { public void valueChanged( TreeSelectionEvent event ) { } }//............................................................ private class IMouseAdapter extends MouseAdapter { private boolean isPopupClick = false; public IMouseAdapter() { super(); } public void mousePressed( MouseEvent event ) { isPopupClick = false; if ( event.isPopupTrigger() ) { int selRow = tree_.getRowForLocation( event.getX(), event.getY() ); if ( selRow != -1 ) { tree_.setSelectionRow( selRow ); } isPopupClick = true; DefaultMutableTreeNode node = getSelectedNode(); JPopupMenu popup = ( node instanceof FolderTreeNode ? folderPopup_ : storePopup_ ); popup.show( tree_, event.getX(), event.getY() ); } } public void mouseReleased( MouseEvent event ) { if ( isPopupClick ) return; if ( event.isPopupTrigger() ) { int selRow = tree_.getRowForLocation( event.getX(), event.getY() ); if ( selRow != -1 ) { tree_.setSelectionRow( selRow ); } isPopupClick = true; DefaultMutableTreeNode node = getSelectedNode(); JPopupMenu popup = ( node instanceof FolderTreeNode ? folderPopup_ : storePopup_ ); popup.show( tree_, event.getX(), event.getY() ); } } public void mouseClicked( MouseEvent event ) { if ( isPopupClick ) { isPopupClick = false; return; } if ( event.getClickCount() == 2 ) { processDoubleClick(); } } private void processDoubleClick() { openSelectedFolder(); } }//............................................................ private class OpenFolderRunner implements DialogRunnable { private Folder folder_; public OpenFolderRunner( Folder folder ) { folder_ = folder; } public void run( JDialog dialog, JProgressBar progress ) { dialog.show(); progress.setValue( 25 ); try { MailUtilities.setFolderOpenAndReady( folder_, Folder.READ_WRITE ); progress.setValue( 50 ); if ( ( folder_.getType() & Folder.HOLDS_MESSAGES ) != 0 ) { progress.setValue( 75 ); messagePanel_.setFolder( folder_ ); } progress.setValue( 100 ); } catch ( MessagingException ex ) { Object[] xargs = new Object[2]; xargs[0] = folder_.getName(); xargs[1] = ex.getMessage(); ComponentFactory.showDialog( ICEMail.getBundle(), "FolderTree.StoreFailed", 0, JOptionPane.ERROR_MESSAGE, xargs ); } dialog.dispose(); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -