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

📄 downloadpanel.java

📁 基于P2P框架的使用CMS编写的文件共享系统
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

import java.io.File;

import net.jxta.discovery.DiscoveryService;
import net.jxta.peergroup.PeerGroup;
import net.jxta.share.*;
import net.jxta.share.client.*;
import net.jxta.share.metadata.*;
public class DownloadPanel extends JPanel
{
    public DownloadPanel() 
    {
    	DownSubPanel SubPanel = new DownSubPanel();
    	this.setVisible(true);
	    this.setLayout(new BorderLayout());
	    this.add(SubPanel,java.awt.BorderLayout.CENTER);	    
    }
    /**
     * DownSubPanel serves as the GUI for MetadataSearchDemo
     */
    public class DownSubPanel extends JPanel implements ActionListener 
    {
    	JButton searchBtn;
	    JButton viewBtn;
	    JButton downloadBtn;
	    List resultList;
	    //MetadataQuery descQuery;
	    //MetadataQuery keywdQuery;	
	    JPanel panel;
	    ListContentRequest request = null;
        /*This class is used to search a peergroup for 
        * content that is being shared using the JXTA CMS. */
	    ContentAdvertisement[] results = null;
        //存储由ListContentRequest返回的ContentAdvertisements

	public DownSubPanel() 
	{	   
	    this.setVisible(true);
	    this.setBackground(Color.pink);
	    this.setLayout(new BorderLayout());	 
	    
	    searchBtn= new JButton("搜索");
	    viewBtn= new JButton("查看广告");
	    downloadBtn= new JButton("下载");
	    
	    panel= new JPanel();
	    panel.setBorder(BorderFactory.createEtchedBorder());
	    panel.add(searchBtn);
	    panel.add(viewBtn);
	    panel.add(downloadBtn);
	    searchBtn.addActionListener(this);
	    viewBtn.addActionListener(this);
        downloadBtn.addActionListener(this);
	   	    
	    resultList = new List();
	    this.add(panel,java.awt.BorderLayout.NORTH);
	    this.add(resultList, BorderLayout.CENTER);
	}
	
	public void actionPerformed(ActionEvent e) 
	{
	    if (e.getSource()==searchBtn)   //搜索事件
	    {
	    	if (request != null) 
		    {
		        request.cancel();
		    }
		    String searchString = JOptionPane.showInputDialog(this, "请输入要搜索的字符串:");
		    //JOptionPane 有助于方便地弹出要求用户提供值或向其发出通知的标准对话框。
		    //用户点击取消,退出对话框 
		if(searchString == null)
			return;
		String searchDaString="*"+searchString+"*";  //模糊搜索
		request = new MyListRequest(StartService.getNetPeerGroup(), searchDaString, this);
		//初始化ListContentRequest
	
		//((MyListRequest) request).searchAllSharedContent();
		request.activateRequest(); //发送列表请求等待返回结果
		//this.validate();
	    }
	    else if (e.getSource()==viewBtn)  //查看广告事件
	    {
		    int selectedIndex = resultList.getSelectedIndex();
		    if((results != null) && (selectedIndex != -1)&& (results[selectedIndex] != null)) 
		    {
		        new AdvertisementViewer(results[selectedIndex]);
		    }
	    }
	    else if (e.getSource()==downloadBtn)   //下载事件
	    {
		   int selectedIndex = resultList.getSelectedIndex();
		   if((results != null) && (selectedIndex != -1)&& (results[selectedIndex] != null)) 
		   {
			   JFileChooser saveDialog = new JFileChooser();
		       saveDialog.setLocation(300, 200);
		       File savePath= new File(results[selectedIndex].getName());
		       saveDialog.setSelectedFile(savePath);
		       int returnVal = saveDialog.showSaveDialog(this);
		       if (returnVal == JFileChooser.APPROVE_OPTION)
		       {
		    	   savePath = saveDialog.getSelectedFile();
			       new VisibleContentRequest(getParentWindow(panel), results[selectedIndex],savePath);
		       } 
		       else 
		       {
			       System.out.println("save canceled");
		       }
		   }
	    }
	}
	public Frame getParentWindow(Component compOnApplet)  
	{ 
		Container c = compOnApplet.getParent(); 
		while (c != null) 
		{ 
			if (c instanceof Frame) 
				return (Frame) c; 
			c = c.getParent(); 
		} 
		return null; 
	}

	//过滤其他对等点返回的广告,在列表中显示匹配的广告
	protected void updateResults(ContentAdvertisement[] results) 
	{
	    this.results = results;
	    resultList.removeAll();  //清空以前的结果
	    for (int i=0; i<results.length; i++)  //将更新的结果写入列表
	    {
		    resultList.add(results[i].getName());
	    }
	}
 }

    class VisibleContentRequest extends GetContentRequest implements ActionListener
    {
    	JDialog dialog;
	    JProgressBar statusBar = new JProgressBar();
	    JButton cancelBtn = new JButton("取消");

	    public VisibleContentRequest(Frame parent, ContentAdvertisement source, File destination)
	    {
	        super(StartService.getNetPeerGroup(), source, destination);	    
	        dialog = new JDialog(parent, "正在下载"+destination.getName());	    
	        dialog.setSize(240, 80);
	        dialog.setLocation(400,400);
	        statusBar.setStringPainted(true);    
	        dialog.getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER));
	        dialog.getContentPane().add(statusBar);	    
	        cancelBtn.addActionListener(this);
	        dialog.getContentPane().add(cancelBtn);
	        dialog.setVisible(true);
	    }

	    public void actionPerformed(ActionEvent ae) 
	    {
	    	if(ae.getSource() == cancelBtn)  //取消下载事件
	        {
	    	    cancel();
		        System.out.println("取消" + getFile()+ "下载");
		        dialog.dispose();
		        dialog = null;
	        }
	    }

	   public void notifyDone()   //下载完成时调用该方法
	   {
	       System.out.println(getFile()+"下载完成");
	       dialog.dispose();
	       dialog = null;
	   }

	
	   public void notifyFailure()   //下载失败时调用该方法
	   {
	       System.out.println(getFile()+"下载失败");
	   }

	   public void notifyUpdate(int percentage) 
	   {
	       statusBar.setValue(percentage);
	   }
   }

   class MyListRequest extends ListContentRequest 
   {
	   DownSubPanel DownSubPanel = null;
	   public MyListRequest(PeerGroup group, String inSubStr,DownSubPanel DownSubPanel) 
	   {
		   super(group, inSubStr);
	       this.DownSubPanel = DownSubPanel;
	   }

	   public void notifyMoreResults() //当获取更多结果时调用该函数
	   {
		   if (DownSubPanel != null) 
		   {
			   DownSubPanel.updateResults(getResults());
		       /*getResults()返回当前到达的所有ContentAdvertisements,
		        * 而不仅仅是最后一个list response*/
	       }
	   }
	   /*
	   public void searchAllSharedContent()
	   {
		   StartService.getNetPeerGroup().getDiscoveryService().getRemoteAdvertisements (null,
		                                       DiscoveryService.ADV,
		                                       null,
		                                       null,
		                                       10,
		                                       this);
       }
	   */
 }

}

⌨️ 快捷键说明

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