package com.iailab.netsdk.demo.frame.TargetRecognition;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.util.concurrent.ExecutionException;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.SwingWorker;

import com.iailab.netsdk.common.PaintPanel;
import com.iailab.netsdk.common.Res;
import com.iailab.netsdk.demo.module.TargetRecognitionModule;
import com.iailab.netsdk.lib.ToolKits;

public class DownloadPictureDialog extends JDialog{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public DownloadPictureDialog() {
	    setTitle(Res.string().getDownLoadPicture());
	    setLayout(new BorderLayout());
	    setModal(true);  
	    pack();
	    setSize(380, 500);
	    setResizable(false);
	    setLocationRelativeTo(null);
	    setDefaultCloseOperation(DISPOSE_ON_CLOSE);   // 释放窗体
	    
	    JLabel picPathLabel = new JLabel(Res.string().getPicturePath()+":", JLabel.CENTER);
	    picPathTextField = new JTextField();
	    downloadBth = new JButton(Res.string().getDownLoadPicture());
	    
	    picPathTextField.setPreferredSize(new Dimension(180, 20));
	    downloadBth.setPreferredSize(new Dimension(80, 20));
	    
	    paintPanel = new PaintPanel();
	    paintPanel.setPreferredSize(new Dimension(360, 450));
	    
	    setLayout(new FlowLayout());
	    add(picPathLabel);
	    add(picPathTextField);
	    add(downloadBth);
	    add(paintPanel);
	    
	    downloadBth.addActionListener(new ActionListener() {	
			@Override
			public void actionPerformed(ActionEvent arg0) {
				SwingUtilities.invokeLater(new Runnable() {				
					@Override
					public void run() {
						paintPanel.setOpaque(true);
						paintPanel.repaint();
						downloadBth.setEnabled(false);
					}
				});
				
				downloadPicture();
			}
		});
	    
	    addWindowListener(new WindowAdapter() {
	    	public void windowClosing(WindowEvent e) {
	    		dispose();
	    	}
	    });
	}
	
	private void downloadPicture() {
		new SwingWorker<Boolean, Integer>() {	
			String szFileName = "";   		       // 要下载的图片路径
			String pszFileDst = "";    			   // 保存图片的路径
			
			@Override
			protected Boolean doInBackground() {
				if(picPathTextField.getText().isEmpty()) {
					JOptionPane.showMessageDialog(null, Res.string().getEnterPicturePath(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
					return false;
				}
				
				szFileName = picPathTextField.getText();    
				pszFileDst = "./person.jpg";    			  
				
				File file = new File(pszFileDst);
				if(file.exists()) {
					file.delete();
				}
				
				if(!TargetRecognitionModule.downloadPersonPic(szFileName, pszFileDst)) {
					return false;
				}

				return true;
			}	
			
			@Override
			protected void done() {
				if(picPathTextField.getText().isEmpty()) {
					return;
				}
				
				try {
					if(get()) {				
						// 下载成功后,面板上显示下载的图片
						ToolKits.openPictureFile(pszFileDst, paintPanel);	
					} else {
						JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
					}
				} catch (HeadlessException e) {
					e.printStackTrace();
				} catch (InterruptedException e) {
					e.printStackTrace();
				} catch (ExecutionException e) {
					e.printStackTrace();
				}
				downloadBth.setEnabled(true);
			}
		}.execute();
	}
	
	private JTextField picPathTextField;
	private PaintPanel paintPanel;
	private JButton downloadBth;
}