Advertisement
SaraGajic11

mozdaPoslednji

Apr 25th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.73 KB | None | 0 0
  1. namespace UmlZadatak
  2. {
  3. public partial class Form1 : Form
  4. {
  5. Graphics g;
  6. Model pravougaonik;
  7. List<Model> listaModela = new List<Model>();
  8. public bool postojiSelektovan;
  9. public bool postojiSelektovanaVeza;
  10. List<string> imenaKlasa = new List<string>();
  11.  
  12.  
  13. List<Veza> listaVeza = new List<Veza>();
  14. private Point prvaTacka;
  15.  
  16. public Model prvi=null;
  17. public Model drugi=null;
  18.  
  19. public int kliknuoJednom = 0;
  20.  
  21. public Form1()
  22. {
  23. InitializeComponent();
  24. g = CreateGraphics();
  25. MouseClick += Form1_MouseClick;
  26. }
  27. private void Form1_MouseClick(object sender,MouseEventArgs e)
  28. {
  29. if (rbClass.Checked)
  30. {
  31. if (rbNone.Checked)
  32. {
  33. if (textBoxClassName.Text.Length == 0)
  34. {
  35. MessageBox.Show("Morate uneti naziv klase!");
  36. }
  37. else
  38. {
  39. if (postojiIme(textBoxClassName.Text) == true)
  40. {
  41. MessageBox.Show("Postoji ime klase!");
  42. textBoxClassName.Text = "";
  43. }
  44. else
  45. {
  46. pravougaonik = new Model(e.X, e.Y, textBoxClassName.Text);
  47. imenaKlasa.Add(textBoxClassName.Text);
  48. listaModela.Add(pravougaonik);
  49. textBoxClassName.Text = "";
  50. g.Clear(this.BackColor);
  51. foreach (Model m in listaModela)
  52. {
  53. m.CrtajSe(g);
  54. }
  55. }
  56. }
  57. }
  58. else if(!rbNone.Checked)
  59. {
  60. prvaTacka = new Point(e.X, e.Y);
  61. //if (kliknuoJednom == 0)
  62. if(prvi==null)
  63. {
  64. //prvaTacka = new Point(e.X, e.Y);
  65. //kliknuoJednom = 1;
  66. foreach (Model m in listaModela)
  67. {
  68. if (m.Rec.Contains(prvaTacka))
  69. {
  70. prvi = m;
  71. }
  72. }
  73.  
  74. }
  75. //else if (kliknuoJednom == 1)
  76. else
  77. {
  78. Point druga = new Point(e.X, e.Y);
  79. //if (prvi == null)
  80. //{
  81. /*foreach (Model m in listaModela)
  82. {
  83. if (m.Rec.Contains(prvaTacka))
  84. {
  85. prvi = m;
  86. }
  87. }*/
  88. //}
  89. //if (drugi == null)
  90. //{
  91. foreach (Model m in listaModela)
  92. {
  93. if (m.Rec.Contains(druga))
  94. {
  95. drugi = m;
  96. }
  97. }
  98. //}
  99. if(drugi!=null)
  100. {
  101. if (prvi == drugi)
  102. drugi = null;
  103. else
  104. {
  105. if (rbAsocijacija.Checked)
  106. {
  107. Veza v = new Veza(prvi, drugi, "asocijacija");
  108. kliknuoJednom = 0;
  109. v.CrtajVezu(g);
  110. listaVeza.Add(v);
  111.  
  112. }
  113. else if (rbAgregacija.Checked)
  114. {
  115. Veza v = new Veza(prvi, drugi, "agregacija");
  116. kliknuoJednom = 0;
  117. v.CrtajVezu(g);
  118. listaVeza.Add(v);
  119. }
  120. else if (rbGeneralizacija.Checked)
  121. {
  122. Veza v = new Veza(prvi, drugi, "generalizacija");
  123. kliknuoJednom = 0;
  124. v.CrtajVezu(g);
  125. listaVeza.Add(v);
  126. }
  127. else if (rbKompozicija.Checked)
  128. {
  129. Veza v = new Veza(prvi, drugi, "kompozicija");
  130. kliknuoJednom = 0;
  131. v.CrtajVezu(g);
  132. listaVeza.Add(v);
  133.  
  134. }
  135. else if (rbRealizacija.Checked)
  136. {
  137. Veza v = new Veza(prvi, drugi, "realizacija");
  138. kliknuoJednom = 0;
  139. v.CrtajVezu(g);
  140. listaVeza.Add(v);
  141. }
  142. //foreach (Veza l in listaVeza)
  143. // l.CrtajVezu(g);
  144. prvi = null;
  145. drugi = null;
  146. }
  147. }
  148. }
  149. /* if (rbAsocijacija.Checked)
  150. {
  151. Veza v = new Veza(prvi, drugi,"asocijacija");
  152. kliknuoJednom = 0;
  153. v.CrtajVezu(g);
  154. listaVeza.Add(v);
  155.  
  156. }
  157. else if(rbAgregacija.Checked)
  158. {
  159. Veza v = new Veza(prvi, drugi, "agregacija");
  160. kliknuoJednom = 0;
  161. v.CrtajVezu(g);
  162. listaVeza.Add(v);
  163. }
  164. else if (rbGeneralizacija.Checked)
  165. {
  166. Veza v = new Veza(prvi, drugi, "generalizacija");
  167. kliknuoJednom = 0;
  168. v.CrtajVezu(g);
  169. listaVeza.Add(v);
  170. }
  171. else if(rbKompozicija.Checked)
  172. {
  173. Veza v = new Veza(prvi, drugi, "kompozicija");
  174. kliknuoJednom = 0;
  175. v.CrtajVezu(g);
  176. listaVeza.Add(v);
  177.  
  178. }
  179. else if (rbRealizacija.Checked)
  180. {
  181. Veza v = new Veza(prvi, drugi, "realizacija");
  182. kliknuoJednom = 0;
  183. v.CrtajVezu(g);
  184. listaVeza.Add(v);
  185. }
  186. }*/
  187. //prvi = null;
  188. //drugi = null;
  189. }
  190. foreach (Veza l in listaVeza)
  191. l.CrtajVezu(g);
  192. }
  193. else
  194. {
  195. //selektovanje veze
  196. postojiSelektovanaVeza = false;
  197. checkBox1.Checked = false;
  198. for (int i = 0; i < listaVeza.Count; i++)
  199. {
  200. listaVeza[i].Selektovan = false;
  201. if (listaVeza[i].Sadrzi(e.X, e.Y))
  202. {
  203. if (!postojiSelektovanaVeza)
  204. {
  205. listaVeza[i].Selektovan = true;
  206. postojiSelektovanaVeza = true;
  207. checkBox1.Enabled = true;
  208.  
  209.  
  210. if (listaVeza[i].Naziv == "asocijacija")
  211. {
  212. cbLeftMult.Items.Add("1");
  213. cbLeftMult.Items.Add("0..*");
  214. cbLeftMult.Items.Add("1..*");
  215. cbLeftMult.Items.Add("0..1");
  216.  
  217. cbRightMult.Items.Add("1");
  218. cbRightMult.Items.Add("0..*");
  219. cbRightMult.Items.Add("1..*");
  220. cbRightMult.Items.Add("0..1");
  221. }
  222. else if (listaVeza[i].Naziv == "agregacija")
  223. {
  224. cbLeftMult.Items.Add("0..1");
  225. cbLeftMult.Items.Add("1..*");
  226.  
  227. cbRightMult.Items.Add("0..1");
  228. cbRightMult.Items.Add("1..*");
  229.  
  230. //da li mi je potreban kardinalitet 1?
  231.  
  232. }
  233. else if(listaVeza[i].Naziv=="kompozicija")
  234. {
  235. cbLeftMult.Items.Add("1");
  236. cbLeftMult.Items.Add("1..*");
  237.  
  238. cbRightMult.Items.Add("1");
  239. cbRightMult.Items.Add("1..*");
  240. }
  241. else if(listaVeza[i].Naziv== "generalizacija")
  242. {
  243. cbLeftMult.Enabled = false;
  244. cbRightMult.Enabled = false;
  245. }
  246. else if (listaVeza[i].Naziv == "realizacija")
  247. {
  248. //postavicu kardinalitete na normalno posto ne znam
  249. //koji se koriste za datu vezu
  250. cbLeftMult.Items.Add("1");
  251. cbLeftMult.Items.Add("0..*");
  252. cbLeftMult.Items.Add("1..*");
  253. cbLeftMult.Items.Add("0..1");
  254.  
  255. cbRightMult.Items.Add("1");
  256. cbRightMult.Items.Add("0..*");
  257. cbRightMult.Items.Add("1..*");
  258. cbRightMult.Items.Add("0..1");
  259.  
  260. }
  261. listaVeza[i].KardLevo = cbLeftMult.Text;
  262. listaVeza[i].KardDesno = cbRightMult.Text;
  263.  
  264. }
  265. }
  266. listaVeza[i].CrtajVezu(g);
  267. }
  268.  
  269. //selektovanje klase
  270. postojiSelektovan = false;
  271. txtMethod.Text = "";
  272. cmbAccessorMetoda.Text = "";
  273. txtName.Text = "";
  274. cmbProperties.Text = "";
  275. textDataType.Text = "";
  276.  
  277.  
  278. listBoxMet.Items.Clear();
  279. listBoxAtrib.Items.Clear();
  280.  
  281. for (int i = 0; i < listaModela.Count(); i++)
  282. {
  283. listaModela[i].Selektovan = false;
  284. if (listaModela[i].Rec.Contains(e.X, e.Y))
  285. {
  286. if (!postojiSelektovan)
  287. {
  288. listaModela[i].Selektovan = true;
  289. postojiSelektovan = true;
  290. checkBox1.Enabled = true;
  291. listBoxMet.Items.Clear();
  292. listBoxMet.Items.AddRange(listaModela[i].listaMetoda.ToArray());
  293. listBoxAtrib.Items.Clear();
  294. listBoxAtrib.Items.AddRange(listaModela[i].listaAtributa.ToArray());
  295. labelClassName.Text = SetLabelClassName(listaModela[i].Naziv);
  296. }
  297. }
  298. listaModela[i].CrtajSe(g);
  299. }
  300.  
  301.  
  302.  
  303. }
  304.  
  305. }
  306. public string SetLabelClassName(string text)
  307. {
  308. return "<" + text + ">";
  309. }
  310.  
  311.  
  312. public bool postojiIme(string naziv)
  313. {
  314. for(int i=0;i<imenaKlasa.Count();i++)
  315. {
  316. if (imenaKlasa[i] == naziv)
  317. return true;
  318. }
  319. return false;
  320. }
  321. public bool postojiMetoda(string naziv)
  322. {
  323. for(int i=0;i<pravougaonik.listaMetoda.Count;i++)
  324. {
  325. if (pravougaonik.listaMetoda[i].Ime == naziv)
  326. return true;
  327. }
  328. return false;
  329. }
  330. public bool postojiAtribut(string naziv)
  331. {
  332. for (int i = 0; i < pravougaonik.listaAtributa.Count; i++)
  333. {
  334. if (pravougaonik.listaAtributa[i].ImeAtributa == naziv)
  335. return true;
  336. }
  337. return false;
  338. }
  339.  
  340. private void checkBox1_CheckedChanged(object sender, EventArgs e)
  341. {
  342. if(checkBox1.Checked && postojiSelektovan==true)
  343. {
  344. panel3.Hide();
  345. panel2.Show();
  346.  
  347. }
  348. else if(checkBox1.Checked && postojiSelektovanaVeza==true)
  349. {
  350. panel2.Hide();
  351. panel3.Show();
  352.  
  353. }
  354.  
  355. }
  356. private void button1ClearScreen_Click(object sender, EventArgs e)
  357. {
  358. listaModela.Clear();
  359. this.Invalidate();
  360. }
  361.  
  362.  
  363.  
  364. private void btnAddMethod_Click(object sender, EventArgs e)
  365. {
  366. foreach (Model m in listaModela)
  367. {
  368. if (m.Selektovan == true)
  369. {
  370. if (postojiMetoda(txtMethod.Text) || String.IsNullOrEmpty(txtMethod.Text) || String.IsNullOrEmpty(cmbAccessorMetoda.Text))
  371. {
  372. MessageBox.Show("Neodgovarajuci unos, pokusajte ponovo");
  373. txtMethod.Text = "";
  374. }
  375. else
  376. {
  377. if (cmbAccessorMetoda.Text == "public")
  378. {
  379. m.listaMetoda.Add(new Metoda(cmbAccessorMetoda.Text, txtMethod.Text));
  380.  
  381. }
  382. else if (cmbAccessorMetoda.Text == "private")
  383. {
  384. m.listaMetoda.Add(new Metoda(cmbAccessorMetoda.Text, txtMethod.Text));
  385. }
  386. else if (cmbAccessorMetoda.Text == "protected")
  387. {
  388. m.listaMetoda.Add(new Metoda(cmbAccessorMetoda.Text, txtMethod.Text));
  389. }
  390. else if (cmbAccessorMetoda.Text == "package")
  391. {
  392. m.listaMetoda.Add(new Metoda(cmbAccessorMetoda.Text, txtMethod.Text));
  393. }
  394. else
  395. {
  396. MessageBox.Show("Neodgovarajuci specifikator pristupa!");
  397. }
  398. listBoxMet.Items.Clear();
  399. listBoxMet.Items.AddRange(m.listaMetoda.ToArray());
  400. }
  401. }
  402.  
  403. }
  404. }
  405.  
  406. private void btnAddProperty_Click(object sender, EventArgs e)
  407. {
  408. foreach (Model m in listaModela)
  409. {
  410. if (m.Selektovan == true)
  411. {
  412. if (postojiAtribut(txtName.Text) == true || String.IsNullOrEmpty(textDataType.Text) || String.IsNullOrEmpty(cmbProperties.Text))
  413. {
  414. MessageBox.Show("Neodgovarajuci unos, pokusajte ponovo");
  415. txtName.Text = "";
  416. }
  417. else
  418. {
  419. if (cmbProperties.Text == "public")
  420. {
  421. m.listaAtributa.Add(new Atribut(txtName.Text, cmbProperties.Text, textDataType.Text));
  422. }
  423. else if (cmbProperties.Text == "private")
  424. {
  425. m.listaAtributa.Add(new Atribut(txtName.Text, cmbProperties.Text, textDataType.Text));
  426. }
  427. else if (cmbProperties.Text == "protected")
  428. {
  429. m.listaAtributa.Add(new Atribut(txtName.Text, cmbProperties.Text, textDataType.Text));
  430. }
  431. else if (cmbProperties.Text == "package")
  432. {
  433. m.listaAtributa.Add(new Atribut(txtName.Text, cmbProperties.Text, textDataType.Text));
  434. }
  435. else
  436. {
  437. MessageBox.Show("Neodgovarajuci specifikator pristupa!");
  438. }
  439. listBoxAtrib.Items.Clear();
  440. listBoxAtrib.Items.AddRange(m.listaAtributa.ToArray());
  441. }
  442. }
  443. }
  444. }
  445.  
  446. }
  447. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement