📄 searchresulttable.java
字号:
}); close = new JMenuItem("Close"); close.setIcon(ImgRep.getIcon("cancel.png")); close.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { tabbedPanel.remove(search_result_pane); } }); column_setup = new JMenuItem("Column setup"); column_setup.setIcon(ImgRep.getIcon("columns_setup.png")); column_setup.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { System.out.println("Column setup action performed"); } }); properties = new JMenuItem("Properties"); properties.setIcon(ImgRep.getIcon("info.png")); properties.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { System.out.println("Properties action performed"); } }); } public void mousePressed(MouseEvent e) { showPopup(e); } public void mouseReleased(MouseEvent e) { showPopup(e); } private void showPopup(MouseEvent e) { if (e.isPopupTrigger()) { JPopupMenu popup_menu = null; switch( whichCondition() ) { case A : popup_menu = new JPopupMenu(); popup_menu.add(try_again); popup_menu.add(copy_ed2k_links); popup_menu.add(close); popup_menu.add(column_setup); popup_menu.add(properties); break; case B : popup_menu = new JPopupMenu(); popup_menu.add(try_again); popup_menu.add(copy_ed2k_links); popup_menu.add(close); popup_menu.add(column_setup); break; case C : popup_menu = new JPopupMenu(); popup_menu.add(try_again); popup_menu.add(copy_ed2k_links); popup_menu.add(close); popup_menu.add(column_setup); popup_menu.add(properties); break; case D : popup_menu = new JPopupMenu(); popup_menu.add(try_again); popup_menu.add(copy_ed2k_links); popup_menu.add(close); popup_menu.add(column_setup); break; case E : popup_menu = new JPopupMenu(); popup_menu.add(start_download); popup_menu.add(try_again); popup_menu.add(copy_ed2k_links); popup_menu.add(close); popup_menu.add(column_setup); break; case F : popup_menu = new JPopupMenu(); popup_menu.add(start_download); popup_menu.add(try_again); popup_menu.add(copy_ed2k_links); popup_menu.add(close); popup_menu.add(column_setup); break; case G : popup_menu = new JPopupMenu(); popup_menu.add(start_download); popup_menu.add(try_again); popup_menu.add(copy_ed2k_links); popup_menu.add(close); popup_menu.add(column_setup); break; case H : popup_menu = new JPopupMenu(); popup_menu.add(start_download); popup_menu.add(try_again); popup_menu.add(copy_ed2k_links); popup_menu.add(close); popup_menu.add(column_setup); popup_menu.add(properties); break; case I : popup_menu = new JPopupMenu(); popup_menu.add(start_download); popup_menu.add(try_again); popup_menu.add(copy_ed2k_links); popup_menu.add(close); popup_menu.add(column_setup); break; case J : popup_menu = new JPopupMenu(); popup_menu.add(close); popup_menu.add(column_setup); break; } popup_menu.show(e.getComponent(), e.getX(), e.getY()); } } } this.addMouseListener(new PopupListener()); } private SearchResultItem[] getSelectedFiles() { return getFilesByIndexes( this.getSelectedRows() ); } private SearchResultItem[] getFilesByIndexes(int[] indexes) { SearchResultItem[] result = new SearchResultItem[indexes.length]; int k = 0; for(int i : indexes) { int j = 0; for(SearchResultItem file : search_result_file_list) { if( j == this.convertRowIndexToModel(i) ) { result[k++] = file; break; } ++j; } } return result; } /* * ========================================================================================================================================================= * | | Downloading | On Shared | Downloading & New files | Shared & New files | Shared & Downloading & New files | New Files | * ========================================================================================================================================================= * | | * | ONE_SELECTED A C X X X H | * | | * |-------------------------------------------------------------------------------------------------------------------------------------------------------| * | | * | MULTIPLE_SELECTED B D E F G I | * | | * |-------------------------------------------------------------------------------------------------------------------------------------------------------- * J - no search results * A,B,C,D,E,F,G,H,I,J - conditions * X - can't be * * Start download Ac1 * Try again Ac2 * Copy ED2K Links Ac3 * Close Ac5 * Column setup Ac6 * Properties Ac7 * * | Ac1 Ac2 Ac3 Ac5 Ac6 Ac7 * -------------------------------------------- * A | - yes yes yes yes yes * | * B | - yes yes yes yes - * | * C | - yes yes yes yes yes * | * D | - yes yes yes yes - * | * E | yes yes yes yes yes - * | * F | yes yes yes yes yes - * | * G | yes yes yes yes yes - * | * H | yes yes yes yes yes yes * | * I | yes yes yes yes yes - * | * J | - - - yes yes - * */ private ConditionType whichCondition() { int[] selected_rows = this.getSelectedRows(); SearchResultItem[] results = getSelectedFiles(); if( ( selected_rows.length == 1 ) && _download_manager.hasDownload(results[0].getFileHash()) ) return ConditionType.A; if( selected_rows.length > 1 ) { boolean all_are_downloading = true; for(SearchResultItem result : results) { if( !_download_manager.hasDownload(result.getFileHash()) ) { all_are_downloading = false; break; } } if(all_are_downloading) return ConditionType.B; } if( ( selected_rows.length == 1 ) && _sharing_manager.hasFile(results[0].getFileHash()) ) return ConditionType.C; if( selected_rows.length > 1 ) { boolean all_are_shared = true; for(SearchResultItem result : results) { if( !_sharing_manager.hasFile(result.getFileHash()) ) { all_are_shared = false; break; } } if(all_are_shared) return ConditionType.D; } if( selected_rows.length > 1 ) { boolean some_downloading = false; boolean some_new = false; for(SearchResultItem result : results) { if( _download_manager.hasDownload(result.getFileHash()) ) some_downloading = true; if( !_sharing_manager.hasFile(result.getFileHash()) && !_download_manager.hasDownload(result.getFileHash())) some_new = true; } if( some_downloading && some_new ) return ConditionType.E; } if( selected_rows.length > 1 ) { boolean some_shared = false; boolean some_new = false; for(SearchResultItem result : results) { if( _sharing_manager.hasFile(result.getFileHash()) ) some_shared = true; if( !_sharing_manager.hasFile(result.getFileHash()) && !_download_manager.hasDownload(result.getFileHash())) some_new = true; } if( some_shared && some_new ) return ConditionType.F; } if( selected_rows.length > 1 ) { boolean some_shared = false; boolean some_downloading = false; boolean some_new = false; for(SearchResultItem result : results) { if( _sharing_manager.hasFile(result.getFileHash()) ) some_shared = true; if( _download_manager.hasDownload(result.getFileHash()) ) some_downloading = true; if( !_sharing_manager.hasFile(result.getFileHash()) && !_download_manager.hasDownload(result.getFileHash()) ) some_new = true; } if( some_shared && some_downloading && some_new ) return ConditionType.G; } if( ( selected_rows.length == 1 ) && ( !_sharing_manager.hasFile(results[0].getFileHash()) && !_download_manager.hasDownload(results[0].getFileHash())) ) return ConditionType.H; if( selected_rows.length > 1 ) { boolean all_are_new = true; for(SearchResultItem result : results) { if( _sharing_manager.hasFile(result.getFileHash()) || _download_manager.hasDownload(result.getFileHash())) { all_are_new = false; break; } } if( all_are_new ) return ConditionType.I; } if( this.getRowCount() == 0 ) return ConditionType.J; return null; } public List<SearchResultItem> getFilesByStatus(FileStatus fileStatus) { List<SearchResultItem> result = new LinkedList<SearchResultItem>(); SearchResultItem[] selected_results = getSelectedFiles(); for(SearchResultItem search_result_item : selected_results) { switch(fileStatus) { case SHARING : if(_sharing_manager.hasFile(search_result_item.getFileHash())) result.add(search_result_item); break; case DOWNLOADING: if(_download_manager.hasDownload(search_result_item.getFileHash())) result.add(search_result_item); break; case NEW : if(!_download_manager.hasDownload(search_result_item.getFileHash()) && !_sharing_manager.hasFile(search_result_item.getFileHash())) result.add(search_result_item); break; } } return result; } private enum FileStatus { SHARING, DOWNLOADING, NEW } private enum ConditionType { A,B,C,D,E,F,G,H,I,J } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -