📄 messagepanel.java
字号:
MainFrame.getInstance().resetCursor(); if ( newSelRow != -1 ) { messageTable_.setRowSelectionInterval( newSelRow, newSelRow ); showTableRow( newSelRow ); } } } private int[] getSelectedRows() { int[] rows = messageTable_.getSelectedRows(); return rows; } private Message[] getSelectedMessages() { int[] rows = getSelectedRows(); if ( rows.length < 1 ) return new Message[0]; Message[] msgs = new Message[ rows.length ]; for ( int idx = 0 ; idx < rows.length ; ++idx ) { msgs[ idx ] = model_.getMessage( rows[ idx ] ); } return msgs; }// used by FolderTreePanel.java public void copySelectedMessages( Folder destFolder, boolean deleteMsgs ) { boolean closeDest = false; if ( folder_ == null || destFolder == null ) return; synchronized( model_ ) { MainFrame.getInstance().setWaitCursor(); Message[] msgs = getSelectedMessages(); if ( msgs.length < 1 ) return; Object[] xargs = new Object[1]; xargs[0] = destFolder.getName(); if ( deleteMsgs ) { statusBar_.showStatusMessage( ICEMail.getBundle().getFormatString( "MessagePanel.Moving", xargs ) ); } else { statusBar_.showStatusMessage( ICEMail.getBundle().getFormatString ( "MessagePanel.Copying", xargs ) ); } try { MailUtilities.setFolderOpenAndReady( folder_, Folder.READ_WRITE ); folder_.copyMessages( msgs, destFolder ); } catch ( MessagingException ex ) { xargs[0] = ex.getMessage(); ComponentFactory.showDialog( ICEMail.getBundle(), "MessagePanel.CopyingError", 0, JOptionPane.ERROR_MESSAGE, xargs ); deleteMsgs = false; } MainFrame.getInstance().resetCursor(); try { if ( deleteMsgs ) { folder_.setFlags( msgs, new Flags(Flags.Flag.DELETED), true ); int[] rows = getSelectedRows(); model_.flushCache( rows ); model_.fireRowsUpdated( rows ); 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 ); } } } catch ( MessagingException ex ) { xargs[0] = ex.getMessage(); ComponentFactory.showDialog( ICEMail.getBundle(), "MessagePanel.MarkingError", 0, JOptionPane.ERROR_MESSAGE, xargs ); } xargs[0] = destFolder.getName(); if ( deleteMsgs ) { statusBar_.showStatusMessage( ICEMail.getBundle().getFormatString ( "MessagePanel.Moved", xargs ) ); } else { statusBar_.showStatusMessage( ICEMail.getBundle().getFormatString ( "MessagePanel.Copied", xargs ) ); } } } private void printSelectedMessages() { if ( folder_ == null ) return; MainFrame.getInstance().setWaitCursor(); Message[] msgs = getSelectedMessages(); if ( msgs.length < 1 ) { return; } PrintMessageThread pThread = new PrintMessageThread( (Frame)getTopLevelAncestor(), msgs ); pThread.start(); MainFrame.getInstance().resetCursor(); } private void dumpSelectedMessages() { if ( folder_ == null ) return; MainFrame.getInstance().setWaitCursor(); Message[] msgs = getSelectedMessages(); if ( msgs.length < 1 ) return; MainFrame.getInstance().resetCursor(); int skipCount = 0; for ( int i = 0 ; i < msgs.length ; ++i ) { String title = ICEMail.getBundle().getString( "MessagePanel.Exporting.title" ); FileDialog dlg = new FileDialog( (Frame)getTopLevelAncestor(), title, FileDialog.SAVE ); dlg.show(); String filename = dlg.getFile(); String dirname = dlg.getDirectory(); if ( filename == null || dirname == null ) { break; } try { Message msg = msgs[i]; if ( msg instanceof MimeMessage ) { MimeMessage mimeMsg = (MimeMessage) msg; FileOutputStream out = new FileOutputStream( dirname + ( dirname.endsWith(File.separator) ? "" : File.separator ) + filename ); mimeMsg.writeTo( out ); out.close(); } else { ++skipCount; } } catch ( Exception ex ) { Object[] xargs = new Object[1]; xargs[0] = ex.getMessage(); ComponentFactory.showDialog( ICEMail.getBundle(), "MessagePanel.ExportError", 0, JOptionPane.ERROR_MESSAGE, xargs ); } } if ( skipCount > 0 ) { Object[] xargs = new Object[1]; xargs[0] = String.valueOf( skipCount ); ComponentFactory.showDialog( ICEMail.getBundle(), "MessagePanel.SkippedMsg", 0, JOptionPane.INFORMATION_MESSAGE, xargs ); } } private void showMessageProperties() { if ( folder_ == null ) return; MainFrame.getInstance().setWaitCursor(); Message[] msgs = getSelectedMessages(); if ( msgs.length < 1 ) return; MainFrame.getInstance().resetCursor(); try { JDialog dlg = new PropertiesDialog( null, msgs[0], true ); dlg.show(); } catch ( Exception ex ) { Object[] xargs = new Object[1]; xargs[0] = ex.getMessage(); ComponentFactory.showDialog( ICEMail.getBundle(), "MessagePanel.PropError", 0, JOptionPane.ERROR_MESSAGE, xargs ); } } private void establishContents() { // create our folder model model_ = new FolderTableModel( colFields_ ); // TableSorter sorter = new TableSorter( model_ ); // setup our container and components setLayout( new BorderLayout() ); messageTable_ = new JTable( model_ ); JTableHeader tblHdr = messageTable_.getTableHeader(); tblHdr.addMouseListener( new IMouseAdapter() ); configureMessageTable( messageTable_ ); // find out what is pressed messageTable_.getSelectionModel().addListSelectionListener( new IListSelectionListener() ); messageTable_.setDefaultRenderer( Date.class, new ITableCellRenderer() ); messageTable_.setDefaultRenderer( String.class, new ITableCellRenderer() ); messageTable_.setDefaultRenderer( JLabel.class, new ITableCellRenderer() ); this.tblScroller = new JScrollPane( messageTable_ ); this.tblScroller.setVerticalScrollBarPolicy( ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED ); this.tblScroller.setHorizontalScrollBarPolicy( ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED ); this.tblScroller.setMinimumSize( new Dimension(50, 50) ); this.tblScroller.setPreferredSize( new Dimension(600, 125) ); this.splitPane = new JSplitPane( JSplitPane.VERTICAL_SPLIT, this.tblScroller, viewer_ ); this.splitPane.setContinuousLayout( true ); this.splitPane.setDividerSize( 3 ); add( this.splitPane, BorderLayout.CENTER ); } private void configureMessageTable( JTable table ) { String resizePolicy = UserProperties.getProperty( "msgTbl.resizePolicy", "OFF" ); if ( resizePolicy.equalsIgnoreCase( "OFF" ) ) { table.setAutoResizeMode( JTable.AUTO_RESIZE_OFF ); } else if ( resizePolicy.equalsIgnoreCase( "ALL" ) ) { table.setAutoResizeMode( JTable.AUTO_RESIZE_ALL_COLUMNS ); } else if ( resizePolicy.equalsIgnoreCase( "LAST" ) ) { table.setAutoResizeMode( JTable.AUTO_RESIZE_LAST_COLUMN ); } boolean showGrid = UserProperties.getProperty( "msgTbl.showGrid", false ); table.setShowGrid( showGrid ); boolean showHGrid = UserProperties.getProperty( "msgTbl.showHorizGrid", false ); table.setShowHorizontalLines( showHGrid ); boolean showVGrid = UserProperties.getProperty( "msgTbl.showVertGrid", false ); table.setShowVerticalLines( showVGrid ); table.setColumnSelectionAllowed( false ); table.setRowSelectionAllowed( true ); Enumeration xenum = table.getColumnModel().getColumns(); int xindex = 0; while ( xenum.hasMoreElements() ) { TableColumn tblColumn = (TableColumn)xenum.nextElement(); tblColumn.setMinWidth(5); tblColumn.setMaxWidth(2048); tblColumn.setPreferredWidth( colWidths_[xindex] ); tblColumn.setIdentifier( colFields_[xindex] ); xindex++; } } private void loadTableColumns() { Vector fields = new Vector(); for ( int i = 1 ; ; ++i ) { String field = UserProperties.getProperty( "msgTbl.column." + i, null ); if ( field == null ) break; fields.addElement( field ); } colFields_ = new String[ fields.size() ]; colWidths_ = new int[ fields.size() ]; for ( int i = 0, c = 1 ; i < fields.size() ; ++i, ++c ) { colFields_[i] = (String) fields.elementAt(i); colWidths_[i] = UserProperties.getProperty( "msgTbl.column." + c + ".width", 50 ); } } private void saveTableColumns() { Configuration config = Configuration.getInstance(); Enumeration xenum = messageTable_.getColumnModel().getColumns(); int xindex = 1; while ( xenum.hasMoreElements() ) { TableColumn xcolumn = (TableColumn)xenum.nextElement(); // save column fields config.setProperty( "msgTbl.column." + xindex, xcolumn.getIdentifier().toString() ); // save column widths config.setProperty( "msgTbl.column." + xindex + ".width", xcolumn.getWidth() ); xindex++; } } /** * Get new mail for the selected folder. */ private void getNewMail() { if ( folder_ != null ) { MainFrame.getInstance().setWaitCursor(); MailEventThread.getInstance().notifyIncomingMail( folder_, false ); Object[] xargs = new Object[1]; xargs[0] = folder_.getName(); String msg = ICEMail.getBundle().getFormatString( "MessagePanel.Retrieving", xargs ); DialogRunner runner = new DialogRunner( new INewMailRunner(), (Frame)getTopLevelAncestor(), ICEMail.getBundle().getString( "MessagePanel.Retrieving.title" ), msg ); runner.start(); MainFrame.getInstance().resetCursor(); } } private void composeMessage( String command ) { MainFrame.getInstance().setWaitCursor(); ListSelectionModel lm = messageTable_.getSelectionModel(); int idx = lm.getMaxSelectionIndex(); if ( command.startsWith( "COMPOSE" ) || ( idx != -1 && idx < messageTable_.getRowCount() && messageTable_.isRowSelected( idx ) ) ) { int xstate = ComposeFrame.CREATING; if ( command.startsWith( "REPLY" ) ) { if ( command.endsWith( "ALL" ) ) { xstate = ComposeFrame.REPLYINGTOALL; } else { xstate = ComposeFrame.REPLYING; } } else if ( command.startsWith( "FORWARD" ) ) { xstate = ComposeFrame.FORWARDING; } else if ( command.startsWith( "EDIT" ) ) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -