/** * THIS IS CREATED BY tom_mai78101. PLEASE GIVE CREDIT FOR WORKING ON A CLONE. * * ALL WORKS COPYRIGHTED TO The Pokémon Company and Nintendo. I REPEAT, THIS IS A CLONE. * * YOU MAY NOT SELL COMMERCIALLY, OR YOU WILL BE PROSECUTED BY The Pokémon Company AND Nintendo. * * THE CREATOR IS NOT LIABLE FOR ANY DAMAGES DONE. FOLLOW LOCAL LAWS, BE RESPECTFUL, AND HAVE A GOOD DAY! * */ package editor; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; public class EditorInput implements MouseListener, MouseMotionListener { public int mouseX, mouseY; public int offsetX, offsetY; public int oldX, oldY; public int drawingX, drawingY; private boolean panning; private boolean drawing; private LevelEditor editor; public EditorInput(LevelEditor editor) { this.editor = editor; // TODO: Dispatch event to Canvas other than Control Panel. Events must be separated from each other. } public boolean isDragging() { return panning; } public boolean isDrawing() { return drawing; } @Override public void mouseDragged(MouseEvent event) { int button1 = MouseEvent.BUTTON1_DOWN_MASK; int button3 = MouseEvent.BUTTON3_DOWN_MASK; if ((event.getModifiersEx() & (button1 | button3)) == button1) { drawing = true; } else if ((event.getModifiersEx() & (button1 | button3)) == button3) { panning = true; } mouseX = event.getX(); mouseY = event.getY(); if (drawing) { drawingX = mouseX; drawingY = mouseY; } else if (panning) { offsetX = oldX - mouseX; offsetY = oldY - mouseY; } editor.validate(); } @Override public void mouseMoved(MouseEvent event) { drawing = false; mouseX = event.getX(); mouseY = event.getY(); editor.validate(); } @Override public void mouseClicked(MouseEvent event) { mouseX = event.getX(); mouseY = event.getY(); if (event.getButton() == MouseEvent.BUTTON1) { drawing = true; panning = false; } if (drawing) { drawingX = mouseX; drawingY = mouseY; } editor.validate(); } @Override public void mouseEntered(MouseEvent event) { drawing = false; mouseX = event.getX(); mouseY = event.getY(); editor.validate(); } @Override public void mouseExited(MouseEvent event) { drawing = false; mouseX = event.getX(); mouseY = event.getY(); editor.validate(); } @Override public void mousePressed(MouseEvent event) { mouseX = event.getX(); mouseY = event.getY(); if (event.getButton() == MouseEvent.BUTTON1) { drawing = true; panning = false; drawingX = mouseX; drawingY = mouseY; } else if (event.getButton() == MouseEvent.BUTTON3) { panning = true; drawing = false; oldX = mouseX + offsetX; oldY = mouseY + offsetY; } else { drawing = panning = false; } editor.validate(); } @Override public void mouseReleased(MouseEvent event) { if (drawing){ drawingX = event.getX(); drawingY = event.getY(); } else if (panning){ mouseX = event.getX(); mouseY = event.getY(); offsetX = oldX - mouseX; offsetY = oldY - mouseY; } drawing = false; panning = false; editor.validate(); } public void forceCancelDrawing() { drawing = false; panning = false; } }