Advertisement
sixshoot95

Pikaso_with_offset

Jan 12th, 2017
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.23 KB | None | 0 0
  1. package geometrija;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Cursor;
  5. import java.awt.Graphics;
  6. import java.awt.Rectangle;
  7.  
  8. import javax.swing.JComponent;
  9. import javax.swing.RepaintManager;
  10.  
  11. import java.awt.event.MouseAdapter;
  12. import java.awt.event.MouseEvent;
  13. import java.awt.event.MouseListener;
  14. import java.awt.event.MouseMotionAdapter;
  15. import java.awt.image.renderable.RenderContext;
  16. import java.util.ArrayList;
  17. import java.util.Iterator;
  18. import javax.swing.GroupLayout;
  19. import javax.swing.GroupLayout.Alignment;
  20. import javax.swing.JLabel;
  21.  
  22. public class CrtezBoss extends JComponent {
  23. int x;
  24. int y;
  25. int xPoz, yPoz;
  26. int xEnd, xStart;
  27. int yEnd, yStart;
  28. int flag = 0;
  29. int temp;
  30. int pozicijaSelektovanog;
  31.  
  32. int tX, tY;
  33. int rX, rY;
  34. boolean stanjeDrag = false;
  35.  
  36. public ArrayList<Oblik> lista = new ArrayList<Oblik>();
  37.  
  38. public ArrayList<Oblik> listaUndo = new ArrayList<Oblik>();
  39.  
  40. public ArrayList<Oblik> selektovani = new ArrayList<>();
  41. private Oblik b;
  42.  
  43. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  44.  
  45. public static void main(String[] args) {
  46.  
  47. }
  48.  
  49. public CrtezBoss() {
  50.  
  51. GroupLayout groupLayout = new GroupLayout(this);
  52. groupLayout.setHorizontalGroup(groupLayout.createParallelGroup(Alignment.LEADING).addGap(0, 450, Short.MAX_VALUE));
  53. groupLayout.setVerticalGroup(groupLayout.createParallelGroup(Alignment.TRAILING).addGap(0, 300, Short.MAX_VALUE));
  54. setLayout(groupLayout);
  55.  
  56. // setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
  57. addMouseListener(new MouseAdapter() {
  58.  
  59. @Override
  60. public void mousePressed(MouseEvent e) {
  61. stanjeDrag = false;
  62.  
  63. tX = e.getX();
  64. tY = e.getY();
  65.  
  66. if (Aplikacija.staRadim == CrtOpcija.DEFAULT) {
  67. }
  68. if (Aplikacija.staRadim == CrtOpcija.TACKA) {
  69. lista.add(new Tacka(e.getX(), e.getY(), Aplikacija.getBojaRama()));
  70. }
  71. else if (Aplikacija.staRadim == CrtOpcija.LINIJA) {
  72. if (flag == 0) {
  73. xStart = e.getX();
  74. yStart = e.getY();
  75. flag = 1;
  76. } else {
  77. lista.add(new Linija(new Tacka(xStart, yStart), new Tacka(e.getX(), e.getY()),
  78. Aplikacija.getBojaRama()));
  79. flag = 0;
  80. }
  81. }
  82. else if (Aplikacija.staRadim == CrtOpcija.KVADRAT) {
  83. DialKvadrat d1 = new DialKvadrat();
  84. d1.setVisible(true);
  85. if (DialKvadrat.isDaLiCrtati()) {
  86. Kvadrat kv1 = new Kvadrat(new Tacka(e.getX(), e.getY()), DialKvadrat.getDuzinaStranice(),
  87. Aplikacija.getBojaRama());
  88. kv1.setBojaUnutrasnjosti(Aplikacija.getBojaUnutrasnjosti());
  89. lista.add(kv1);
  90. }
  91. }
  92. else if (Aplikacija.staRadim == CrtOpcija.PRAVOUGAONIK) {
  93. DialPravougaonik d2 = new DialPravougaonik();
  94. d2.setVisible(true);
  95. if (DialPravougaonik.isDaLiCrtati()) {
  96. Pravougaonik pr1 = new Pravougaonik(new Tacka(e.getX(), e.getY()),
  97. DialPravougaonik.getDuzinaStranice(), DialPravougaonik.getVisina(),
  98. Aplikacija.getBojaRama());
  99. pr1.setBojaUnutrasnjosti(Aplikacija.getBojaUnutrasnjosti());
  100. lista.add(pr1);
  101. }
  102.  
  103. }
  104. else if (Aplikacija.staRadim == CrtOpcija.KRUG) {
  105. DialKrug d3 = new DialKrug();
  106. d3.setVisible(true);
  107. if (DialKrug.isDaLiCrtati()) {
  108. Krug kr1 = new Krug(new Tacka(e.getX(), e.getY()), DialKrug.getPoluprecnik(),
  109. Aplikacija.getBojaRama());
  110. kr1.setBojaUnutrasnjosti(Aplikacija.getBojaUnutrasnjosti());
  111. lista.add(kr1);
  112. }
  113.  
  114. }
  115. else if (Aplikacija.staRadim == CrtOpcija.SELEKTUJ) {
  116.  
  117. selektovanje(e.getX(), e.getY());
  118. }
  119. else if(Aplikacija.staRadim == CrtOpcija.MODIFIKUJ) {
  120. selektovanje(e.getX(), e.getY());
  121. modifikacija();
  122. }
  123.  
  124. }
  125.  
  126. });
  127.  
  128. addMouseMotionListener(new MouseMotionAdapter() {
  129.  
  130. public void mouseDragged(MouseEvent e) {
  131. if (Aplikacija.staRadim == CrtOpcija.POMERI) {
  132.  
  133. if (!selektovani.isEmpty()) {
  134. b = selektovani.get(0);
  135. // setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
  136. if (b instanceof Kvadrat) {
  137. // setCursor(new Cursor(Cursor.MOVE_CURSOR));
  138. ((Kvadrat) b).pomeriNa(e.getX() - ((Kvadrat) b).getDuzinaStranice() / 2,
  139. e.getY() - ((Kvadrat) b).getDuzinaStranice() / 2);
  140. } else if (b instanceof Krug) {
  141. // setCursor(new Cursor(Cursor.MOVE_CURSOR));
  142. ((Krug) b).pomeriNa(e.getX(), e.getY());
  143. } else if (b instanceof Pravougaonik) {
  144. // setCursor(new Cursor(Cursor.MOVE_CURSOR));
  145. ((Pravougaonik) b).pomeriNa(e.getX() - ((Pravougaonik) b).getDuzinaStranice() / 2,
  146. e.getY() - ((Pravougaonik) b).getVisina());
  147. } else if (b instanceof Linija) {
  148. // setCursor(new Cursor(Cursor.MOVE_CURSOR));
  149. ((Linija) b).pomeriNa(e.getX(), e.getY());
  150. } else if (b instanceof Tacka) {
  151. // setCursor(new Cursor(Cursor.MOVE_CURSOR));
  152. ((Tacka) b).pomeriNa(e.getX(), e.getY());
  153. }
  154. }
  155. } else if (Aplikacija.staRadim == CrtOpcija.DRGKVADRAT) {
  156.  
  157. Kvadrat kvd = new Kvadrat(new Tacka(tX, tY), Math.abs(Math.max(tX - e.getX(), tY - e.getY())),
  158. Aplikacija.getBojaRama());
  159. kvd.setBojaUnutrasnjosti(Aplikacija.getBojaUnutrasnjosti());
  160.  
  161. if (!lista.isEmpty()) {
  162. if (stanjeDrag == true) {
  163. lista.remove(lista.size() - 1);
  164. } else {
  165. stanjeDrag = true;
  166. }
  167.  
  168. }
  169. lista.add(kvd);
  170.  
  171. }
  172.  
  173. else if (Aplikacija.staRadim == CrtOpcija.DRGPRAVOUGAONIK) {
  174.  
  175. Pravougaonik pd = new Pravougaonik(new Tacka(tX, tY), Math.abs(tX - e.getX()),
  176. Math.abs(tY - e.getY()), Aplikacija.getBojaRama());
  177. pd.setBojaUnutrasnjosti(Aplikacija.getBojaUnutrasnjosti());
  178.  
  179. if (!lista.isEmpty()) {
  180. if (stanjeDrag == true) {
  181. lista.remove(lista.size() - 1);
  182. } else {
  183. stanjeDrag = true;
  184. }
  185.  
  186. }
  187. lista.add(pd);
  188. } else if (Aplikacija.staRadim == CrtOpcija.DRGKRUG) {
  189.  
  190. Krug kgd = new Krug(new Tacka(tX, tY), Math.min(Math.abs(tX - e.getX()), Math.abs(tY - e.getY())),
  191. Aplikacija.getBojaRama());
  192. kgd.setBojaUnutrasnjosti(Aplikacija.getBojaUnutrasnjosti());
  193.  
  194. if (!lista.isEmpty()) {
  195. if (stanjeDrag == true) {
  196. lista.remove(lista.size() - 1);
  197. } else {
  198. stanjeDrag = true;
  199. }
  200.  
  201. }
  202. lista.add(kgd);
  203. }
  204.  
  205. }
  206. });
  207.  
  208. // repaint
  209. }
  210.  
  211. public void paintComponent(Graphics g) {
  212.  
  213. if (Aplikacija.staRadim == CrtOpcija.OBRISI_SVE) {
  214. g.clearRect(0, 0, getWidth(), getHeight());
  215. lista.clear();
  216. Aplikacija.staRadim = CrtOpcija.DEFAULT;
  217. }
  218.  
  219. // if(Aplikacija.staRadim == CrtOpcija.MODIFIKUJ) {
  220. // modifikacija();
  221. // }
  222. //
  223. if (Aplikacija.staRadim == CrtOpcija.UNDO) {
  224. if (!lista.isEmpty()) {
  225. listaUndo.add(lista.get(lista.size() - 1));
  226. lista.remove(lista.size() - 1);
  227. }
  228. Aplikacija.staRadim = CrtOpcija.DEFAULT;
  229. }
  230. if (Aplikacija.staRadim == CrtOpcija.REDO) {
  231. if (!listaUndo.isEmpty()) {
  232. lista.add(listaUndo.get(listaUndo.size() - 1));
  233. listaUndo.remove(listaUndo.size() - 1);
  234. }
  235.  
  236. Aplikacija.staRadim = CrtOpcija.DEFAULT;
  237. }
  238. if (Aplikacija.staRadim == CrtOpcija.OBRISI) {
  239. if (!selektovani.isEmpty()) {
  240. lista.forEach((a) -> {
  241. if (a.isSelektovan()) {
  242. temp = lista.indexOf(a);
  243. }
  244. });
  245.  
  246. lista.remove(lista.get(temp));
  247. selektovani.clear();
  248.  
  249. Aplikacija.staRadim = CrtOpcija.DEFAULT;
  250. }
  251. }
  252.  
  253.  
  254.  
  255. lista.forEach((a) -> {
  256. a.popuni(g);
  257. a.crtajSe(g);
  258. });
  259. getRootPane().validate();
  260. getRootPane().repaint();
  261.  
  262. }
  263.  
  264. public void selektovanje(int x, int y) {
  265.  
  266. selektovani.clear();
  267.  
  268. lista.forEach((a) -> {
  269. a.setSelektovan(false);
  270. if (a.sadrzi(x, y))
  271. selektovani.add(a);
  272. });
  273.  
  274. if (!selektovani.isEmpty()) {
  275. selektovani.get(selektovani.size() - 1).setSelektovan(true);
  276. }
  277.  
  278. }
  279.  
  280. public void modifikacija(){
  281. if (!selektovani.isEmpty()) {
  282. lista.forEach((a) -> {
  283. if (a.isSelektovan()) {
  284. b = a;
  285. pozicijaSelektovanog = lista.indexOf(a);
  286. }
  287. });
  288.  
  289. if (b instanceof Kvadrat) {
  290. DialKvadrat d1 = new DialKvadrat();
  291. d1.setVisible(true);
  292. if (DialKvadrat.isDaLiCrtati()) {
  293. ((Kvadrat) b).setDuzinaStranice(DialKvadrat.getDuzinaStranice());
  294. ((Kvadrat) b).setBoja(Aplikacija.getBojaRama());
  295. ((Kvadrat) b).setBojaUnutrasnjosti(Aplikacija.getBojaUnutrasnjosti());
  296. lista.set(pozicijaSelektovanog, b);
  297. }
  298. } else if (b instanceof Pravougaonik) {
  299. DialPravougaonik d1 = new DialPravougaonik();
  300. d1.setVisible(true);
  301. if (DialPravougaonik.isDaLiCrtati()) {
  302. ((Pravougaonik) b).setDuzinaStranice(DialPravougaonik.getDuzinaStranice());
  303. ((Pravougaonik) b).setVisina(DialPravougaonik.getVisina());
  304. ((Pravougaonik) b).setBoja(Aplikacija.getBojaRama());
  305. ((Pravougaonik) b).setBojaUnutrasnjosti(Aplikacija.getBojaUnutrasnjosti());
  306. lista.set(pozicijaSelektovanog,b);
  307. }
  308. } else if (b instanceof Krug) {
  309. DialKrug d1 = new DialKrug();
  310. d1.setVisible(true);
  311. if (DialKrug.isDaLiCrtati()) {
  312. ((Krug) b).setR(DialKrug.getPoluprecnik());
  313. ((Krug) b).setBoja(Aplikacija.getBojaRama());
  314. ((Krug) b).setBojaUnutrasnjosti(Aplikacija.getBojaUnutrasnjosti());
  315. lista.set(pozicijaSelektovanog, b);
  316. }
  317. }
  318. }
  319. Aplikacija.staRadim = CrtOpcija.DEFAULT;
  320. }
  321.  
  322. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement