filetable.java

来自「MyUploader 是一款使用 http 协议(RFC 1867)用于上传文件」· Java 代码 · 共 611 行 · 第 1/2 页

JAVA
611
字号
						if (list[i].isDirectory()) {				FormFileField fileField = new FormFileField("userfile[]", list[i], formFileField.getUploadDirectory() + list[i].getName() + "/", contentTypeMapper.getContentType(list[i]));				addDirectory(fileField);			} else {				FormFileField fileField = new FormFileField("userfile[]", list[i], formFileField.getUploadDirectory(), contentTypeMapper.getContentType(list[i]));				addFile(fileField);			}		}	}			/**	 * Add a file to the internal collection.	 * 	 * @param fileField The FormFileField.	 */	public void addFile(FormFileField fileField) {				//	 check if file already exists		String absolutePath = fileField.getFile().getAbsolutePath();				boolean found = false;				for (int j = 0; j < files.size(); j++) {			FormFileField formFileField = (FormFileField)files.elementAt(j);						if (formFileField.getFile().getAbsolutePath().equalsIgnoreCase(absolutePath)) {				found = true;				break;			}							}				if (!found) {						// check if the extension must not be rejected			if (rejectFileFilter != null) {				if (!rejectFileFilter.rejectFile(fileField.getFile())) {					files.add(fileField);				}			} else {				files.add(fileField);			}			}	}		/**	 * Add a list of files to the internal collection.	 * The internal collection is the list to be uploaded.	 * 	 * @param list The files to be added.	 */	public void addFiles (File [] list) {				ContentTypeMapper contentTypeMapper = ContentTypeMapper.getInstance();				// retrieve the allowed files		File [] file = getFilteredFiles(list);				for (int i = 0; i < file.length; i++) {						// ensure that no directories are dropped			if (file[i].isDirectory()) {								if (Parameters.getParameter(Parameters.UPLOAD_DIRECTORIES, true)) {					FormFileField formFileField = new FormFileField("userfile[]", file[i], file[i].getName() + "/", contentTypeMapper.getContentType(file[i]));					addDirectory(formFileField);								}							} else {				FormFileField formFileField = new FormFileField("userfile[]", file[i], "", contentTypeMapper.getContentType(file[i]));				addFile(formFileField);			}		}			sort(1, true);				if (Parameters.getParameter(Parameters.COLDFUSION, false)) {			changeNames();		}				// update the table		model.fireTableDataChanged();				sortDown = true;		sortOnFile = true;				// the table header must be updated to remove the down/upicon		// in case of 1 files or 0 files		getTableHeader().updateUI();			}		/**	 * Change the form names of the files to be uploaded. The first form name	 * is f1 the second f2 and so an.  	 */	public void changeNames() {				for (int i = 0; i < files.size(); i++) {			FormFileField fileField = (FormFileField)files.elementAt(i);			fileField.setName("file_" + (i + 1));		}	}		/**	 * The to be uploaded files.	 * 	 * @return The files to be uploaded.	 */	public FormFileField [] getFormFileFields() {		return (FormFileField [])files.toArray(new FormFileField[files.size()]);	}			/**	 * Returns the number of files.	 * 	 * @return The number of files.	 */	public int getNumberOfFiles() {		return files.size();	}		/**	 * Shows the popup.	 * 	 * @param e The MouseEvent.	 */	public void maybeShowPopup(MouseEvent e) {		if (e.isPopupTrigger()) {			popup.show(e.getComponent(), e.getX(), e.getY());		}	}		/**	 * Class for encapsulating the mouse events. This class is needed 	 * for the sort of the table.	 */	class TableMouseAdapter extends MouseAdapter {				public void mouseReleased(MouseEvent me) {						int clickCount = me.getClickCount();					if(clickCount == 1) {								// determine the column				int tableColumn = columnAtPoint(me.getPoint());								if (tableColumn == 1) {					if (sortOnFile == true) {						if (sortDown == true) {							sort(tableColumn, false);							model.fireTableDataChanged();							sortDown = false;														} else {							sort(tableColumn, true);							model.fireTableDataChanged();							sortDown = true;						}					} else {						sort(tableColumn, true);						model.fireTableDataChanged();						sortDown = true;						sortOnFile = true;					}									} else if (tableColumn == 2) {					if (sortOnFile == true) {						sort(tableColumn, true);						model.fireTableDataChanged();						sortDown = true;						sortOnFile = false;					} else {						if (sortDown == true) {							sort(tableColumn, false);							model.fireTableDataChanged();							sortDown = false;						} else {							sort(tableColumn, true);							model.fireTableDataChanged();							sortDown = true;						}					}				}				getTableHeader().repaint();			}		}	}		/**	 * Class for showing a table header.	 */	class TableHeaderRenderer extends DefaultTableCellRenderer implements TableCellRenderer {	       		private static final long serialVersionUID = -4402478739497433510L;				// This method is called each time a column header        // using this renderer needs to be rendered.        public Component getTableCellRendererComponent(JTable table, Object value,        	boolean isSelected, boolean hasFocus, int rowIndex, int colIndex) {                   	// Inherit the colors and font from the header component            if (table != null) {                JTableHeader header = table.getTableHeader();                                if (header != null) {                    setForeground(header.getForeground());                    setBackground(header.getBackground());                    setFont(header.getFont());	                                        }            }                        if (colIndex == 1) {            	setText(localeManager.getString("file") + " ");            } else {            	setText(localeManager.getString("size") + " ");            }                        if (files.size() > 1) { // was 0                if (colIndex == 1) {                	if (sortOnFile == true) {                		if (sortDown) {                			setIcon(new DownIcon());                		} else {                			setIcon(new UpIcon());                		}                	} else {                		setIcon(null);                	}                } else {                	                	if (sortOnFile == false) {                		if (sortDown) {                			setIcon(new DownIcon());                		} else {                			setIcon(new UpIcon());                		}                	} else {                		setIcon(null);                	}                }            } else {            	setIcon(null); // toegevoegd            }                       setBorder(UIManager.getBorder("TableHeader.cellBorder"));            setHorizontalAlignment(JLabel.CENTER);            setHorizontalTextPosition(JLabel.LEFT);                return this;        }    }		/**	 * Class needed for drag and drop.	 */	class FileDropTargetListener implements DropTargetListener {				/* (non-Javadoc)		 * @see java.awt.dnd.DropTargetListener#dragEnter(java.awt.dnd.DropTargetDragEvent)		 */		public void dragEnter(DropTargetDragEvent event) {						event.acceptDrag (DnDConstants.ACTION_COPY);		}		/* (non-Javadoc)		 * @see java.awt.dnd.DropTargetListener#dragOver(java.awt.dnd.DropTargetDragEvent)		 */		public void dragOver(DropTargetDragEvent event) {						event.acceptDrag(DnDConstants.ACTION_COPY);		}		/* (non-Javadoc)		 * @see java.awt.dnd.DropTargetListener#dropActionChanged(java.awt.dnd.DropTargetDragEvent)		 */		public void dropActionChanged(DropTargetDragEvent event) {}		/* (non-Javadoc)		 * @see java.awt.dnd.DropTargetListener#dragExit(java.awt.dnd.DropTargetEvent)		 */		public void dragExit(DropTargetEvent event) {}		/* (non-Javadoc)		 * @see java.awt.dnd.DropTargetListener#drop(java.awt.dnd.DropTargetDropEvent)		 */		public void drop(DropTargetDropEvent event) {							if ((event.getSourceActions() & DnDConstants.ACTION_COPY) != 0) {				event.acceptDrop(DnDConstants.ACTION_COPY);			} else {				event.rejectDrop();				return;			}					Transferable transferable = event.getTransferable();			DataFlavor[] flavors = event.getCurrentDataFlavors();			paste(flavors, transferable);					event.dropComplete(true);		}	}}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?