package Window;
import java.util.HashMap;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.KeyListener;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.MouseMoveListener;
import org.eclipse.swt.graphics.Cursor;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.widgets.Composite;
import OtherTools.Syringe;
import Resource.ResourceManager;
public class EventHandlerForCursor implements KeyListener, MouseMoveListener {
private static final String DefaultResourcePath = "/Resource/Image/";
private Composite parent;
private HashMap<CursorT, Cursor> cursorMap;
enum CursorT {
Default, Syringe, Selectable, Stamp, CameraMove
};
public EventHandlerForCursor(Composite parent) {
this.parent = parent;
cursorMap = new HashMap<CursorT, Cursor>();
loadCursorImage();
}
private void loadCursorImage() {
cursorMap.put(
CursorT.Syringe,
new Cursor(parent.getDisplay(),
ResourceManager
.getInstance()
.getImage(
parent.getDisplay(),
DefaultResourcePath
+ "active_colordropper.png")
.getImageData(), 0, 0));
cursorMap.put(
CursorT.Stamp,
new Cursor(parent.getDisplay(), ResourceManager
.getInstance()
.getImage(parent.getDisplay(),
DefaultResourcePath + "stamp.png")
.getImageData(), 0, 0));
cursorMap.put(
CursorT.CameraMove,
new Cursor(parent.getDisplay(), ResourceManager
.getInstance()
.getImage(parent.getDisplay(),
DefaultResourcePath + "cameraMove.png")
.getImageData(), 0, 0));
}
@Override
public void mouseMove(MouseEvent arg0) {
if ((arg0.stateMask & SWT.SHIFT) != 0)
parent.setCursor(cursorMap.get(CursorT.CameraMove));
else {
if (Syringe.getInstance().isActivated())
if (Syringe.getInstance().getColorCode() == null)
parent.setCursor(cursorMap.get(CursorT.Syringe));
else
parent.setCursor(cursorMap.get(CursorT.Stamp));
else
parent.setCursor(null);
}
}
@Override
public void keyReleased(KeyEvent arg0) {
if ((arg0.stateMask & SWT.SHIFT) != 0 && arg0.keyCode == SWT.SHIFT)
parent.setCursor(null);
if ((arg0.stateMask & SWT.SHIFT) == 0)
parent.setCursor(null);
}
@Override
public void keyPressed(KeyEvent arg0) {
if (arg0.keyCode == SWT.SHIFT)
parent.setCursor(cursorMap.get(CursorT.CameraMove));
}
}