📄 downloadstable.java
字号:
//g.setColor(Color.GRAY); //System.out.println(pixels_for_byte); //g.drawLine(0, 6, this.getWidth(), 6); // g.fillRect(2, 2, this.getWidth(), 7); g.setColor(Color.WHITE); //g.fillRect(0, 1, this.getWidth(), 1); g.drawLine(0, 3, this.getWidth(), 3); for(Gap gap : gap_list.getGaps()) { g.fillRect( Math.round(gap.getStart()*pixels_for_byte), 4, Math.round(gap.getEnd()*pixels_for_byte - gap.getStart()*pixels_for_byte), this.getHeight()); } /*for(Pair p : pairs) { g.fillRect( Math.round(p.getX()*pixels_for_byte), 5, Math.round(p.getY()*pixels_for_byte - p.getX()*pixels_for_byte), this.getHeight()); // --------------------------------------------------------- System.out.println(Math.round(p.getX()*pixels_for_byte)); System.out.println(Math.round(p.getY()*pixels_for_byte - p.getX()*pixels_for_byte)); }*/ } } class DoneTableCellRenderer extends DownloadTableCellRenderer { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); this.setHorizontalAlignment(SwingConstants.RIGHT); this.setText(NumberFormatter.formatProgress(session.getPercentCompleted()) + " "); return this; } } class CompletedSourcesTableCellRenderer extends DownloadTableCellRenderer { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); this.setHorizontalAlignment(SwingConstants.CENTER); this.setText(session.getCompletedSources()+""); return this; } } class PartialSourcesTableCellRenderer extends DownloadTableCellRenderer { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); this.setHorizontalAlignment(SwingConstants.CENTER); this.setText(session.getPartialSources()+""); return this; } } class ETATableCellRenderer extends DownloadTableCellRenderer { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); this.setHorizontalAlignment(SwingConstants.RIGHT); this.setText(TimeFormatter.format(session.getETA()) + " "); return this; } } class StatusTableCellRenderer extends DownloadTableCellRenderer { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); this.setHorizontalAlignment(SwingConstants.LEFT); if( session.getStatus() == DownloadSession.STATUS_STARTED ) this.setText(" started"); else if( session.getStatus() == DownloadSession.STATUS_STOPPED ) this.setText(" stopped"); return this; } } class ProgressBarTableCellRenderer extends JProgressBar implements TableCellRenderer { //extends DefaultTableCellRenderer { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { DownloadSession session = (DownloadSession)value; //JProgressBar progress_bar = new JProgressBar(); this.setMinimum(0); this.setMaximum((int)session.getFileSize()); this.setValue((int)session.getTransferredBytes()); this.setStringPainted(true); this.setBackground(Color.WHITE); this.setForeground(new Color(0,100,199)); //this.setBorder(javax.swing.BorderFactory.createEtchedBorder()); this.setBorder(new javax.swing.border.LineBorder(java.awt.Color.lightGray, 1, true)); //this.setBorderPainted(false); //this.setLayout(new GridLayout(1,1)); //if(isSelected) { // this.setForeground(table.getSelectionForeground()); // this.setBackground(table.getSelectionBackground()); //} else { // this.setForeground(table.getForeground()); // this.setBackground(table.getBackground()); //} //this.setOpaque(true); //this.add(progress_bar); return this; } } private SwingGUIUpdater _gui_updater = SwingGUIUpdater.getInstance(); protected final Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); public DownloadsTable(JFrame parent) { super(parent); init(); } private void init() { //JMTableColumn order = new JMTableColumn(); //order.setIdentifier(UIConstants.DOWNLOAD_LIST_ORDER_ID); //order.setModelIndex(DownloadTableModel.ORDER); //order.setVisible(_pref.isColumnVisible(UIConstants.DOWNLOAD_LIST_ORDER_ID)); //order.setHeaderValue("#"); //order.setCellRenderer(new OrderTableCellRenderer()); //table_columns.add(order); TableColumnExt file_name = new TableColumnExt(); file_name.setIdentifier(UIConstants.DOWNLOAD_LIST_FILE_NAME_COLUMN_ID); file_name.setModelIndex(DownloadTableModel.FILE_NAME); file_name.setVisible(_pref.isColumnVisible(UIConstants.DOWNLOAD_LIST_FILE_NAME_COLUMN_ID)); file_name.setHeaderValue("File name"); file_name.setCellRenderer(new FileNameTableCellRenderer()); file_name.setComparator(new GeneralComparator("getSharingName")); table_columns.add(file_name); TableColumnExt file_size = new TableColumnExt(); file_size.setIdentifier(UIConstants.DOWNLOAD_LIST_SIZE_COLUMN_ID); file_size.setModelIndex(DownloadTableModel.FILE_SIZE); file_size.setVisible(_pref.isColumnVisible(UIConstants.DOWNLOAD_LIST_SIZE_COLUMN_ID)); file_size.setHeaderValue("Size"); file_size.setCellRenderer(new FileSizeTableCellRenderer()); file_size.setComparator(new GeneralComparator("getFileSize")); table_columns.add(file_size); TableColumnExt transferred = new TableColumnExt(); transferred.setIdentifier(UIConstants.DOWNLOAD_LIST_TRANSFERRED_COLUMN_ID); transferred.setModelIndex(DownloadTableModel.TRANSFERRED); transferred.setVisible(_pref.isColumnVisible(UIConstants.DOWNLOAD_LIST_TRANSFERRED_COLUMN_ID)); transferred.setHeaderValue("Transferred"); transferred.setCellRenderer(new TransferredTableCellRenderer()); transferred.setComparator(new GeneralComparator("getTransferredBytes")); table_columns.add(transferred); TableColumnExt download_speed = new TableColumnExt(); download_speed.setIdentifier(UIConstants.DOWNLOAD_LIST_DOWNLOAD_SPEED_COLUMN_ID); download_speed.setModelIndex(DownloadTableModel.DOWNLOAD_SPEED); download_speed.setVisible(_pref.isColumnVisible(UIConstants.DOWNLOAD_LIST_DOWNLOAD_SPEED_COLUMN_ID)); download_speed.setHeaderValue("Down speed"); download_speed.setCellRenderer(new DownloadSpeedTableCellRenderer()); download_speed.setComparator(new GeneralComparator("getSpeed")); table_columns.add(download_speed); TableColumnExt upload_speed = new TableColumnExt(); upload_speed.setIdentifier(UIConstants.DOWNLOAD_LIST_UPLOAD_SPEED_COLUMN_ID); upload_speed.setModelIndex(DownloadTableModel.UPLOAD_SPEED); upload_speed.setVisible(_pref.isColumnVisible(UIConstants.DOWNLOAD_LIST_UPLOAD_SPEED_COLUMN_ID)); upload_speed.setHeaderValue("Up speed"); upload_speed.setCellRenderer(new UploadSpeedTableCellRenderer()); upload_speed.setComparator(new Comparator() { public int compare(Object o1, Object o2) { DownloadSession d_session1 = (DownloadSession)o1; DownloadSession d_session2 = (DownloadSession)o2; UploadSession u_session1 = null; UploadSession u_session2 = null; if(_upload_manager.hasUpload(d_session1.getFileHash())) u_session1 = _upload_manager.getUpload(d_session1.getFileHash()); if(_upload_manager.hasUpload(d_session2.getFileHash())) u_session2 = _upload_manager.getUpload(d_session2.getFileHash()); Float u_speed1 = new Float((u_session1!=null)?u_session1.getSpeed():0.0f); Float u_speed2 = new Float((u_session2!=null)?u_session2.getSpeed():0.0f); return Misc.compareAllObjects(u_speed1, u_speed2, "floatValue", true); } }); table_columns.add(upload_speed); TableColumnExt pieces = new TableColumnExt(); pieces.setIdentifier(UIConstants.DOWNLOAD_LIST_PROGRESS_COLUMN_ID); pieces.setModelIndex(DownloadTableModel.PIECES); pieces.setVisible(_pref.isColumnVisible(UIConstants.DOWNLOAD_LIST_PROGRESS_COLUMN_ID)); pieces.setHeaderValue("Pieces"); pieces.setCellRenderer(new PiecesTableCellRenderer()); pieces.setComparator(new GeneralComparator("getPercentCompleted")); table_columns.add(pieces); TableColumnExt done = new TableColumnExt(); done.setIdentifier(UIConstants.DOWNLOAD_LIST_COMPLETED_COLUMN_ID); done.setModelIndex(DownloadTableModel.DONE); done.setVisible(_pref.isColumnVisible(UIConstants.DOWNLOAD_LIST_COMPLETED_COLUMN_ID)); done.setHeaderValue("Done"); done.setCellRenderer(new DoneTableCellRenderer()); done.setComparator(new GeneralComparator("getPercentCompleted")); table_columns.add(done); TableColumnExt progress_bar = new TableColumnExt(); progress_bar.setIdentifier(UIConstants.DOWNLOAD_LIST_PROGRESS_BAR_COLUMN_ID); progress_bar.setModelIndex(DownloadTableModel.PROGRESS_BAR); progress_bar.setVisible(_pref.isColumnVisible(UIConstants.DOWNLOAD_LIST_PROGRESS_BAR_COLUMN_ID)); progress_bar.setHeaderValue("Progress"); progress_bar.setCellRenderer(new ProgressBarTableCellRenderer()); progress_bar.setComparator(new GeneralComparator("getPercentCompleted")); table_columns.add(progress_bar); TableColumnExt complete_sources = new TableColumnExt(); complete_sources.setIdentifier(UIConstants.DOWNLOAD_LIST_COMPLETE_SOURCES_COLUMN_ID); complete_sources.setModelIndex(DownloadTableModel.COMPLETE_SOURCES); complete_sources.setVisible(_pref.isColumnVisible(UIConstants.DOWNLOAD_LIST_COMPLETE_SOURCES_COLUMN_ID)); complete_sources.setVisible(true); complete_sources.setHeaderValue("Complete sources"); complete_sources.setCellRenderer(new CompletedSourcesTableCellRenderer()); complete_sources.setComparator(new GeneralComparator("getCompletedSources")); table_columns.add(complete_sources); TableColumnExt partial_sources = new TableColumnExt(); partial_sources.setIdentifier(UIConstants.DOWNLOAD_LIST_PARTIAL_SOURCES_COLUMN_ID); partial_sources.setModelIndex(DownloadTableModel.PARTIAL_SOURCES); partial_sources.setVisible(_pref.isColumnVisible(UIConstants.DOWNLOAD_LIST_PARTIAL_SOURCES_COLUMN_ID)); partial_sources.setVisible(true); partial_sources.setHeaderValue("Partial sources"); partial_sources.setCellRenderer(new PartialSourcesTableCellRenderer()); partial_sources.setComparator(new GeneralComparator("getPartialSources")); table_columns.add(partial_sources); TableColumnExt eta = new TableColumnExt(); eta.setIdentifier(UIConstants.DOWNLOAD_LIST_REMAINING_COLUMN_ID); eta.setModelIndex(DownloadTableModel.ETA); eta.setVisible(_pref.isColumnVisible(UIConstants.DOWNLOAD_LIST_REMAINING_COLUMN_ID)); eta.setHeaderValue("ETA"); eta.setCellRenderer(new ETATableCellRenderer()); eta.setComparator(new GeneralComparator("getETA")); table_columns.add(eta); TableColumnExt status = new TableColumnExt(); status.setIdentifier(UIConstants.DOWNLOAD_LIST_STATUS_COLUMN_ID); status.setModelIndex(DownloadTableModel.STATUS); status.setVisible(_pref.isColumnVisible(UIConstants.DOWNLOAD_LIST_STATUS_COLUMN_ID)); status.setHeaderValue("Status"); status.setCellRenderer(new StatusTableCellRenderer()); status.setComparator(new GeneralComparator("getStatus")); table_columns.add(status); super.buildColumns(new DownloadTableModel()); class PopupListener extends MouseAdapter { JMenuItem start_download, stop_download, cancel_download, paste_ed2k_links, copy_ed2k_links, column_setup, properties; public PopupListener() { start_download = new JMenuItem("Start download"); start_download.setIcon(ImgRep.getIcon("start_download.png")); start_download.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { for(DownloadSession session : getSelectedDownloadSessions()) if(session.getStatus() == DownloadSession.STATUS_STOPPED) session.startDownload(); } }); stop_download = new JMenuItem("Stop download"); stop_download.setIcon(ImgRep.getIcon("stop_download.png")); stop_download.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { for(DownloadSession session : getSelectedDownloadSessions()) if(session.getStatus() == DownloadSession.STATUS_STARTED) session.stopDownload(); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -