1 package prefuse.controls; 2 3 import java.awt.Cursor ; 4 import java.awt.Point ; 5 import java.awt.event.MouseEvent ; 6 7 import prefuse.Display; 8 import prefuse.util.ui.UILib; 9 10 11 22 public class RotationControl extends ControlAdapter { 23 24 private Point down = new Point (); 25 private double baseAngle = 0; private int m_button; 28 32 public RotationControl() { 33 this(Control.LEFT_MOUSE_BUTTON); 34 } 35 36 43 public RotationControl(int mouseButton) { 44 m_button = mouseButton; 45 } 46 47 50 public void mousePressed(MouseEvent e) { 51 if ( UILib.isButtonPressed(e, m_button) ) { 52 Display display = (Display)e.getComponent(); 53 display.setCursor( 54 Cursor.getPredefinedCursor(Cursor.E_RESIZE_CURSOR)); 55 down.setLocation(e.getPoint()); 56 baseAngle = Double.NaN; 57 } 58 } 59 60 63 public void mouseDragged(MouseEvent e) { 64 if ( UILib.isButtonPressed(e, m_button) ) { 65 int dy = e.getY() - down.y; 66 int dx = e.getX() - down.x; 67 double angle = Math.atan2(dy, dx); 68 69 if ( !Double.isNaN(baseAngle) ) { 71 Display display = (Display)e.getComponent(); 72 display.rotate(down, angle-baseAngle); 73 } 74 baseAngle = angle; 75 } 76 } 77 78 81 public void mouseReleased(MouseEvent e) { 82 if ( UILib.isButtonPressed(e, m_button) ) { 83 e.getComponent().setCursor(Cursor.getDefaultCursor()); 84 } 85 } 86 87 } | Popular Tags |