📄 newfilesdialg.java
字号:
/* * JMule - Java file sharing client * Copyright (C) 2007-2008 JMule team ( jmule@jmule.org / http://jmule.org ) * * Any parts of this program derived from other projects, or contributed * by third-party developers are copyrighted by their respective authors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */package org.jmule.ui.swing.mainwindow;import java.awt.Color;import java.awt.Component;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Insets;import java.awt.datatransfer.DataFlavor;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.LinkedList;import java.util.List;import javax.swing.JFrame;import javax.swing.JTable;import javax.swing.SwingConstants;import javax.swing.SwingUtilities;import javax.swing.table.AbstractTableModel;import org.jmule.core.JMRunnable;import org.jmule.core.JMThread;import org.jmule.core.edonkey.impl.ED2KFileLink;import org.jmule.ui.swing.tables.JMTableCellRenderer;import org.jmule.ui.utils.FileFormatter;/** * * Created on Sep 18, 2008 * @author javajox * @version $Revision: 1.1 $ * Last changed by $Author: javajox $ on $Date: 2008/10/16 17:35:11 $ */public class NewFilesDialg extends NewED2KDialog { /*class Pair { public Pair(ED2KFileLink fileLink, boolean isSelected) { this.fileLink = fileLink; this.isSelected = isSelected; } public Pair(ED2KFileLink fileLink) { this.fileLink = fileLink; this.isSelected = true; } public ED2KFileLink fileLink; public boolean isSelected; }*/ private GridBagLayout grid_bag_layout1 = new GridBagLayout(); private GridBagLayout grid_bag_layout2 = new GridBagLayout(); private final List<ED2KFileLink> ed2k_file_links_list = new LinkedList<ED2KFileLink>(); //private final List<Pair> selected_list = new LinkedList<Pair>(); //private final Map<ED2KFileLink,Boolean> selected_list = new HashMap<ED2KFileLink,Boolean>(); private NewFilesTableModel new_files_table_model = new NewFilesTableModel(); private final static String[] column_names = { "File name", "Size", "Hash" }; class NewFilesTableModel extends AbstractTableModel { public final static int FILE_NAME = 0; public final static int FILE_SIZE = 1; public final static int FILE_HASH = 2; public Class getColumnClass(int col) { return Object.class; } public boolean isCellEditable(int row, int col){ return true; } public int getColumnCount() { return column_names.length; } public int getRowCount() { return ed2k_file_links_list.size(); } public Object getValueAt(int row, int col) { ED2KFileLink file_link = ed2k_file_links_list.get(row); switch( col ) { case FILE_NAME : return file_link.getFileName(); case FILE_SIZE : return file_link.getFileSize(); case FILE_HASH : return file_link.getFileHash(); } return null; } public String getColumnName(int col) { return column_names[col]; } } public NewFilesDialg(JFrame parent) { super(parent); init(); } private void init() { // ------------------------------------------------------------------ grid_bag_layout1.rowWeights = new double[] {0.1, 0.1, 0.1}; grid_bag_layout1.rowHeights = new int[] {7, 7, 7}; grid_bag_layout1.columnWeights = new double[] {0.1}; grid_bag_layout1.columnWidths = new int[] {7}; // ------------------------------------------------------------------ central_panel.setLayout(grid_bag_layout1); // ------------------------------------------------------------------ grid_bag_layout2.rowWeights = new double[] {0.0, 0.0, 0.1}; grid_bag_layout2.rowHeights = new int[] {163, 62, 7}; grid_bag_layout2.columnWeights = new double[] {0.1, 0.1, 0.1, 0.1}; grid_bag_layout2.columnWidths = new int[] {7, 7, 7, 7}; // ------------------------------------------------------------------ central_panel.add(paste_ed2k_links, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL, new Insets(0, 20, 0, 20), 0, 0)); central_panel.add(learn_about_ed2k_links_label, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(0, 20, 0, 0), 0, 0)); table.setModel(new_files_table_model); table.getColumnModel().getColumn(0).setPreferredWidth(300); table.setRowSelectionAllowed(false); // TODO the name cell must be a checkbox //table.getColumnModel().getColumn(0).setCellEditor(new DefaultCellEditor(new JCheckBox())); /*table.getColumnModel().getColumn(0).setCellRenderer(new TableCellRenderer() { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { //super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); final JCheckBox check_box = new JCheckBox(); //check_box.setSelected(true); final ED2KFileLink file_link = (ED2KFileLink)value; boolean is_checked = selected_list.get(file_link); check_box.setSelected(true); //if(pair.isSelected) check_box.setSelected(true); //check_box.setSelected(true); // check_box.addMouseListener(new MouseAdapter() { // public void mouseClicked(MouseEvent evt) { if(is_checked) { selected_list.remove(file_link); selected_list.put(file_link,false); check_box.setSelected(false); } else { selected_list.remove(file_link); selected_list.put(file_link,true); check_box.setSelected(true); } // } //}); check_box.setText(file_link.getFileName()); check_box.setToolTipText(file_link.getFileName()); if(isSelected) { check_box.setForeground(table.getSelectionForeground()); check_box.setBackground(table.getSelectionBackground()); } else { check_box.setForeground(table.getForeground()); check_box.setBackground(table.getBackground()); } return check_box; } });*/ // ////table.getColumnModel().getColumn(0).setCellEditor(new TableCellEditor() { // //}); //table.getColumnModel().getColumn(0).setPreferredWidth(50); table.getColumnModel().getColumn(0).setCellRenderer(new JMTableCellRenderer() { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); this.setText(value.toString()); this.setToolTipText(value.toString()); return this; } }); table.getColumnModel().getColumn(1).setCellRenderer(new JMTableCellRenderer() { 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(FileFormatter.formatFileSize(Integer.parseInt(value.toString()))+" "); return this; } }); table.getColumnModel().getColumn(2).setCellRenderer(new JMTableCellRenderer() { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); this.setText(value.toString()); this.setToolTipText(value.toString()); this.setForeground(Color.GRAY); return this; } }); paste_ed2k_links.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { (new JMThread(new JMRunnable() { public void JMRun() { try { Object clipboard_contents = clipboard.getData(DataFlavor.stringFlavor); List<ED2KFileLink> clipboard_file_links = ED2KFileLink.extractLinks(clipboard_contents.toString()); if( clipboard_file_links.size() != 0 ) for(ED2KFileLink file_link : clipboard_file_links) if( !ed2k_file_links_list.contains(file_link) ) { ed2k_file_links_list.add(file_link); //selected_list.put(file_link, true); } SwingUtilities.invokeAndWait(new Runnable() { public void run() { if( ed2k_file_links_list.size() != 0 ) filesPanel(); } }); }catch(Throwable t) { t.printStackTrace(); } } })).start(); } }); clearButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { ed2k_file_links_list.clear(); emptyPanel(); } }); } private void filesPanel() { // clean up the central panel central_panel.remove(paste_ed2k_links); central_panel.remove(learn_about_ed2k_links_label); // end clean up central_panel.setLayout(grid_bag_layout2); central_panel.add(paste_ed2k_links, new GridBagConstraints(0, 1, 2, 1, 0.0, 0.0, GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL, new Insets(10, 10, 0, 10), 0, 0)); central_panel.add(scroll_panel, new GridBagConstraints(0, 0, 4, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); // table.setModel(new_files_table_model); central_panel.updateUI(); this.repaint(); } private void emptyPanel() { // clean up the central panel central_panel.remove(paste_ed2k_links); central_panel.remove(scroll_panel); // end clean up central_panel.setLayout(grid_bag_layout1); central_panel.add(paste_ed2k_links, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL, new Insets(0, 20, 0, 20), 0, 0)); central_panel.add(learn_about_ed2k_links_label, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(0, 20, 0, 0), 0, 0)); central_panel.updateUI(); this.repaint(); } public static void main(String args[]) { JFrame frame = new JFrame("T e s t i n g ! ! !"); NewFilesDialg new_files_dialog = new NewFilesDialg(frame); frame.setSize(300,400); new_files_dialog.setSize(500, 300); frame.setVisible(true); new_files_dialog.setVisible(true); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -