package com.glitchcog.fontificator.gui.chat; import java.awt.Point; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionListener; import javax.swing.JFrame; import javax.swing.event.MouseInputListener; import com.glitchcog.fontificator.gui.controls.ControlWindow; /** * Mouse Listeners for the Chat Window, also handles clearing out username cases since it needs to store a reference to * the Control Window anyway * * @author Matt Yanos */ public class ChatMouseListeners implements MouseMotionListener, MouseInputListener { /** * The offset into the window where the mouse button was pressed, to offset the window location when it is dragged * around. */ private Point pressOffset = new Point(); /** * Whether the mouse button is currently pressed */ private boolean pressed; /** * Reference to the chat window */ private JFrame chatWindow; /** * Reference to the control window */ private ControlWindow ctrlWindow; public ChatMouseListeners(JFrame chatWindow, ControlWindow ctrlWindow) { this.chatWindow = chatWindow; this.ctrlWindow = ctrlWindow; } @Override public void mouseDragged(MouseEvent e) { int x = e.getLocationOnScreen().x - pressOffset.x; int y = e.getLocationOnScreen().y - pressOffset.y; chatWindow.setLocation(x, y); } @Override public void mouseMoved(MouseEvent e) { } @Override public void mouseClicked(MouseEvent e) { if (e.getButton() == MouseEvent.BUTTON1) { ctrlWindow.setVisible(true); } } @Override public void mousePressed(MouseEvent e) { if (e.getButton() == MouseEvent.BUTTON1) { if (!pressed) { pressOffset.x = e.getX(); pressOffset.y = e.getY(); pressed = true; } } } @Override public void mouseReleased(MouseEvent e) { pressed = false; } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseExited(MouseEvent e) { } /** * Clear out the username casing cache. This is shoehorned into this class because it already has a reference to the * control window. */ public void clearUsernameCases() { ctrlWindow.clearUsernameCases(); } }