package com.opendoorlogistics.studio.components.map;
import java.awt.Cursor;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import javax.swing.SwingUtilities;
import javax.swing.event.MouseInputAdapter;
import com.opendoorlogistics.api.standardcomponents.map.MapApi;
import com.opendoorlogistics.api.standardcomponents.map.MapMode;
public class AbstractMapMode extends MouseInputAdapter implements MapMode{
private Point dragStartPoint;
private Point dragEndPoint;
private boolean isDragging;
@Override
public void mouseReleased(MouseEvent e) {
if (SwingUtilities.isLeftMouseButton(e)) {
dragStartPoint = null;
dragEndPoint = null;
isDragging = false;
}
}
@Override
public void mouseDragged(MouseEvent evt) {
if (isDragging) {
dragEndPoint = evt.getPoint();
}
}
@Override
public void mousePressed(MouseEvent e) {
if (SwingUtilities.isLeftMouseButton(e)) {
dragStartPoint = e.getPoint();
dragEndPoint = e.getPoint();
isDragging = true;
}
}
public Point getDragStartPoint() {
return dragStartPoint;
}
public Point getDragEndPoint() {
return dragEndPoint;
}
public boolean isDragging(){
return isDragging;
}
@Override
public void paint(MapApi api,Graphics2D g) {
// TODO Auto-generated method stub
}
@Override
public void onEnterMode(MapApi api) {
// TODO Auto-generated method stub
}
@Override
public void onExitMode(MapApi api) {
// TODO Auto-generated method stub
}
public void setDragStartPoint(Point dragStartPoint) {
this.dragStartPoint = dragStartPoint;
}
public void setDragEndPoint(Point dragEndPoint) {
this.dragEndPoint = dragEndPoint;
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public Cursor getCursor() {
// TODO Auto-generated method stub
return null;
}
protected Rectangle getDragRectangle() {
if (isDragging) {
int x1 = (int) Math.min(dragStartPoint.getX(), dragEndPoint.getX());
int y1 = (int) Math.min(dragStartPoint.getY(), dragEndPoint.getY());
int x2 = (int) Math.max(dragStartPoint.getX(), dragEndPoint.getX());
int y2 = (int) Math.max(dragStartPoint.getY(), dragEndPoint.getY());
return new Rectangle(x1, y1, Math.max(x2 - x1, 1), Math.max(y2 - y1, 1));
}
return null;
}
@Override
public void onObjectsChanged(MapApi api) {
// TODO Auto-generated method stub
}
}