package com.kartoflane.superluminal2.core;
import org.eclipse.swt.events.MouseEvent;
import com.kartoflane.superluminal2.components.interfaces.MouseInputListener;
import com.kartoflane.superluminal2.tools.Tool;
/**
* Listens for mouse-related events and then delegates them to the currently selected tool.
*
* @author kartoFlane
*
*/
public class MouseInputDispatcher implements MouseInputListener {
private static MouseInputDispatcher instance = null;
private Tool currentTool = null;
public MouseInputDispatcher() {
instance = this;
}
public void setCurrentTool(Tool tool) {
currentTool = tool;
}
public static MouseInputDispatcher getInstance() {
return instance;
}
@Override
public void mouseDown(MouseEvent e) {
if (e.button == 1)
Manager.leftMouseDown = true;
if (e.button == 2)
Manager.midMouseDown = true;
if (e.button == 3)
Manager.rightMouseDown = true;
if (currentTool != null)
currentTool.mouseDown(e);
}
@Override
public void mouseUp(MouseEvent e) {
if (e.button == 1)
Manager.leftMouseDown = false;
if (e.button == 2)
Manager.midMouseDown = false;
if (e.button == 3)
Manager.rightMouseDown = false;
if (currentTool != null)
currentTool.mouseUp(e);
}
@Override
public void mouseMove(MouseEvent e) {
if (currentTool != null)
currentTool.mouseMove(e);
}
@Override
public void mouseDoubleClick(MouseEvent e) {
if (currentTool != null)
currentTool.mouseDoubleClick(e);
}
@Override
public void mouseEnter(MouseEvent e) {
if (currentTool != null)
currentTool.mouseEnter(e);
}
@Override
public void mouseExit(MouseEvent e) {
if (currentTool != null)
currentTool.mouseExit(e);
}
@Override
public void mouseHover(MouseEvent e) {
if (currentTool != null)
currentTool.mouseHover(e);
}
}