Advertisement
AyaAbouzeid

Untitled

Oct 27th, 2016
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.67 KB | None | 0 0
  1. package eg.edu.alexu.csd.oop.VectorDrawing;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Graphics;
  5. import java.awt.Graphics2D;
  6. import java.awt.Image;
  7. import java.awt.RenderingHints;
  8. import java.awt.event.MouseAdapter;
  9. import java.awt.event.MouseEvent;
  10. import java.awt.event.MouseMotionAdapter;
  11. import java.awt.print.Pageable;
  12. import java.util.ArrayList;
  13. import javax.naming.AuthenticationNotSupportedException;
  14. import javax.swing.JComponent;
  15. import javax.swing.*;
  16. import java.awt.color.*;
  17.  
  18.  
  19. public class Sketch extends JComponent {
  20. private Image image;
  21. public Graphics2D graphic;
  22. int OldX, OldY, CurrentX, CurrentY,
  23. topLeftX, topLeftY;
  24. private int FirstX, FirstY, SecondX, SecondY, ThirdX, ThirdY;
  25. ArrayList<Shape> ShapeAdded = new ArrayList<Shape>();
  26. ArrayList<ArrayList> pageLookLike = new ArrayList<ArrayList>();
  27. boolean lineClicked = false, freeClicked = true, squareClicked = false,
  28. rectangleClicked = false, triangleClicked = false, circleClicked = false,
  29. ellipseClicked = false, triangleClicked1 = false,
  30. triangleClicked2 = false, done = false, firstPoint = false,
  31. secondPoint = false, threePoint = false, clearSelected = false;
  32. Color c;
  33.  
  34. public Sketch() {
  35. setDoubleBuffered(false);
  36.  
  37. addMouseListener(new MouseAdapter() {
  38.  
  39. @Override
  40. public void mousePressed(final MouseEvent e) {
  41. OldX = e.getX();
  42. OldY = e.getY();
  43. if (triangleClicked && !done && !secondPoint && !threePoint
  44. && !firstPoint) {
  45. FirstX = e.getX();
  46. FirstY = e.getY();
  47. firstPoint = true;
  48. // triangleClicked2 = true ;
  49. }
  50. if (triangleClicked2 && firstPoint && secondPoint && triangleClicked) {
  51. firstPoint = false;
  52. done = false;
  53. secondPoint = false;
  54. triangleClicked2 = false;
  55. ThirdX = e.getX();
  56. ThirdY = e.getY();
  57. graphic.drawLine(SecondX, SecondY, ThirdX, ThirdY);
  58. repaint();
  59. graphic.drawLine(FirstX, FirstY, ThirdX, ThirdY);
  60. repaint();
  61. }
  62. }
  63.  
  64. public void mouseReleased(final MouseEvent e) {
  65. // TODO Auto-generated method stub
  66. CurrentX = e.getX();
  67. CurrentY = e.getY();
  68.  
  69. if (lineClicked) {
  70. Line line = new Line(OldX, OldY, CurrentX, CurrentY);
  71. line.draw(graphic);
  72. ShapeAdded.add(line);
  73. pageLookLike.add(ShapeAdded);
  74. repaint();
  75. }
  76.  
  77. if (squareClicked) {
  78.  
  79. if(OldX < CurrentX)
  80. topLeftX = OldX;
  81. else
  82. topLeftX = CurrentX;
  83. if(OldY < CurrentY)
  84. topLeftY = OldY;
  85. else
  86. topLeftY = CurrentY;
  87.  
  88. Rectangle rectangle = new Rectangle(topLeftX, topLeftY, Math.abs(CurrentX - OldX),
  89. Math.abs(CurrentX - OldX));
  90. rectangle.draw(graphic);
  91. ShapeAdded.add(rectangle);
  92. pageLookLike.add(ShapeAdded);
  93. repaint();
  94.  
  95. }
  96. if (rectangleClicked) {
  97.  
  98. Rectangle rectangle = new Rectangle(OldX, OldY, CurrentX - OldX,
  99. CurrentY - OldY);
  100. rectangle.draw(graphic);
  101. ShapeAdded.add(rectangle);
  102. pageLookLike.add(ShapeAdded);
  103. repaint();
  104. }
  105. if (ellipseClicked) {
  106. Ellipse oval = new Ellipse(OldX, OldY, CurrentX - OldX, CurrentY
  107. - OldY);
  108. oval.draw(graphic);
  109. ShapeAdded.add(oval);
  110. pageLookLike.add(ShapeAdded);
  111. repaint();
  112.  
  113. }
  114. if (circleClicked) {
  115. Circle circle = new Circle(OldX, OldY, CurrentX - OldX, CurrentX
  116. - OldX);
  117. circle.draw(graphic);
  118. ShapeAdded.add(circle);
  119. pageLookLike.add(ShapeAdded);
  120. repaint();
  121.  
  122. }
  123. if (triangleClicked) {
  124. if (!done && !secondPoint && !threePoint && firstPoint) {
  125. SecondX = e.getX();
  126. SecondY = e.getY();
  127. if (!((SecondX == FirstX) && (SecondY == FirstY))) {
  128. secondPoint = true;
  129. triangleClicked2 = true;
  130. done = true;
  131. }
  132. graphic.drawLine(FirstX, FirstY, SecondX, SecondY);
  133. }
  134. repaint();
  135.  
  136. }
  137. }
  138. });
  139.  
  140. addMouseMotionListener(new MouseMotionAdapter() {
  141.  
  142. @Override
  143. public void mouseDragged(final MouseEvent e) {
  144. CurrentX = e.getX();
  145. CurrentY = e.getY();
  146. if (graphic != null && freeClicked && !lineClicked) {
  147. graphic.drawLine(OldX, OldY, CurrentX, CurrentY);
  148. repaint();
  149. OldX = CurrentX;
  150. OldY = CurrentY;
  151. }
  152. if (graphic != null && lineClicked) {
  153. clear();
  154. if (ShapeAdded.size() == 0) {
  155. new Line(OldX, OldY, CurrentX, CurrentY).draw(graphic);
  156.  
  157. }
  158. else
  159. for (int i = 0; i < ShapeAdded.size(); i++) {
  160. ShapeAdded.get(i).draw(graphic);
  161. new Line(OldX, OldY, CurrentX, CurrentY).draw(graphic);
  162. }
  163. if (image == null) {
  164. image = createImage(getSize().width, getSize().height);
  165. graphic = (Graphics2D) image.getGraphics();
  166. graphic.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
  167. RenderingHints.VALUE_ANTIALIAS_ON);
  168. }
  169. }
  170. repaint();
  171.  
  172. repaint();
  173. if (graphic != null && rectangleClicked) {
  174. clear();
  175. if (ShapeAdded.size() == 0) {
  176. new Rectangle(OldX, OldY, CurrentX - OldX, CurrentY - OldY).draw(graphic);
  177.  
  178. }
  179. else
  180. for (int i = 0; i < ShapeAdded.size(); i++) {
  181. ShapeAdded.get(i).draw(graphic);
  182. new Rectangle(OldX, OldY, CurrentX - OldX, CurrentY - OldY).draw(graphic);
  183. }
  184. if (image == null) {
  185. image = createImage(getSize().width, getSize().height);
  186. graphic = (Graphics2D) image.getGraphics();
  187. graphic.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
  188. RenderingHints.VALUE_ANTIALIAS_ON);
  189. }
  190. }
  191. repaint();
  192.  
  193. if (graphic != null && ellipseClicked) {
  194. clear();
  195. if (ShapeAdded.size() == 0) {
  196. new Ellipse(OldX, OldY, CurrentX - OldX, CurrentY - OldY).draw(graphic);
  197.  
  198. }
  199. else
  200. for (int i = 0; i < ShapeAdded.size(); i++) {
  201. ShapeAdded.get(i).draw(graphic);
  202. new Ellipse(OldX, OldY, CurrentX - OldX, CurrentY - OldY).draw(graphic);
  203. }
  204. if (image == null) {
  205. image = createImage(getSize().width, getSize().height);
  206. graphic = (Graphics2D) image.getGraphics();
  207. graphic.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
  208. RenderingHints.VALUE_ANTIALIAS_ON);
  209. }
  210. }
  211. repaint();
  212. if (graphic != null && circleClicked) {
  213. clear();
  214. if (ShapeAdded.size() == 0) {
  215. new Circle(OldX, OldY, CurrentX - OldX, CurrentX - OldX).draw(graphic);
  216.  
  217. } else
  218. for (int i = 0; i < ShapeAdded.size(); i++) {
  219. ShapeAdded.get(i).draw(graphic);
  220. new Circle(OldX, OldY, CurrentX - OldX, CurrentX - OldX).draw(graphic);
  221. }
  222. if (image == null) {
  223. image = createImage(getSize().width, getSize().height);
  224. graphic = (Graphics2D) image.getGraphics();
  225. graphic.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
  226. RenderingHints.VALUE_ANTIALIAS_ON);
  227. }
  228. }
  229. repaint();
  230. }
  231.  
  232. });
  233. }
  234.  
  235. protected void paintComponent(final Graphics e) {
  236. if (image == null) {
  237. image = createImage(getSize().width, getSize().height);
  238. graphic = (Graphics2D) image.getGraphics();
  239. graphic.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
  240. RenderingHints.VALUE_ANTIALIAS_ON);
  241. clear();
  242.  
  243. }
  244. e.drawImage(image, 0, 0, null);
  245. }
  246.  
  247. public void clear() {
  248. if(clearSelected){
  249. ShapeAdded = new ArrayList<Shape>();
  250. pageLookLike.add(ShapeAdded);
  251. clearSelected = false;
  252. }
  253. graphic.setPaint(Color.white);
  254. graphic.fillRect(0, 0, getSize().width, getSize().height);
  255. graphic.setPaint(Color.black);
  256. repaint();
  257. }
  258. public void undo(){
  259. if( !(pageLookLike.size() == 0)){
  260.  
  261.  
  262. }
  263. }
  264. public void redo(){
  265.  
  266.  
  267. }
  268. public void changecolor() {
  269. graphic.setPaint(c);
  270. repaint();
  271. }
  272.  
  273. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement