00001 package org.swtchart.ext.internal; 00002 00003 import org.eclipse.swt.graphics.GC; 00004 import org.eclipse.swt.graphics.Point; 00005 00009 public class SelectionRectangle { 00010 00012 private Point startPoint; 00013 00015 private Point endPoint; 00016 00025 public void setStartPoint(int x, int y) { 00026 startPoint = new Point(x, y); 00027 } 00028 00037 public void setEndPoint(int x, int y) { 00038 endPoint = new Point(x, y); 00039 } 00040 00046 public Point getHorizontalRange() { 00047 if (startPoint == null || endPoint == null) { 00048 return null; 00049 } 00050 00051 return new Point(startPoint.x, endPoint.x); 00052 } 00053 00059 public Point getVerticalRange() { 00060 if (startPoint == null || endPoint == null) { 00061 return null; 00062 } 00063 00064 return new Point(startPoint.y, endPoint.y); 00065 } 00066 00072 public boolean isDisposed() { 00073 return startPoint == null; 00074 } 00075 00079 public void dispose() { 00080 startPoint = null; 00081 endPoint = null; 00082 } 00083 00090 public void draw(GC gc) { 00091 if (startPoint == null || endPoint == null) { 00092 return; 00093 } 00094 00095 int minX; 00096 int maxX; 00097 if (startPoint.x > endPoint.x) { 00098 minX = endPoint.x; 00099 maxX = startPoint.x; 00100 } else { 00101 minX = startPoint.x; 00102 maxX = endPoint.x; 00103 } 00104 00105 int minY; 00106 int maxY; 00107 if (startPoint.y > endPoint.y) { 00108 minY = endPoint.y; 00109 maxY = startPoint.y; 00110 } else { 00111 minY = startPoint.y; 00112 maxY = endPoint.y; 00113 } 00114 00115 gc.drawRectangle(minX, minY, maxX - minX, maxY - minY); 00116 } 00117 00118 }