⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nfs_backpanel.java

📁 用swt作的一个类似飞鸽一样的局域网通信工具
💻 JAVA
字号:
package view.sender;

import java.io.File;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.Iterator;

import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.dnd.DND;
import org.eclipse.swt.dnd.DropTarget;
import org.eclipse.swt.dnd.DropTargetAdapter;
import org.eclipse.swt.dnd.DropTargetEvent;
import org.eclipse.swt.dnd.FileTransfer;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;

public class NFS_BackPanel extends Composite {

	private ScrolledComposite scrolledComposite = null;
	
	public Composite composite = null;
	
	private ArrayList nfhi_List = new ArrayList();
	
	private DropTarget target;
	
	private Hashtable selectedFiles;
	
	private ArrayList list_NSF_FileHI;

	private void createScrolledComposite() {
	
		scrolledComposite = new ScrolledComposite(this, SWT.V_SCROLL | SWT.H_SCROLL| SWT.BORDER);

		scrolledComposite.setExpandHorizontal(true);
		
		scrolledComposite.setExpandVertical(true);
//		scrolledComposite.setAlwaysShowScrollBars(false);
		
		createComposite();
		
		scrolledComposite.setContent(this.composite);
		
		scrolledComposite.setLayout(new FillLayout());
		
		scrolledComposite.setMinSize(composite.computeSize(SWT.DEFAULT,SWT.DEFAULT));
	
		target = new DropTarget(scrolledComposite, DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_DEFAULT);
	    
		target.setTransfer(new Transfer[] {FileTransfer.getInstance()});
	    
	    target.addDropListener(new DropTargetAdapter() {
	    	public void dragEnter(DropTargetEvent event) {
	          if (event.detail == DND.DROP_DEFAULT) {
	            event.detail = (event.operations & DND.DROP_COPY) != 0 ? DND.DROP_COPY : DND.DROP_NONE;
	          }
	          for (int i = 0, n = event.dataTypes.length; i < n; i++) {
	            if (FileTransfer.getInstance().isSupportedType(event.dataTypes[i])) {
	              event.currentDataType = event.dataTypes[i];
	            }
	          }
	        }
	    	public void dragOver(DropTargetEvent event) {
	          event.feedback = DND.FEEDBACK_SELECT | DND.FEEDBACK_SCROLL;
	        }
	    	public void drop(DropTargetEvent event) {
	          if (FileTransfer.getInstance().isSupportedType(event.currentDataType)) {
	        	  String[] files = (String[]) event.data;
					if (files != null && files.length > 0) {
						for(int i = 0; i<files.length;i++){
							File f = new File(files[i]);
							if (selectedFiles.get(new Integer(f.hashCode()))==null){
								selectedFiles.put(new Integer(f.hashCode()),f);
								list_NSF_FileHI.add(addNFS_FileHandleItem(f));
							}
						}
					}
	          }
	        }
	    });
	}
	
	public void thisDispose(){
		
		if (nfhi_List!=null){
		
			Iterator i = nfhi_List.iterator();
		
			while(i.hasNext()){
			
				NFS_FileHandleItem NTS = (NFS_FileHandleItem)i.next();
				
				if (!NTS.isDisposed()){
				
					NTS.thisDispose();
				}
			}
		}
		
		if ((scrolledComposite!=null)&&!scrolledComposite.isDisposed()) scrolledComposite.dispose();
		
		if ((composite!=null)&&!composite.isDisposed()) composite.dispose();
		
		if ((target!=null)&&!target.isDisposed()) target.dispose();
		
		this.dispose();
		
		this.free();
	}
	
	protected void free(){
		this.composite = null;
		this.nfhi_List = null;
		this.scrolledComposite = null;
	}
	public void packComposite(){
		scrolledComposite.setMinSize(composite.computeSize(SWT.DEFAULT,SWT.DEFAULT));
		composite.pack();
	}
	
	/**
	 * This method initializes composite	
	 *
	 */
	
	public NFS_FileHandleItem addNFS_FileHandleItem(File file){
		
		NFS_FileHandleItem nfhi = new NFS_FileHandleItem(composite,SWT.NONE,scrolledComposite,selectedFiles);
		
		nfhi_List.add(nfhi);
		
		nfhi.setFile(file);
		
		packComposite();
		
		return(nfhi);
	}
	
	
	private void createComposite() {
		
		composite = new Composite(scrolledComposite, SWT.NONE);
		
		GridLayout layout = new GridLayout();
		
		layout.numColumns = 1;
		
		layout.marginHeight = 0;
		
		layout.marginWidth = 0;
		
		layout.verticalSpacing = 0;
		
		layout.horizontalSpacing = 0;
		
		composite.setLayout(layout);
		
		composite.setBackground(new Color(Display.getCurrent(), 228, 224, 203));
		
		composite.setSize(composite.computeSize(SWT.DEFAULT,SWT.DEFAULT));
		
	}

	/**
	 * @param args
	 */


	public NFS_BackPanel(Composite parent, int style,Hashtable selectedFiles,ArrayList list_NSF_FileHI) {
		
		super(parent, style);
		
		this.selectedFiles = selectedFiles;
		
		this.list_NSF_FileHI = list_NSF_FileHI;
		
		initialize();
	}

	private void initialize() {
		
		this.setLayout(new FillLayout());
		
		createScrolledComposite();
	}
}  //  @jve:decl-index=0:visual-constraint="10,10"

⌨️ 快捷键说明

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