/** * Javier Abell�n, 24 Mayo 2006 * * Clase encargada de arrastrar un trazo cuando se arrastra el rat�n. */ package gafetes.modules.sign; import java.awt.Component; import java.awt.geom.Point2D; import java.util.LinkedList; /** * Arrastra uno de los trazos dibujados cuando se arrastra el rat�n. * @author javaapplication4 */ public class ArrastraTrazo implements InterfaceArrastrarRaton { /** Lista de trazos dibujados */ private LinkedList<Trazo> trazos; /** Lienzo en el que se dibuja */ private Component lienzo; /** Indice en la lista de trazos del trazo que se est� arrastrando */ private int trazoArrastrado; /** * Construye una instancia de esta clase, guardando los par�metros que se * le pasan. * @param trazos Lista de trazos dibujados * @param lienzo Lienzo en el que est�n dibujados los trazos. */ public ArrastraTrazo(LinkedList<Trazo> trazos, Component lienzo) { this.trazos = trazos; this.lienzo = lienzo; } /** * Busca el trazo m�s cercano a la posici�n x,y que se le pasa y lo marca * como trazo para arrastrar. */ public void comienzaArrastra(int x, int y) { trazoArrastrado = 0; if (trazos.size()==0) return; double distancia = trazos.get(0).dameDistanciaMinima(x, y); for (int i = 1; i < trazos.size(); i++) { double distanciaAux = trazos.get(i).dameDistanciaMinima(x, y); if (distanciaAux < distancia) { distancia = distanciaAux; trazoArrastrado = i; } } } /** * Arrastra el trazo marcado como trazo para arrastrar y lo desplaza en * x una distancia xNueva - xAntigua y en y una distnacia yNueva - yAntigua */ public void arrastra(int xAntigua, int yAntigua, int xNueva, int yNueva) { if (trazos.size()==0) return; Trazo trazo = trazos.get(trazoArrastrado); for (int i = 0; i < trazo.getNumeroPuntos(); i++) { Point2D punto = trazo.getPunto(i); punto.setLocation(punto.getX() + (xNueva - xAntigua), punto.getY() + (yNueva - yAntigua)); } lienzo.repaint(); } /** No hace nada */ public void finalizaArrastra(int x, int y) { } }