1 31 32 package org.antlr.xjlib.appkit.gview.utils; 33 34 import org.antlr.xjlib.appkit.gview.base.Vector2D; 35 36 import java.awt.*; 37 38 public class GMagnetic { 39 40 public static final int HORIZONTAL = 0; 41 public static final int VERTICAL = 1; 42 43 private int kind = HORIZONTAL; 44 private double factor = 0; 45 private boolean visible = false; 46 47 public static GMagnetic createHorizontal(double factor) { 48 GMagnetic m = new GMagnetic(); 49 m.kind = HORIZONTAL; 50 m.factor = factor; 51 return m; 52 } 53 54 public static GMagnetic createVertical(double factor) { 55 GMagnetic m = new GMagnetic(); 56 m.kind = VERTICAL; 57 m.factor = factor; 58 return m; 59 } 60 61 public void setVisible(boolean flag) { 62 this.visible = flag; 63 } 64 65 public boolean isVisible() { 66 return visible; 67 } 68 69 public void showAndAjust(Vector2D position, Dimension realSize) { 70 setVisible(false); 71 72 if(kind == HORIZONTAL) { 73 if(Math.abs(position.y-realSize.height*factor)<5) { 74 position.y = realSize.height*factor; 75 setVisible(true); 76 } 77 } else { 78 if(Math.abs(position.x-realSize.width*factor)<5) { 79 position.x = realSize.width*factor; 80 setVisible(true); 81 } 82 } 83 } 84 85 public void draw(Graphics2D g2d, Dimension realSize) { 86 int middleV = (int)(realSize.height*factor); 87 int middleH = (int)(realSize.width*factor); 88 89 if(kind == HORIZONTAL) { 90 g2d.drawLine(0, middleV, realSize.width, middleV); 91 } else { 92 g2d.drawLine(middleH, 0, middleH, realSize.height); 93 } 94 95 } 96 } 97 | Popular Tags |