package com.oim.swing.function.ui.remote;

import java.awt.AWTEvent;
import java.awt.CardLayout;
import java.awt.Toolkit;
import java.awt.event.AWTEventListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.MouseWheelListener;

import javax.swing.Icon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.UIManager;

/**
 * @author: XiaHui
 * @date: 2017年4月11日 下午5:17:30
 */
public class RemoteControlFrame extends JFrame {

	private static final long serialVersionUID = 1L;

	JPanel panel = new JPanel();
	JLabel label = new JLabel();
	JScrollPane scrollPane = new JScrollPane();
	KeyListener keyListener = null;

	public RemoteControlFrame() {
		initComponent();
		initEvent();
	}

	private void initComponent() {
		this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
		this.setTitle("远程控制");
		this.setSize(900, 600);
		this.setLayout(new CardLayout());
		this.add(scrollPane);

		scrollPane.setViewportView(panel);
		//panel.setLayout(new CardLayout());
		panel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
		panel.add(label);
		// label.setText("hhhh");
	}

	private void initEvent() {

		class AWTEventListenerImpl implements AWTEventListener {
			@Override
			public void eventDispatched(AWTEvent event) {
				if (event.getClass() == KeyEvent.class) {
					// 被处理的事件是键盘事件.
					KeyEvent keyEvent = (KeyEvent) event;
					if (keyEvent.getID() == KeyEvent.KEY_PRESSED) {
						// 按下时你要做的事情
						keyPressed(keyEvent);
					} else if (keyEvent.getID() == KeyEvent.KEY_RELEASED) {
						// 放开时你要做的事情
						keyReleased(keyEvent);
					}
				}
			}

		}

		Toolkit tk = Toolkit.getDefaultToolkit();  
        tk.addAWTEventListener(new AWTEventListenerImpl(), AWTEvent.KEY_EVENT_MASK);  
        label.addMouseListener(new MouseAdapter() {
        	 public void mouseClicked(MouseEvent e) {
        		 panel.requestFocus();
        	 }
		});
	}

	private void keyPressed(KeyEvent e) {
		if (null != keyListener) {
			keyListener.keyPressed(e);
		}
	}

	private void keyReleased(KeyEvent e) {
		if (null != keyListener) {
			keyListener.keyReleased(e);
		}
	}

	public void setIcon(Icon icon) {
		label.setIcon(icon);
	}

	public void setKeyListener(KeyListener l) {
		keyListener = l;
		// this.addKeyListener(l);
	}

	public void setMouseListener(MouseListener l) {
		label.addMouseListener(l);
	}

	public void setMouseMotionListener(MouseMotionListener l) {
		label.addMouseMotionListener(l);
	}

	public void setMouseWheelListener(MouseWheelListener l) {
		label.addMouseWheelListener(l);
	}

	public static void main(String args[]) {
		try {
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		java.awt.EventQueue.invokeLater(new Runnable() {

			@Override
			public void run() {
				RemoteControlFrame frame = new RemoteControlFrame();
				frame.setVisible(true);
			}
		});
	}
	// this.addMouseListener(new MouseListener(){
	//
	// @Override
	// public void mouseClicked(MouseEvent e) {
	// // TODO Auto-generated method stub
	//
	// }
	//
	// @Override
	// public void mousePressed(MouseEvent e) {
	// System.out.println("mousePressed");
	//
	// }
	//
	// @Override
	// public void mouseReleased(MouseEvent e) {
	// // TODO Auto-generated method stub
	//
	// }
	//
	// @Override
	// public void mouseEntered(MouseEvent e) {
	// // TODO Auto-generated method stub
	//
	// }
	//
	// @Override
	// public void mouseExited(MouseEvent e) {
	// // TODO Auto-generated method stub
	//
	// }});
}