From c567089f5ae7877cba30abe38998db2a59ba0bb1 Mon Sep 17 00:00:00 2001 From: Meruemon Date: Thu, 31 Mar 2022 15:26:29 +0200 Subject: [PATCH] Removed useless envorinment class, 1 step closer to mvc-arch --- bin/Control/MyControlModel.class | Bin 2816 -> 0 bytes bin/Control/MyControlModelPIC.class | Bin 0 -> 2426 bytes bin/Control/MyControlModelRuntime.class | Bin 0 -> 2876 bytes bin/Control/MyControlView.class | Bin 6150 -> 6150 bytes bin/Model/MyModel.class | Bin 702 -> 3912 bytes bin/Model/Runtime/Environment.class | Bin 2479 -> 0 bytes bin/Model/Runtime/Main.class | Bin 477 -> 919 bytes bin/View/GUIMainFrame.class | Bin 4095 -> 4284 bytes bin/View/GUIMenuBar.class | Bin 4406 -> 13522 bytes bin/View/GUIRegister.class | Bin 5466 -> 5667 bytes bin/View/GUITestFileTable.class | Bin 6177 -> 6427 bytes bin/View/GUITime.class | Bin 3137 -> 3785 bytes bin/View/MyColors.class | Bin 0 -> 912 bytes bin/View/MyView.class | Bin 2665 -> 2956 bytes ...ntrolModel.java => MyControlModelPIC.java} | 25 +-- src/Control/MyControlModelRuntime.java | 85 ++++++++++ src/Control/MyControlView.java | 2 +- src/Model/MyModel.java | 156 +++++++++++++++++- src/Model/Runtime/Environment.java | 138 ---------------- src/Model/Runtime/Main.java | 12 +- src/View/GUIMainFrame.java | 103 ++++-------- src/View/GUIMenuBar.java | 109 ++++++------ src/View/GUIRegister.java | 13 ++ src/View/GUITestFileTable.java | 15 +- src/View/GUITime.java | 25 ++- src/View/MyColors.java | 42 +++++ src/View/MyView.java | 66 ++++---- 27 files changed, 468 insertions(+), 323 deletions(-) delete mode 100644 bin/Control/MyControlModel.class create mode 100644 bin/Control/MyControlModelPIC.class create mode 100644 bin/Control/MyControlModelRuntime.class delete mode 100644 bin/Model/Runtime/Environment.class create mode 100644 bin/View/MyColors.class rename src/Control/{MyControlModel.java => MyControlModelPIC.java} (80%) create mode 100644 src/Control/MyControlModelRuntime.java delete mode 100755 src/Model/Runtime/Environment.java create mode 100644 src/View/MyColors.java diff --git a/bin/Control/MyControlModel.class b/bin/Control/MyControlModel.class deleted file mode 100644 index cf8cfa6885a71a5ca749847f3a217ee14cea00de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2816 zcma)6*-{fh6uljiuo#vgtBQbY!WK|*3yTnfQU<{!27&USfv(upWQOXQp!iolSXTMq z2l!Fq?Vb)MFjVu9PS5Ro&RzQ4{`2?O@6%J5ht*~X5$MY}wkI4bwSJ;^>&^kQnjuV} z>yRGPltt}wYGdz^?Rx~GjyfjLnNu5tssA*Ah*RS13xW2W{Ko_NhxX_kx4E}KU^sCO z)8Lpa5eR26b{jN7dkk8kgFsUvS!xB$BnA_lbo|p ztr8Vnersdc`^;Se1G(TbW!e>4FUCGr*~eYxZRJ^+yB-s|)^K7?W*6lpYE>~3S;LIb zZ!^Pf^s=>Ehce}sif^>xns2E4S}o-3oC_ZHs&1WOaCF#1$XP%YWC%G zc3EAXR&>m0Vt3c?66GAtcz0+Z5O+N)unwmz&V0MDw?~bp_z|tT?3@jYmo2D=cJBLf z-C8N?z~O|dwH;mGSE=}>%`H4@u?n-X{9enU2df-4;bgO$`Hgk$GLXnAfmc0lrIv)C zCpo?`hkba$GKOr_Y{sT7?KOp`cO(D3BYd3^(?ZCAYVO_Y3 zLl0U;d>HgXAATVL^kW#Jb^{nFg!@6bp~K9gU8X|*6Z_7+imcB+JR>7;6K)}tz>t|@ z&_Hq9Ofh7j7&cRk8Yo806!#4jqh^Yvf#QytV$wiy*Gw^EptxtIm^Dz`hX-0(izq9p z;0w}9D+*tyIM`aJ1Rg4BApjDPR5~3qlPzAEY}`zixiZ;=ne6qI$tGb+_w3Sfe5=SV zj$;a@5lUbN=ih%g#%0Tc+WuZq#Qa0ub^?#gzz>1I$7bMmAn=J9_$d%L3r}^8m$r#2 z;KepcLCH2fGYgzuLh)Qbd@tZ7YBP-;4#Avys$Z+U7J8Fe-ThB-ZlIXy-3Tlv5^ z&f;h|~HX8*t4O*Z-S_t)>UGk6KF+M$iWXwotr+cM(W6E(|P2h7N& zlkMOq(053WY22V@CB9ugWcv<*pd~#B^k(D)mGVD9AYhd^`%0iYBmQwg{GmO#!cFe1 z5*UwO(p+$il?eEg7`_vH&>e;l^bqhxW2F#aCSeFbP|OCx&<-6UJ~!FBdbP~#A}t#X zS2ETXx;#(R0&KF)Ia4XZYQjvL8RE^<}WdZ#)=6uYv3a>fLR^|GmX^~)%m#9(4 zU?h!6pkvcCopuegHDbbT@>>Yc!nV`T%*UVz^iqGI+iWYm#LzLMX{bM1MC}j&R3LsXThr5 z`%LT(rgr6q&WjC#NxTw10BFM>-Vhu?+z%WFaU}$uICkOJ4tfZ`-sztZo}M|y$?Pfg z|3Fh4+`w@F{5baD*o(40ob@9DV8WF_1cvYn0WgeVh@6dJpf;S3!c7%s3GE^k@*nIv zMT|9^3#e~}^B`~H(jA{^f^oTJHVqA}y)F3AGh$#(XQjdsf5O?*6ISt~T99p9pjvAU+e&osmDWl~gxjZhw^g4Kcqm&71rUXp?9*vIZ0*{x89gj{ZP=_H zwsmdT9L%ddYk3{tO4!xw7>5Ov5?IuqT&@M;k-E{3;R$ZKo555025mJz4nFznxR1k! z7N})-hPgaPSs4GtNiM?+90?@weR3bR8EN-uiyaAV2;H_Iu%Z`!_7uL<3#q4YRaU+B E4}B(GQ~&?~ literal 0 HcmV?d00001 diff --git a/bin/Control/MyControlModelRuntime.class b/bin/Control/MyControlModelRuntime.class new file mode 100644 index 0000000000000000000000000000000000000000..7a686dc565e698db78a6128d4d177cce89ab055e GIT binary patch literal 2876 zcma)7>sA|86#h;K41_5Z+Cr%)ZK)IjCDyj64Ml;{mYPsnZrW;f2vZnHW^gj$;{8&s z_XqF+>~CE*F8$&1mp^<3AHn4-h~J(`LV(ca%F4`~efHjG?{9y5pFjWo^|!4pT*9{+ zLJCigI=1IJ=~!~J@Rf8H%=E3C?O7R9Ls;S9vax2w(uTblyD`6PraTQbH1ws$x)(Fo zOxueMr##EC6IRwUZPQh#b&{LDD}}~{|G^{tcU(btMqJZaS#>Pi%PJg6_|9^km5vR& zuCXa@s8%;+E!u{cb4`W*N;-qSa3hvow;0{^(IqprGU9B+hiKgB6cQTAd7fkQn7;qv zB2e}n)C^j-9IYOh;bvo>_(PC_#&$3Wszw;;=$hch77c6k2p>sEyz# zj%jF9s4uhB@dVn5#iHq5of%J#CQUo1(A?b;U;-e zfkHZ_FwIje&vXsXVXL?7;M#aW9 za~0D)4IaT=ys6<0g=70?qQj6Q>PW&VC+DWvpo2*1SOB@*RKRe14heqaJ+l(^qK+k4 z3fhv9o$v!>Ki?KuR&=D1VSm#pgQGzJWqI6naPXD}mb+|nPHmC_867T2*eWL{)`6+z z#3o(N!6}a;F%z!^hd@}mDS~xuYS<{2VW*;wxA6``Tov22Ey0w9LT8+a{%lgrw*7Gh zCry~E8s~H>8_Oi1Z?p${w$p(r&q%E#ja9!7Be;Y6IzGi`gmq6hE1cYiZpFKTQEK?S zkY(w(U=T;}0QZ@t6D*6M?b2dMk)Xsfy-13Rms!71g%gwb^Iy#;WH|E)8A_DZ^D6|M zPtM2Ex`8@uBOK(jiF<3*5!+MIpV1uceS{;?zC2pmtwjhjFo^}+6(S{C6J9!J7=g#rKCoW)sD|*Ls{<-q?JYL|LAzY+Y5W@i9idwbN zpKv6P`1Uyw>VX#q?+f3r9_SVPhVasUK8APuI7uI!6@6UZ&&SwqA6@iux}uM3B_F+v zS8`F?#x=g6x6Du#5>Ob&b?!FN-~#`W>>k6IZ`cxSmJn5V83~#yBry@VP~Akmnl6^B zE)mK8JZ@YJKg5Z)@GqEA_#Jm9dh>Yw%=f4lpxg79zaLVvdr#rJt-oZG8=X~oEK}!4 z*v(!ZYa*T#d6@FK(yCfkl4KQx5&b^j&N0gKWiD~|}+h?W#OgoDzASmip<4b(S hFM;DcYPQhqrxhgGuq92#ECrRO${XDLnzkW)^B)=diWvX^ literal 0 HcmV?d00001 diff --git a/bin/Control/MyControlView.class b/bin/Control/MyControlView.class index a96256d423c986112f5eb520d753605b5c2af9ea..79e4aaf3c620d7a23f925fffb6f25b2943e4f4eb 100644 GIT binary patch delta 82 zcmZoOXfv45Amy8%lA5FMTM4GEeZn$R%Yi%)HE~u2FKaGHnvsE}3@ET!p7Ay(o6c4S cel6`u+?L!N42%p64Ezid3~ZZSxDW9F0C8Oxj{pDw delta 82 zcmZoOXfv45AQhIGTCVR~38JiheDhOMbAUWBJ#khAFH0FvoRNVw7bLM+p7Ay(oAy=) cel49z+?L#I42%p64Ezid3>=$XxDW9F0C7tfj{pDw diff --git a/bin/Model/MyModel.class b/bin/Model/MyModel.class index 704f10350e9b3c5a73418072f2765aa8df78d8e6..29e67393b417dd06459bd752b8f7dd23537af48b 100644 GIT binary patch literal 3912 zcmaJ@YkL%D8NMgkQuFRYjGer6`Sn=tE#opATF0%No==T0xoZ?51>3G^*R@n$Gv`ugXRqm5M?uJ%NRKG!&iK+s z*0!>i>DX32uiGge4l3AUxTjN&=I9EPwCoIJowAnC7$$dGjEq)ty!W=eQF4ZDU0Wzx zhUt_PbY@()Wyi>;hHP6~%20w=49t{)|`SwgK%etrbkYlI6Fosacf*N%#*fO zAiR#uc|%`Jjh#zZHz^W1Vwi?=OhI%1zh`oYn<>O^RR4B5zRUW~{y^h`=z+kaVCw_tr6_|cj^F@GS~70vQlMih+R@?mS)FGE zT^kd=R9sKGq^vd~Vq!!^3t}7{o~)0H?4MK-mwnNwZ)+y`w49$-(S~gbw${$2$K_~T z#dbLolQY%k?rT`hYI}?F*Hr94r^HBW(p%Fi&VlKYwwTlk3L3Y?65Err6z3B?UY02EeytRLqVUkNy0F%Yk4EL zKcSnsgmpD>)yV4!3T5Z@+@3hTjqgP9*mUom~C3Sfj#;@hPipXZ4e8EMoWnZ#*d3!X8$w86d$m$(6;oCbu_kAnnNP6x&8O~kFzwS!X;tFX1KDSYamo1;4?_I@xA5*3Y1AKN77toCmJ-3iecc6#---{%71rKfEe(dMU z^y5K3#ZQW>oQ0F0;=Vuf#WNOhHxqTrVPCmPdN@G2_rp!fdjpged=X#rm5UPlY<9D~)$N8uMEMZ!(}(Mjc2tpe;Hz%tk5kL5fb48_u@40% zad>kQj|O5s5vV-6S$Q;2c?_rg3Zxk3dhOF65oCSs#{-og4OGr-Rz4S~d^zVbggcrt*GOUqU;Rl$t+_KgZ259Qv&(4U|mzk_QWk^Gql{Ii;H1qJWp zn==$V97X*fwKq+3#~Ngdb2cf~L*A@-BRc!uZa@Erd# zJ&#Lx!HqfL4#Q2XySaUlIA0>hmq~H2)b&cI?_aV?^4viWzo>dRxD!vSpbD${+d&Q!!V zrQp>nU%gM~lJMiicJ%KUl%?B!9DEJY<`slO(`=nPxOJiZ_1k!}yMnjd->cwPo=gQR z6@0Lvt-NsFV6opMZ@)!uSavaZjCb6}K#%yn%Xku4ADY(~R1+IUk>?+jHST(!&GM=2 KW!&CKef&S*lsAI_ literal 702 zcmaJQ&4wIV#w%OA?6&T%-nwl^2NmqxeBb^^fk_WexR^g7oM)jYf zNh+;Gt;Ml+IeY;YN;dK+3s}`!D-W(smOkb)!6@)IH9ADZ}_a7OJ%`V(N{QN&K<4z_%c6C4s`J=?0$M zSJ8lW@+j-kdtimjSO7BoxEm4CW<-mbJPO1jy>l`mUZwsFyT1BFW9 diff --git a/bin/Model/Runtime/Environment.class b/bin/Model/Runtime/Environment.class deleted file mode 100644 index 241f943bd97dee1b324030fcdbdff1e7b4e7369a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2479 zcmZ`)-*XdH6#j0qZ6ICx3sQcBRwxwG@FSvtNK3UXEnP@yr6sjh#BH*qOEt=bZ1HbIdSh@((PhqV*aj?_XHGY zQX3XXW&`B7nRlJMV|%V+S%#aTu}`3-JYp=lPU*7l>7%A)2()K6LQQ$DX&33%TprAO z72O(kN+sPc2(+1X6-;@$N2JgMn#{m4YueQ8G_!iy3*;8dEPF$)p)W2urtOsl5<#Yl zXIhy-*VW(8(u2u%PMJkp_bM(Uq{Dpr>q^vY&nOyh-+%;KX0<;o=BmJsd%BljC^$ud zL)&y=W^j6V?DE7Fq8s~7+w=wmqN&~-+c(UH#}UN=6&=_c!$E=Ferq-t97hrdc0%9< z70qag;c#tOAuW&NP~d%3MFSdRIL2P)OygeW%1v!tH|eKI5~HzjCDX>+|fIrmW&S1?A#um7Zds#WZdT#FnMw z#2tZ-&FR(`L850=yop&x(+k|yM5=CIg0Dkg@0|2|OU2u={zlg*Im=AnWNy5a>iPA} zo@3(qk^AffXDv*cOwBGB_c=E{ePiV%l?)ZCBv2DA>+3J|3o3R=eVqE*n)1C@rO{H+ zj@vg1`HCTVa+6&$09q>`y;Ma`p*2SI|ZA z5XJ5l9C?bKSz3>0sY_FLas{W-?U@yv@qb@VM^|tz{WH!*9D)!7-f1Nu0$gTto)1;S3ph4j1Uz5!8WKX#qWZ(1(6jd5Jf^XN}I07(|Q) zP(8qV@PrIcejw1m8jk!(A>!w6^pzL<*lOTVjVxWcF@p>|Dhh!*obFD&;ETtF^y3 z<}=5R10yVal$;nNcQmx&DyMXfQ_?td(op*&Yl%Is&V zI>~^2h(AM{5PKs3pz9f8LUd6&=>G-eS>^LoD11*?Jrx#1r+6n6T-*vShk{Mqt!0k* zZ<8ck{9#Mx2ch5+>>7B3!Kb#8?_ns|scrBHCX-ziaDR)P1-!ckY~-b7tq)?;k&}ukjLX9V-HNoamz$SntMR;*UJbas5z- zCQ!O`zqnT5hC}O3|I!;I0;@0l&`-_;GL2?eK?wVW$y43x1gc~!}xk+w<^s?M&!RwoLRI0^_!y%}-`rbONq*#8%4&$Uox z?g`YE$|zpxL=Dtn>Zl9s-k$gNb;rN~OiFj-AqP{wMLCBbsj70y3-UR#Y$RE6E(`1g ziqV`bfvUYkK;l@S@;7mwIMpu$<`W1kEdZ%R!2A!0j|3PO(KsG>uY9>3dAV%I@-L$f zZWZLWLXX?TQ|Ha16|~vI33A`nv%yn719=p97H0{xYbv&m4MrsR8#HDD&!;H$CS1lT z%DvVETh0_az1GnLd*@Tsl(&DPO>v;y`zP6(PJ60C0Xf#+WCs)Lc+3uMZk_CYHtT=~ qc*t80hj_$y!Q48Ypg}n%s%SEvVZ4YIj>xLbjHfuJP(g`O^s_&eRo6QJ delta 175 zcmbQvewUf+)W2Q({{LsNWssc6wL@OgH$NpcM?a`EuOu@!Ro^wQEVC#-FE=%>go{Cd zfphWjHM(ua1HetVyjnMs<}J~V61 zIsf_hzyHhkU-r&h|9a__OP8<)e+nTWP}*sk2OBnC7i~4HWQ$|;nIRMilL@!5zTEB2-%uinx&RyspVN}MV3kllxsx|Y1c|LT;n*# zV9ZLn)KuJV#gm4cc1(e~iDXt!`|9Vgi#d2emPe@#es{|xvx0@;Jkg-Q8FR0n+t*?@3#A+s$>+RMdE)~{9xieRe3GlleQ8)`8}YNZI#%D zYXv4VsLg(n2+a0$Wm{vkdOVHo5*-Ruoq=AnkL4rKDX~ML7p9_4D`gQo#qN^WsjSO% ze~;msJFH}n&61rKvyx_8x^Iu^ba*hA#q4e)(P=oA`u3RxZm-4WnVu`-(f(zbPquS) z&G2$EeyKBc2Xudgh<4E@F_G|=*e`j>@p!F9l11XMPD5Z7&Ka+?$xfzRhvB-ZF#1%N z^x-B62gIYuNOt$yj(~_Nc3R>92x{n{X~lcp0rHy_e^BC39)D2rZkD)3sVI!o_W{K@ zB5^d!84TezW+&@RG|3?7z%hJQRqAmXVa=7S$ zH|a9ZMie2!zv=;;xt&BL|H?(4UcX3}lU zn+99=>@&MvJq_-{0}@}rg91}MyW7n;hpUGukJBceXic|xWp4UPslv0+ib^W%1ZMrX_l6KQsOCG@CsP< zLzC)NZ+47==<&4l(-P0%D_PC$uF<`JtY*#9vR{+ipy`jyk+_!@S?;^YS@Gw^MH}C z)WA{fmnFWX*dfR4R}B@$xA9sCukz&dYqH5s*iK5~JNT|QfjiV#Q*{xo-IX(|#dO5q zmv|jNpsdCEQKu8f0+G?xuh00X&u^TJH}S&|-tx~=?*JTKmG}{U%sG`b2VAcTwFZ5T z`S_`te_P_G_!-@0Gq%`{8F%b-lC_sV@;%?wfUdwh62BOgU(XDC^2(E6O1y_(5sF?T z)uxT|xYrqaTOsw1ib%)a#)zb0$J9Xa!6^L?B-r`hMTiAu*v*Es-xr;ttEkoJ*OeZ^ z2h2&kop!oS)#ofYRjH$+e2Iz~^JzW^@G=2)wcu0H-kaA7{mn~-e)CG9-@Gz#*A&tL zOy!do2R;kQD@7Tf(*bcAwHA7Q zSv-W=NLgJ5^^u|smPLXYd^}QGI8Yj_&fw}1tm!ISH;ilABJ~+GWw0@l!IlWc+mz(? zNI?eIk#+rZ+UZ?r#UgYff?cSG$yFQ6 za1bkTn75XrxEjZ?3U_kHDXhkBYK(Yc<5ReSUjzU*;?o30Q3h=VsG%Br&`p2@dZ<$a z#>*AY4@wnAo=4@gBmy)EBCeS0v}%RA!r4o@_hTy8lKwWSMht=cOx)B`fDhZc_gTY~ZW(c<{ zQ~cFta3@i}@4rjV^CUm7B@43Z7LHNp3q7QT3bR5D6A3-?zin1~HqT{k@>}s1jMHCV zvNJCxf7h2L&>!TV7kdsMrO&hTWxYe86fCL93NqHiIhn7H)0)Fs@5}1vj!OQjw79QA zG3IFop;0;&qgpZeUc_Hj2G8#B>3MlH+a=3ikVjW)nj1)bb4RXE{=)hOn%U?ZP{po@ zU?Z-=CQ@6_h8VA;t>_|k13RUgUDblG0#6=8>VH^@K)ubY@)ZSe`k7)+r3^b=16&gzmXhVQ}r~x zk3--z|1G;euWyTel|tR(Jw@Uer3-2F+?;3l1TQS!pX&1p{&ojnz$>jPiy3@xRlx;R z%`SKmZwS1KinjX2!Q~nJq<(P$Uq4q1?+To`^kGEve;v{M-(0|kg8y5IiZ7_=Q42>U z@Bn7vLCnQNjO1a$aR%#2$M6V~|0sbv%UI8G$UV+dc!Fc{JWh~4jVCGf6duFV8ke>D zJUQp%LKN^@q=?L1{$KV!K42nNvh03GsUUT&!S6M1Fw6Upo~%P?)+LVB!VrWA;Uf;h ZHvzIL5l}2(!qtk=Rhs())dcXze*?g9EBycf literal 4095 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

;VcbU|ROgZ3glfUOZ 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 AG5`Po literal 4406 zcmeHJSyLNF5bhBK9S9KMGl}CRmqiX_uydIs0a?a!B!?itvB@=(25H0Yj%s!!Adh*^ z-$+#+^W-Y0DtSzme?WdkenXs|*#WK08i!QzlHx(z>YkpjdwRNi`tje7etYr+=AjXX z7=e)uo9*P5*NbK5wU?-fLqCBt-_Z`;&G|dF*T~&DSQ#L2Nv-7Qj?A$R^JH$ZCT;GO zY+o{u2?B$Z-=t!Dt;t+QV05!|pr7Xs7qbM?l$Y#AQyP^xFYhTA2n?09D*=m&DO|~O zPYUi3xKJ{Ga|gmQuQNvh@+HCOc8lAd^a-2|Otz)%U@*cwwL(s>;i7?=c{asK&G_HXuZH%g1fhDhvCX_wQIe?B!SrG1B|M@#(b$% zN}SeNod79faCn8asGyRIs|3#X+EY<3O6DSFNN>7_o9W@M;i0&)p|%njKa7W1LtJ^V z?+t-5&94aFs7NZAvZ#a=+F?%#lf1BN%RnK?)!hVkhIqb7y#~`4iUCiBZ+x)lax=Va z*95Nxx9F$@NpZ9*q_U-$725W-Va2R6pP7{;sru-#^!N-3U*jw-88R1TdG?G}NChs#Bz$(1VLx)w>GN~r%RE4)ijj1sg+ex=!O{tkD4mjw=&G--p z)EMr~W~{by@b0hSVBo_9U`xZ_3vdMh;*h{EK+@0@3~D|NLz)i52e%bJrp%aF_YUpc5?{!1pF!DDIy<+59!%rIe zmZ5JO`i{|i*YHz@<_x`R)~5}fG4gAMUN`hTL*IuFwErI(`Vrhfeh_0b3v>9LNA5bt zwGV0PS6H||_Q^w7`W?9#6!1HMI)Jgeh2OOPpMqt$t=EfiCxoE%0)$T^5PptCC?5mi zk4S{O$3XZi65+Fdk3dEv5mw;yP#j`M#evL6AP`uEN+iPC;YgAnBM~;>UL-=qU65ZQ z5MuDfGvaXnun(~xA`v#9af&Y^5Pph4An-MO6FS9_85MgJfe?dlb!Jl7LOOssT!s2S D(%`a9 diff --git a/bin/View/GUIRegister.class b/bin/View/GUIRegister.class index db88222c38b5b627baf1c52cc26fd9f4ce9e1cd3..74779b90b58147f70c5afc84e474d4fd8e6d9e0e 100644 GIT binary patch delta 2539 zcmZ`*cXSj*9RB8RZ?9y7Ap}AQB?Ztl0+ILNA^aimXp*RaKztMr5>kwbToMIE&%y(2 zAS^|SAfg6B4GBl@9TWr$2q*>=L=?Lek@(H-m56xn?d~_<%&*V<=1wIqNp&5%wP{;j z9l8lumFt)i?SjA*4X@xCfw0otvi|PkymEJ*eoE=1PSfxvrtA0E;uKvVR)0c`b+|AC ziFVA^OKh>>vykY56>~Mr!+d>?Ew#rCyscp&775t$JOw%91VmpaMHXv#H^`2c%zGN% zmyGHz9-Uv}k$Nhmy`{RUwvU)A{i<-mjTIVJVwK)Y9oD8sAiB`~lsmnMPNokm^Ar^4 zbuTX{%E_hpeeh{mj}7{MwRLzkGF+&}W(`}gRllaTRkv%{ft`A5`%3kwhL3SfKVk2w zeuB^J_*9Q~B#6)To{r>12Tln%2bXxtatn%bJp%RunUO3SD8`o>zQS33oTF`AEza9< zP9W0or@XA7D7|l4uE$+g;?eL8zSXxm64Z+tzQZN`f+IQZvW6dUNg$jl?(QD_c%G-E zyf`NewYZ|;C;Y6pcSfaOl<{76;dlIL#~%VQQu(;_(x(|`diN3!LB;C?bCv9l7(VNNdQBq{)m3pmGuN60BT5sshT(!}5qE?9GJ07qc zf|CfAKGl(7-7S&HRv#u;fdpRVdjz6&clgjKOKZhS_;b%zhjuycC z6P6HIF7v~$152jaVSleyDy7k!T!=_AwP(nnOLD)h> z7sX)I0OQ4`E~XlLfFh$BiyZYByTL>R<+#XUQuXDWCRJb1CG(hSReabcQJPitqZmaY z={49Gn-Zi|TVQRB-41uyIJ0@M2< znU~nHCNim$*rX=2{dlKf7n|uvJT@np|MSfI6=wcArU`{h<=J`C%(cHF%sM4@vl0z? z?)P9X>y<#ceMD9oJcj*53e9fE0U{fXuf#zjl`hQ3AtE~+nS#Sajz}6Q$A^SYdNqoU z?A2#AO!QV~#|EqF!;y#_AC6BHBG$gRuGZSM0&#L%%54AtGMN^u(GFVDBB0ZknQS3C z?#67SVh(+r&Eq-Oh%%0A!GmhOHH9`^Ya;8;f6o2F57U7=^rSLjQmTY#$4ekx1KZu^1hA>Bu6O z$08$81fH|ghIi5@8>~&kU3zw8NAH=e3dE;v#MgqiM_Oho4W(E!e7ImBh3I?E{wOf7 z?hNNjeUK8J0}}3##4kaKUkzl-*nr=Bxb7eL@OMDbUMea#6?xkQG+Be11Ol3bsHaI- z0`f;?14=RV3u^@qaX8l0cUve)!BCR!9E$fpu^1voEQW{?OH%z&h0gH;92U!P#Mn~<qEW|2$#qhVF+=M@UYi!- F{0E#}s<{9F delta 2350 zcmZ`)3s6*582--QyZ7!cmjY3gQE6Sw1{Pc;X0k?S5*kTUn#@#6ZB{@YF^~(SmU?X} zvouj}KJpoYA({y)7j;e3veGisUM7|yS@txOvWH6lxx0IJGn<`z?{~ic{Lgd#e``}u zrZ^5?-MzQ76GNET3-xoxzzJ z1?xE@dCT&O%6;5U9S>lGmM9H~S>^ykodaGpDAHQ4$&Tk(aAQw&{kzQgyL*WT6B#-l&$z|Z(a#(9PWZhX3@Vp?%op(nH4 zmtWu;=FKA)GZb9FuUefwTk25o8-CX=*as&6q2N#MLm?l$>{;cdfhv(*f!h_(!Hd+P z-Q#HME)lv3PI~tNEc;<61WVTTtf)*&bQ1{US$aQ+cx`#~_!!Kig%a3<=kUBH+~88@ zk4xEssq_reVc-hFQzCFt5LXdj5`jxi%t6?j3pR2yj2va72Zp0BMqmI&VlYPGZsg!T z+#3!A>S!K`5$c>!Cd@-=T8P{1M|Exs7LVkv{a8ZyMIB4sLNi|CuQl$N*k-)UrSxRD zb=0~=qJzW~P7p5rw<;Hx(ldyQ)sO;biVOvF_bY~v6cUt>pgypZEAth7rwBSWay9-9 z7ho*9QS76s4EG}*W6%>1P-bJ%595%I@wg4S$ihQZhzS_0Vj?DE5(@D!D(LFWrqxr( z!vf@EF$%DfBw|f>ktG$!fB))nsjw$=anLTa@51%!W@U2XS;Vk0TaOz=fH}z$}$+ z>TEg`6(yL1S$GnQsQ$HhhN?OjEz~~;sP0Fo-Y4jqwqrhZ_5$kBg-oPz#vAIayTwe2mqUX0nMsp$&G3mtkeS z?7cKsT!#8-PCfdh?ZQb$B}p5VN>RCmbRAzANF?+%Nxx-S*?Ed&6*{=appb?)tnq`X z@uPvP={xb0j*G#Cj!Pj!2gy)Xz>wNMWJw5H`pdNRcci7uA^oGg;oU*|SL$(?mQw@v zu1O`?OeOjHsi^z)0BR0^juc3QUkB#)(h6e1RS#*fj$7%AM zrmK5~=FTNFGKMA=g{`bBwzFjHV7H=KWkaB|5olp!h@6OB%!l1*(q%}sxBT?lPNA9C1@(4~-+oCc-jB_Qo?0l$<( nabu58I3UU(B^j;Sxo(NQTY=tj8F49{+>9Y1?~MQLSeWn+#es~5 diff --git a/bin/View/GUITestFileTable.class b/bin/View/GUITestFileTable.class index 15257ba7e315abfe2469f0a346bbdca08ca64d63..bb51c58dd77c71336e12a835bbc5f1cf048e6090 100644 GIT binary patch literal 6427 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 Dl+PE# diff --git a/bin/View/GUITime.class b/bin/View/GUITime.class index ec249ae2e8e1deea2d9696954d0adc2f49ea29fd..62d381c54118f80f0a1edf2c51f9c7103ad3b9fc 100644 GIT binary patch literal 3785 zcmbVOTXYoV9shmVWOuU+uvw5O5sV0u>(_BFeiuQ5f-!7c(_Mq7hfdiORs@X-iSyZ9mSxhpC>hUXMA~j0%W}KUM9%T;HfQWY$@I!D4X2iQSLNF0r=ec`ei{hxvrD$O zUm?`dIjqn);EY%?gs|SgIVr_CWHmL!$1V# z2(~P*k4|P3TdDGl>E*{poI<;l(v4v=Iz?qt;iiro9rZ2TWgv>?2)2`HN!^12M6rW$ zutYIzL#Md1(?AR>1lnc5z{&{jR%q4n)Fq<7Y!^o?H;Q`{nybay+aAMibjq>MUzZ$8{a` zoqara-pYG@enkrg5?B+XM%%!7v~n_YQj6+{3!!LW0woU1l;x#48fCLUosFyj16ZB5 zOV+XSM9y+g$#k;e(oWti4x6qmc=fW;8?!lKtJ3xRqb~xF&eeK*(6vYU%|hC|=#;$} zrm$YjPaBxQMYe@DFC>MwYKO{3@!5}>CA#G@stBGW!*ZnqPHD<>O}pex#W0KY%{-nq z@C;Tm^9357k(-Yh_;~Gx)t|+42A;uQEu<)GYu%D|`V?ltd=20km&VY8GU zbKD3%$NbbB87eUV8h;62kg|M{I%RbA?9SrL2EKx?Qr6aNT$+A+ON728+gjo42EKuB za>UFLPC;i~8U~z+NvC9$yuP}*sFj*!b?Q=}uwhYsHSKlez9?Si!cCjy(OJv(WDqyw zdj`HQ+aba*PFXWv6hGv8t)CYz)QBw|a?B+qPhVEyFE(@!op{p32)Pp$)MTT8eBH&F*C6s{VwKlcXy0+GW*IMwG7QFxe8r+mzz~*e?&UtiHkRq}zo1pjI74#%S z74&NI0(NH;d*-n>`6hbj&^Lzznt#9-KBSSsWIT2iL)lQ`2vd_dn#ndLj%Tvr#6y{E zB$3Hvqlwd*Y&@Je!!we|@{A@P;n|#cG*iLj)MaLA;PH9nD;Q1AVJsP%!}#mEL=Mm0 zx}+&IVk2DKhQG5R{((*S5Svv4KLXnM!rz7tRYa$H5_hR*uuVOO?UN{(k!t1I|~9G^_Z6BT?WwSbqh(fA#q z_~v3S+Php(j?g|JH@?y5m zvY~-)jzbSyeJ2~c7aOpP`Pz-GxSRW85BB383}P?R=)9KZ{>4=?iT z;$`&X6%24w9mKmhgx}+^&geQnYt@Xd!5jD%zRjE}d5!wH#oMfvKTOE$8ez!2j-!pJ4Eqm1Y{ z9>xi7#!Q{>xvKB<4?kjWDg2m{O$gn*WfPH~)WX=$AS8@%vW+9LnBthe9j3^cI|(D{so$##KMfpdXl0CaM2-0QR5{AX zUy#phRGQ*%Q>bSSKMRmXBCiqY2`Ik|5TU$IWFVl3j79>P!Fq~D0?KGW`4s_;2;~i# z18x3I4ar?aLrpzRZ((i@?_RMOB literal 3137 zcmbVOYj7LY75=Ve>%}IKl!qPC81u9(L1a5lFmVXPHVH~(C$aoM;gyxNkvEoi!+I4b zp%nT6`bt|`=z~6>Elpeo)eNQ6xn5^{!6+||*%zs{$+I+Fw_JwEP(1!rU3V_az?O5CYd9D5+Ooh_ zKd_q4*bA=1BPd5LDjOZyOC{TL6f2ljOLyxIon$tI<7*xC&fRMM5FLaMnwIGv5(xG6 z&k3}T+Z7{@5V|yM!}bVn71+E!VR7ul=OntDyZdsvT>o4Q0=H@CKv+_@Ylt8m!JQim zqOupo-84C`yXA$7UG0&zbK1|+gigN9fX_cIt(kF$>POx>``mn8athE38H6O>S=Z%JDe z5Axu9hk6zty&T0u0+GRi0gpLMW?#UJ3v>+jOiHCkNDg`AQIf+RnIk#kk;iFq(ASuh z^nOo%g7naUq-9j6G;GF}2nshPz^`!})0mZcWF>d>wKmj=(mA8-j(UlFOhW?6I4z#m z@Hn<}0!nqWR`EwkU`yV#jH&uk$#7<5o3oI4yR6sdbjOsuFKl-gOm^<(eCr^NMxfJs zvuBPvW@SvT=JiW<-Hqc6x}@WZ1_NgWV#|i>K?1w{%FEI8WRtq3R}F_@N3cMJjYh|9 zYuR;l({h*NsG=*zWl=*7OH6H*jxP#`oRr!c&NrnjaTSh+WwdT;Y;{3_nJzLH;~ug z@|51rQJIhzHN1qE*}i(EBGBKGigA1CyloklJK8cB&3dwSc1s!rc7JBxPkjr_evUF& z|DtQ}V~le4u4woczRmlJ*b&-b3oKNi?2GZ$Q`W42QDUr}!C1uIw1PYse<_V1Ye1MUv}R z2Mz3$l%1@nuQK|khM(gXUW)~0x;-=heUrTZqNd8tl*42cTpn#wKks*YykOUzvT?+e z^Pu^&vPYf;xATA@fY%e`CCC->3RF*CS?bAqNIiM$s3-3i_2fjWCnu6tQl#6kmDc#~ z!FH}Y0PzlW1)t~AYv@cT!tY{dF?5|v5;v0gG>Lz$VOOEpE=7raVk$AM_zuNq6Z|SZ zEcs9pf8jPIh%{}y9a4g*FG$QPzJcymZ!M;ktM%TMwhJ{DJ*sYLw4)mi zZo}VM?SF7)KE+)kj(bEWdc_=HTm~}2#JzZudo-_FcnVJ|JG^84N=~sa+9>;wKF<`_ zP+CR#I;y11d?wVuIk{MwEe$*)mwG0VYT#n#I-V^?6L*FZ%*%5PypU$J{h3vKCDSg| zB^=rS4=A`JfD_v`;KK?J|4)2G;gJBR`Dm;6c?o}(rPH!ck!7w1*u8`3!Vq?2FY`2v zUhKnt*pEZFA4f5QJRV?{4&W?Cv513sj{oRhBKi$H#QA?1S8*7>#u(ngI6lCH%IFR+ zYko$z;`jI}zQ&vie4YE$l(cnnYM5J5+4VMKfhft9A5IQB`Fl?$jlZ7I&?>$eFzsZ% zLuMdAz85eOd6mp?fXF?H3HFS%B8mx+`2cy1gkmJ}eOWi<{s)SZvL7m{W2obg_|Yof zxQ1)gkzsbXhS?n$mSHL+2vZ?Jn9V&h%;p{$SrbuAU`brkRxX7F3gvchwC zACKYB)chMx<756C`6r%W!JZVG@RYa}Pm5lh5ySjTaTq0W9Azl0l4gd%}oQP75~{{fl{?g9V+ diff --git a/bin/View/MyColors.class b/bin/View/MyColors.class new file mode 100644 index 0000000000000000000000000000000000000000..b2ccf6088a58b01147877ec423c16c496b401eaf GIT binary patch literal 912 zcmbVKUu)A)6#v~OP0}>ol5M&=UDZ`3tzbTY)0c@5$ST-b7<;;nq0N>yl4TA*iyuH3 z2s$4Iihcm!1)qHMLx@_>z0KwdKAFJz^UFEs_dECI^Y8bcCKKGl4IL$hS}%?cz0DUJ zX_999I#dRGmp|uT!p8&eQGYiIbA~EUAMk8%YZ#3p24^RbCHye=WZzu|i>E<680JNZ zu^uMzIL_}gC~m9Apl+m3BOMmQ+-$FjD&{QA!)DOdiyqDOeZSSKfMLNx8JdWeEa=b} z=7V?~bq+@TDBI%wgaj=FX~>fv&tj2F(1e1z7+WFkd>HSGzL{M~v@wWI1uwaN>mO?w zv0SK=F)*J5rp11>ZqCEKP5w-hNm*t$J;=i7VJsBYPEYiX*cR7Gz5<{GLu^BlA$B3J zP-H-?X97%o7tc3a`-tkc@_~$liGyDbew?7z-Btx;2X@DPEc3F=J)2&cYa&-1e4#c8 z=w~yI6bTpwU_X)hJ2>aa&P|p~v*eP@!D|O!9en>^zQwn+VF?$=n&g3t7-5;LKzJ` X6uU+hRj74M`w6DY|6z@w5}JPibrGxg literal 0 HcmV?d00001 diff --git a/bin/View/MyView.class b/bin/View/MyView.class index ee033ebad8e060eec7177c02330031159adaaf6d..948961c8c104759291e51f904bd27a38f0cb8f7e 100644 GIT binary patch literal 2956 zcmZuxX;Tze6g|yiOVfymKnNNgNn{v=F^D3HM8O~+gKR=DN@%cyjl+=445Hc0Vm7n? zkW?jA8L3LD@&od7@&jVdeZ5T6_J@Aw_Iu~vckjE)KmYyt_w(ntgkN-2XsBIq?45Mx zk${dW4F@-@2Ua?3<<`?TRyXXmqKrSC)=l5{D zJ#w0q9q+$z)h=32*1oHut!yxQ==(NTwASv2eN!7eZ4jIDcA+>*Tb_e0fxSHkWbapO zM;_`xnZ$pd)ykQ?(6Ge-8iHeQi;Uo{r>&fw)o^%HGW0NA*m0Pn3AIbwzCkDF6o>c- z$;r&tT|3L9D!kaaprLAnTLvnTFmV(oG*l)#7j(SJ;DXG#P8ev%Ng;J;I2JYKy608_ z?bbj;r-@d)tfPy;1*TMn4Wy6|N{@*e7&=Zf7@wlDY#{A2&X}l$spBl`#Aobh9d^06%!U#S)&EJIDgNU8m&r> zOUcwvIyrl4dvn#!2Q9d@W@Q(wydy2?ZB`ZUIqcuMJsxVP-jo^?D|?Gk{9TdC;F6Z5 zPnH2$hGZF$WlWZgEbUmKZ;tY8iVdPM54Ci4lJjZXTIb`Yuw!Byt72qFRJmlZqd|9s zBue#s7wNL{ylUdpypRGmk-VTVy_t0=O!KE!t;_M|Rzry5Pp$(l!!KaAY>4FV@;0C6 zm1l(K?UL8x*^8F3hNEG_(PL_QzIt;k?5jV?4A-_4D%&b#PIhRa(L3Ke>srIa@DVja zuk970F}JmyU$bRa(j|9#^vDoHf)!ZFubS;&A>|AZIV==%Bq(IpD`aCUWXmdKV=83Z zDP(skR{WPyL1Vr7lXZm5}65YH1gzO6aDTrucdZ zy%hT>o-3iB;sC{qB@9v=qIkK4D-=g4zFER3#W9K#C0wVNp?IT&X^OK;sXutZF6K*E zOi^BZhNTkjq$;1`o!^zOYg{j=IGa($Inlsaj&QPeFqU36>m~k;F^)M#vdl;v9LFQR z-xHj`w``NU)NghpgN=9j#~87WdyHF?7Wd-+l^ltGM!aZy28Y;9+#vQ6?-TopS>hmZ zlX!)gBaRZch}Vhl5vPgo6O+VzIgB1A6FA9ab}(T{2GU7qQBZk@ssfUzecYCGiRY%0t35LsKEdM{x}wtNb~>h*9p3Dv!o0Kf#wV%7anmiCE>Y@O6yxm8kMmtnxRkU$-~IuRR)7 to{d$0itl2Sr=!XXvC7}$hZyDSQRQ2)%0J?EjPjkR@^Y;5PpXuD{vQyZR+In$ literal 2665 zcmdUwSyK~15Xb)$BMBjZ1OYE}@dOXzg$DsV5HwceMWD*ZO_+kkWS81qqI@!|v`U}# zLy0}J*CdXb2VZ>1c1`zxelye4)A|16)0cw-EaG_vDTaX!i@z^c_l3zI&2VJLY@5ZV zX>S!@)^~Wr&!CSXFJG-Hwzj=d+`H?1b$WH^}s zyMxi*)_k+^PTiYyP;^8vYuxi!i4|^eBIb1jNS&2xOC)M25z&}paVB4xHg7T&&L+=biY_3j$raai+$_#9HnncM+;f_3 zzG*a^)~?kweao?pUDu(4X?gQTuD`a;4Xd?FC1z9!)|`Dz7s_p#VA{6h8+C3(j9kBx zQcc|O9m6#I{ayawD047yA&*I1q*pL4a~?eGHQ%M`Dv2ZyS1g;q*lX3f8$UFsVKz5R z*Afpebf*1ni(ctqaE(D55S8t5pK>fJJ3U>V*~ns+;V&0M_d?5VabN8gVuLerjU=T@ zl^-g@Hd0V!Q6m`$G+`?lQ6y0_8446ph0{AzM3I*c6zRgc@6tuDfng%#b$1SiNfq23 zrWL}yhOI^2Yt&pu19r#zVK}aEJ3_=%vKh9KaZ+m=i8!EA=rosLttY6t&oJH= z&VI!CuQW>G5`Ftf1KP_peZ?$NVFs7UGF-t`g^&_4Nw}sVT+kAVxULW+{kMc0TEY$7 z?3pm9CETL(Cwchu9`0)ibGXwpVNpxCi+ep29%%{pG2b&`MN24Qp=Ux_OIXBG&xER$ j@Bj~cCcM@X9^tW;u&k-cbqyhf6{_PDR#7IKCf3uR5TkIo diff --git a/src/Control/MyControlModel.java b/src/Control/MyControlModelPIC.java similarity index 80% rename from src/Control/MyControlModel.java rename to src/Control/MyControlModelPIC.java index 93841eb..56a9805 100644 --- a/src/Control/MyControlModel.java +++ b/src/Control/MyControlModelPIC.java @@ -5,13 +5,13 @@ import java.util.ArrayList; import Model.MyModel; import View.MyView; -public class MyControlModel { +public class MyControlModelPIC { MyModel oModel; MyView oView; //put Objects to manipulate here - public MyControlModel(MyModel model, MyView view) { + public MyControlModelPIC(MyModel model, MyView view) { oModel = model; oView = view; } @@ -73,28 +73,7 @@ public class MyControlModel { public void setRamModel(int[][] aiiRam) { } - - - public void startProgramModel() { - - } - - public void stepProgramModel() { - - } - - public void pauseProgramModel() { - - } - - public void resetProgramModel() { - - } - - public void controlWDTModel(boolean bEnabled) { - - } public void setQuarzModel(int iElement) { diff --git a/src/Control/MyControlModelRuntime.java b/src/Control/MyControlModelRuntime.java new file mode 100644 index 0000000..0f737d2 --- /dev/null +++ b/src/Control/MyControlModelRuntime.java @@ -0,0 +1,85 @@ +package Control; + +import Model.MyModel; +import View.MyView; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.KeyEvent; + +import java.util.ArrayList; + +import javax.swing.JButton; +import javax.swing.JCheckBox; + +public class MyControlModelRuntime implements ActionListener { + + MyModel oMyModel; + + ArrayList oBreakpoints; + ArrayList oControlButtons; + + public MyControlModelRuntime(MyModel model, MyView view) { + oMyModel = model; + oControlButtons = view.getGUIMCMenu().getControlButtons(); + oBreakpoints = view.getGUITestFileTable().getCheckboxes(); + addActionListeners(); + } + + private void startProgramEnvironment() { + oMyModel.start(); + } + + private void stepProgramEnvironment() { + oMyModel.step(); + } + + private void pauseProgramEnvironment() { + oMyModel.pause(); + } + + private void resetProgramEnvironment() { + + } + + public void controlWDTEnvironment(boolean bEnabled) { + + } + + @Override + public void actionPerformed(ActionEvent e) { + int i = 0; + for (JCheckBox oBreakpoint : oBreakpoints) { + if (e.getSource() == oBreakpoint) { + oMyModel.controlBreakpoint(i); + } + i++; + } + if (e.getSource() == oControlButtons.get(0)) { + //startProgramEnvironment(); + System.out.println("Test"); + } + if (e.getSource() == oControlButtons.get(1)) { + + } + if (e.getSource() == oControlButtons.get(2)) { + + } + + // TODO Auto-generated method stub + + } + + private void addActionListeners() { + if (oBreakpoints != null) { + for (JCheckBox oBreakpoint : oBreakpoints) { + oBreakpoint.addActionListener(this); + } + } + if (oControlButtons != null) { + for (JButton oButton : oControlButtons) { + oButton.addActionListener(this); + } + } + } +} \ No newline at end of file diff --git a/src/Control/MyControlView.java b/src/Control/MyControlView.java index ce24bc1..e916029 100644 --- a/src/Control/MyControlView.java +++ b/src/Control/MyControlView.java @@ -10,7 +10,7 @@ public class MyControlView { MyView oMyView; MyModel oMyModel; - public MyControlView(MyView view, MyModel model) { + public MyControlView(MyModel model, MyView view) { oMyView = view; oMyModel = model; } diff --git a/src/Model/MyModel.java b/src/Model/MyModel.java index f3c9151..a189ff9 100644 --- a/src/Model/MyModel.java +++ b/src/Model/MyModel.java @@ -1,22 +1,160 @@ package Model; +import java.util.ArrayList; + +import Model.Microcontroller.Bitmask; import Model.Microcontroller.PIC; -import Model.Runtime.Environment; +import Model.Microcontroller.WATCHDOG; +import View.GUIMainFrame; public class MyModel { - PIC oPIC; - Environment oEnvironment; - - public MyModel(PIC pic, Environment env) { - oPIC = pic; - oEnvironment = env; + private PIC oPIC; + + private int iModelState = 3; + private int iActualLine; + private int iLastLine; + + private ArrayList listBreakpoints = new ArrayList(); + + private long liRuntimeRun; + private long liRuntimeStep; + + private boolean[] bBreakpoints; + + private WATCHDOG watchdog; + GUIMainFrame oMainFrame; + + public MyModel() { + oPIC = new PIC(); } public PIC getPIC() { return this.oPIC; } - public Environment getEnvironment() { - return this.oEnvironment; + private int getModelState() { + return iModelState; + } + + /** + * -1 == ERROR, 0 == END, 1 == START, 2 == PAUSE, 3 == RESET + * @param i + */ + public void setModelState(int i) { + iModelState = i; + } + + public ArrayList getBreakpointsList() { + return listBreakpoints; + } + + public void setBreakpointsList(ArrayList liBreakpoints) { + listBreakpoints = liBreakpoints; + bBreakpoints = new boolean[listBreakpoints.size()]; + } + + /** + * + * @return + */ + public int getActualLine() { + return iActualLine; + } + + /** + * + * @return + */ + public int getLastLine() { + return iLastLine; + } + + /** + * + * @return + */ + public long getRuntimeRun() { + return liRuntimeRun; + } + + /** + * + * @return + */ + public long getRuntimeStep() { + return liRuntimeStep; + } + + /** + * + * @return + */ + public WATCHDOG getWatchdog() { + return watchdog; + } + + public void step() { + //Check if step valid + if (oPIC.getRam().get_Programcounter() < (oPIC.getEeprom().getLengthEEPROM() - 1)) { + final long timeStart = System.nanoTime(); + + //Makes one step through the eeprom. + Bitmask oBitmask = new Bitmask(); + oBitmask.bitMaskDecoderAndExecuteCommand(oPIC.getEeprom().getElement(oPIC.getRam().get_Programcounter()), oPIC); + + final long timeEnd = System.nanoTime(); + + liRuntimeStep += (timeEnd - timeStart); + + } else { + System.out.println("Step invalid, end of file reached!"); + } + } + + public void start() { + if (getModelState() != 2) { //Do not start again if paused, instead call start to unpause only. + final long timeStart = System.nanoTime(); + + //workWithWatchdog(1, 1); + //Check if set breakpoint reached or program was stopped or interrupt + + while (getModelState() != 0) { + switch (iModelState) { + + case 1: { //START + step(); + // + //workWithWatchdog(1, 2); + final long timeEnd = System.nanoTime(); + liRuntimeRun += timeEnd - timeStart; + oMainFrame.updateWindow(); + }break; + + case 2: { //PAUSE resume() has to be called to continue + while (iModelState == 2) {} + }break; + } + } + } else { //Unpause + iModelState = 1; + } + } + + public void reset() { + if (getModelState() != 1) { + oPIC.resetPIC(); + iModelState = 3; //RESET + } + } + + public void pause() { + iModelState = 2; + } + + public void controlBreakpoint(int iBreakpoint) { + if (bBreakpoints != null) { + bBreakpoints[iBreakpoint] = !bBreakpoints[iBreakpoint]; + System.out.println("Breakpoint " + iBreakpoint + " was set to " + bBreakpoints[iBreakpoint]); + } } } diff --git a/src/Model/Runtime/Environment.java b/src/Model/Runtime/Environment.java deleted file mode 100755 index 6693784..0000000 --- a/src/Model/Runtime/Environment.java +++ /dev/null @@ -1,138 +0,0 @@ -/** - * @author Aaron Moser - * @date 21.02.2022 - * @lastchange 21.02.2022 - */ - -package Model.Runtime; - -import java.util.ArrayList; - -import Model.Microcontroller.WATCHDOG; -import Model.Microcontroller.PIC; -import View.GUIMainFrame; - -public class Environment { - - private PIC oPIC; - - private String sEepromDataFile; - private String sActualCommand; - - private int iEnvironmentState; - private int iActualLine; - private int iLastLine; - - private ArrayList listBreakpoints = new ArrayList(); - - private long liRuntime; - - private WATCHDOG watchdog; - - public Environment() { - - oPIC = new PIC(); - - GUIMainFrame oMainFrame = new GUIMainFrame(this); - - watchdog = new WATCHDOG(); - - - - - - sEepromDataFile = ""; - sActualCommand = ""; - - iEnvironmentState = 0; - - while (iEnvironmentState > -1) { - - // loadfile command readEepromFile.readFileAndWriteToEEPROM(new File(sEepromDataFile), oPIC); - } - } - - public PIC getPIC() { - return oPIC; - } - - public ArrayList getBreakpoints() { - return listBreakpoints; - } - - /** - * - * @param iBreakpoint - * @param bState - */ - public void changeListBreakpoints(int iBreakpoint, boolean bState) { - if (iBreakpoint > -1) { - if (bState) { - //add new breakpoint to list - boolean bExists = false; - for (int i = 0; i < listBreakpoints.size(); i++) { - if (listBreakpoints.get(i) == iBreakpoint) - bExists = true; - } - if (!bExists) { - listBreakpoints.add(iBreakpoint); - } - } else { - //remove breakpoint from list - int iIndex = -1; - for (int i = 0; i < listBreakpoints.size(); i++) { - if (listBreakpoints.get(i) == iBreakpoint) { - iIndex = i; - i = listBreakpoints.size(); - } - } - if (iIndex > -1) { - listBreakpoints.remove(iIndex); - } - } - } else { - //remove all breakpoints from list - while (listBreakpoints.size() > 0) { - listBreakpoints.remove(0); - } - } - - } - - /** - * - * @return - */ - public int getActualLine() { - return iActualLine; - } - - /** - * - * @return - */ - public int getLastLine() { - return iLastLine; - } - - /** - * - * @return - */ - public long getRuntime() { - return liRuntime; - } - - /** - * - * @return - */ - public WATCHDOG getWatchdog() { - return watchdog; - } - - public void step() { - - } -} - diff --git a/src/Model/Runtime/Main.java b/src/Model/Runtime/Main.java index fb143fa..73fce95 100755 --- a/src/Model/Runtime/Main.java +++ b/src/Model/Runtime/Main.java @@ -1,7 +1,17 @@ package Model.Runtime; +import Control.MyControlModelPIC; +import Control.MyControlModelRuntime; +import Control.MyControlView; +import Model.MyModel; +import View.MyView; + public class Main { public static void main(String[] args) { - Environment env = new Environment(); + MyModel oModel = new MyModel(); + MyView oView = new MyView(oModel); + MyControlView oControlView = new MyControlView(oModel, oView); + MyControlModelRuntime oControlModelRuntime = new MyControlModelRuntime(oModel, oView); + MyControlModelPIC oControlModelPIC = new MyControlModelPIC(oModel, oView); } } \ No newline at end of file diff --git a/src/View/GUIMainFrame.java b/src/View/GUIMainFrame.java index 6bc1a5a..f6dfd9c 100755 --- a/src/View/GUIMainFrame.java +++ b/src/View/GUIMainFrame.java @@ -10,42 +10,8 @@ import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JPanel; -import Control.MyControlModel; -import Control.MyControlView; -import Model.MyModel; -import Model.Runtime.Environment; - public class GUIMainFrame extends JFrame { - /** - * Color oWhite = new Color(255, 253, 250); - * Color oDarkGray = new Color(76, 78, 82); - * Color oDarkGrayB = new Color(47, 47, 47); - * Color oLightBlue = new Color(173, 216, 230); - * Color oOrangeDM = new Color(255, 170, 0); - * Color oLightBlueDM = new Color(0, 213, 255); - * Color oOrangeDMB = new Color(255, 85, 0); - * First Color == TextColor - * Second Color == BackgroundColor - * Third Color == BorderColor - * Fourth Color == TextColor Marked - * Fifth Color == BackgroundColor Marked - * Sixth Color == BorderColor Marked - */ - Color[] aoDarkTheme = {new Color(255, 253, 250), new Color(76, 78, 82), new Color(47, 47, 47), new Color(0, 213, 255), new Color(255, 170, 0), new Color(255, 85, 0)}; - Color[] aoLightTheme = {new Color(76, 78, 82), new Color(255, 253, 250), new Color(173, 216, 230), new Color(0, 213, 255), new Color(255, 170, 0), new Color(255, 85, 0)}; - - //Components of gui-main-frame - GUITestFileTable oGUITestFileTable = new GUITestFileTable(); - GUIMenuBar oGUIMenuBar; - GUIRegister oGUIRegister = new GUIRegister(); - GUIRegistersDetailed oGUIRegistersDetailed = new GUIRegistersDetailed(); - GUIRamTable oGUIRamTable = new GUIRamTable(); - GUIPorts oGUIPorts = new GUIPorts(); - GUIStack oGUIStack = new GUIStack(); - GUIMCMenu oGUIMCMenu = new GUIMCMenu(); - GUITime oGUITime = new GUITime(); - //Panels of gui-main-frame JPanel oMainPanel = new JPanel(); JPanel oPanel0 = new JPanel(); @@ -53,27 +19,31 @@ public class GUIMainFrame extends JFrame { JPanel oPanel2 = new JPanel(); JPanel oPanel3 = new JPanel(); + ArrayList oPanels = new ArrayList(); + /** * Object for storing all components, will be overhanded to menubar, to set theme. - * */ MyView oMyView; - MyModel oMyModel; - - MyControlView mcv; - - ArrayList oPanels = new ArrayList(); - /** * Constructor */ - public GUIMainFrame(Environment oEnvironment) { + public GUIMainFrame(GUIMenuBar oGUIMenuBar, MyView view) { + oMyView = view; + + // sets title of frame + this.setTitle("PIC-Simulator GUI"); + + // if x is pressed, exit application (HIDE_ON_CLOSE-hides application, DO_NOTHING_ON_CLOSE-prevents user from closing application) + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + //prevent frame from beeing resized + this.setResizable(false); + + //sets x and y dimension of frame + this.setSize(1400, 800); - this.setTitle("PIC-Simulator GUI"); // sets title of frame - this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // if x is pressed, exit application (HIDE_ON_CLOSE-hides application, DO_NOTHING_ON_CLOSE-prevents user from closing application) - this.setResizable(false); // prevent frame from beeing resized - this.setSize(1400, 800); //sets x and y dimension of frame //Set Icon ImageIcon guiLogo = new ImageIcon("./pictures/gui_logo.png"); // create an ImageIcon this.setIconImage(guiLogo.getImage()); // change icon of frame @@ -81,19 +51,16 @@ public class GUIMainFrame extends JFrame { //Adds components to frame, sets layouts,... buildGUIMainFrame(); - //Init view object with components of main frame. - oMyView = new MyView(this, oGUIMCMenu, oGUIPorts, oGUIRamTable, oGUIRegister, oGUIRegistersDetailed, oGUIStack, oGUITestFileTable, oGUITime, oMainPanel, oEnvironment); - //Set menubar - oGUIMenuBar = new GUIMenuBar(oMyModel, oMyView); this.setJMenuBar(oGUIMenuBar); setTheme(0); - updateWindow(); this.setVisible(true); //make frame visible - oMyModel = new MyModel(oEnvironment.getPIC(), oEnvironment); - mcv = new MyControlView(oMyView, oMyModel); - mcv.updateView(); + updateWindow(); + } + + public JPanel getMainPanel() { + return oMainPanel; } private void buildGUIMainFrame() { @@ -114,30 +81,30 @@ public class GUIMainFrame extends JFrame { oConstraints.gridx = 0; oConstraints.gridy = 0; oConstraints.insets = new Insets(10,10,0,0); - oPanel0.add(oGUITestFileTable, oConstraints); + oPanel0.add(oMyView.getGUITestFileTable(), oConstraints); //Build 2nd Panel from left oConstraints.gridx = 0; oConstraints.gridy = 0; oConstraints.insets = new Insets(10,10,0,0); - oPanel1.add(oGUIRegister, oConstraints); + oPanel1.add(oMyView.getGUIRegister(), oConstraints); oConstraints.gridy = 1; oConstraints.insets = new Insets(36,10,0,0); - oPanel1.add(oGUIRegistersDetailed, oConstraints); + oPanel1.add(oMyView.getGUIRegistersDetailed(), oConstraints); oConstraints.gridy = 2; oConstraints.insets = new Insets(47,10,0,0); - oPanel1.add(oGUIRamTable, oConstraints); + oPanel1.add(oMyView.getGUIRamTable(), oConstraints); //Build 3rd Panel from left oConstraints.gridx = 0; oConstraints.gridy = 0; oConstraints.insets = new Insets(10,10,0,0); - oPanel2.add(oGUIPorts, oConstraints); + oPanel2.add(oMyView.getGUIPorts(), oConstraints); oConstraints.gridy = 1; oPanel2.add(oPanel3, oConstraints); oConstraints.gridy = 2; oConstraints.insets = new Insets(45,90,0,0); - oPanel2.add(oGUIMCMenu, oConstraints); + oPanel2.add(oMyView.getGUIMCMenu(), oConstraints); //Build lower panel of 3rd panel oConstraints.gridx = 0; @@ -145,10 +112,10 @@ public class GUIMainFrame extends JFrame { oConstraints.insets = new Insets(0,0,0,0); oConstraints.weightx = 1; oConstraints.weighty = 1; - oPanel3.add(oGUIStack, oConstraints); + oPanel3.add(oMyView.getGUIStack(), oConstraints); oConstraints.insets = new Insets(0,40,0,0); oConstraints.gridx = 1; - oPanel3.add(oGUITime, oConstraints); + oPanel3.add(oMyView.getGUITime(), oConstraints); //Build MainPanel oConstraints.gridx = 0; @@ -181,30 +148,22 @@ public class GUIMainFrame extends JFrame { public void setTheme(int iThemeNr) { switch (iThemeNr) { case 0: { + Color[] aoLightTheme = MyColors.getTheme(0); for (JPanel oPanel : oPanels) { oPanel.setForeground(aoLightTheme[0]); oPanel.setBackground(aoLightTheme[1]); } this.setForeground(aoLightTheme[0]); this.setBackground(aoLightTheme[1]); - oGUIMCMenu.setTheme(0); - oGUIStack.setTheme(0); - oGUIPorts.setTheme(0); - oGUIRamTable.setTheme(0); - oGUITime.setTheme(0); }break; case 1: { + Color[] aoDarkTheme = MyColors.getTheme(1); for (JPanel oPanel : oPanels) { oPanel.setForeground(aoDarkTheme[0]); oPanel.setBackground(aoDarkTheme[1]); } this.setForeground(aoDarkTheme[0]); this.setBackground(aoDarkTheme[1]); - oGUIMCMenu.setTheme(1); - oGUIStack.setTheme(1); - oGUIPorts.setTheme(1); - oGUIRamTable.setTheme(1); - oGUITime.setTheme(1); }break; } } diff --git a/src/View/GUIMenuBar.java b/src/View/GUIMenuBar.java index a70bde7..f05a6e6 100644 --- a/src/View/GUIMenuBar.java +++ b/src/View/GUIMenuBar.java @@ -15,38 +15,21 @@ import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; -import Control.MyControlModel; -import Model.Backend.MyModel; -import Model.Backend.EepromLoader.ReadEepromFile; +import Model.MyModel; +import Model.EepromLoader.ReadEepromFile; public class GUIMenuBar extends JMenuBar implements ActionListener { - /** - * Color oWhite = new Color(255, 253, 250); - * Color oDarkGray = new Color(76, 78, 82); - * Color oDarkGrayB = new Color(47, 47, 47); - * Color oLightBlue = new Color(173, 216, 230); - * Color oOrangeDM = new Color(255, 170, 0); - * Color oLightBlueDM = new Color(0, 213, 255); - * Color oOrangeDMB = new Color(255, 85, 0); - * First Color == TextColor - * Second Color == BackgroundColor - * Third Color == BorderColor - * Fourth Color == TextColor Marked - * Fifth Color == BackgroundColor Marked - * Sixth Color == BorderColor Marked - */ - Color[] aoDarkTheme = {new Color(255, 253, 250), new Color(76, 78, 82), new Color(47, 47, 47), new Color(0, 213, 255), new Color(255, 170, 0), new Color(255, 85, 0)}; - Color[] aoLightTheme = {new Color(76, 78, 82), new Color(255, 253, 250), new Color(173, 216, 230), new Color(0, 213, 255), new Color(255, 170, 0), new Color(255, 85, 0)}; MyView oMyView; - MyControlModel oMyControl; + MyModel oMyModel; ArrayList oBreakpoints; ReadEepromFile oRef; boolean[] bBreakpointSet; int iTestFileLoaded = 0; + ArrayList oMenuItems = new ArrayList(); //Custom separators because addSeparator(default) looks not nice. JMenuItem oSeparator0; JMenuItem oSeparator1; @@ -123,7 +106,7 @@ public class GUIMenuBar extends JMenuBar implements ActionListener { //Referrence to change different parts of gui for theme. oMyView = view; - oMyControl = new MyControlModel(model, view); + oMyModel = model; //File oFileMenu = new JMenu(sGermanLang[0]); @@ -157,6 +140,7 @@ public class GUIMenuBar extends JMenuBar implements ActionListener { oManual = new JMenuItem(sGermanLang[22]); oAbout = new JMenuItem(sGermanLang[23]); + fillList(); setActionListeners(); setGerMnemonics(); buildMenubar(); @@ -394,7 +378,7 @@ public class GUIMenuBar extends JMenuBar implements ActionListener { System.out.println("oResetProg"); //TODO } if (e.getSource() == oStepProg) { - oMyView.getEnvironment().step(); + System.out.println("oStepProg"); //TODO } if (e.getSource() == oIntervalASAP) { System.out.println("oIntervalASAP"); //TODO @@ -411,11 +395,13 @@ public class GUIMenuBar extends JMenuBar implements ActionListener { if (e.getSource() == oGerLangItem) { changeLangMenuBar(sGermanLang); setGerMnemonics(); + oMyView.setLanguage(0); //TODO rest of gui } if (e.getSource() == oEngLangItem) { changeLangMenuBar(sEnglishLang); setEngMnemonics(); + oMyView.setLanguage(1); //TODO rest of gui } //Show manual @@ -430,9 +416,31 @@ public class GUIMenuBar extends JMenuBar implements ActionListener { controlBreakpoints(e); } + private void fillList() { + //Fill list oMenuitems + oMenuItems.add(oLoadTestFile); + oMenuItems.add(oLoadProgStateItem); + oMenuItems.add(oSaveProgStateItem); + oMenuItems.add(oExitItem); + oMenuItems.add(oDarkTheme); + oMenuItems.add(oLightTheme); + oMenuItems.add(oStartProg); + oMenuItems.add(oPauseProg); + oMenuItems.add(oResetProg); + oMenuItems.add(oStepProg); + oMenuItems.add(oIntervalASAP); + oMenuItems.add(oInterval1Sec); + oMenuItems.add(oInterval2Sec); + oMenuItems.add(oGerLangItem); + oMenuItems.add(oEngLangItem); + oMenuItems.add(oManual); + oMenuItems.add(oAbout); + } + public void setTheme(int iThemeNr) { switch (iThemeNr) { case 0: { + Color[] aoLightTheme = MyColors.getTheme(0); this.setBackground(aoLightTheme[1]); this.setBorder(BorderFactory.createLineBorder(aoLightTheme[1], 2)); this.setOpaque(true); @@ -531,6 +539,7 @@ public class GUIMenuBar extends JMenuBar implements ActionListener { oSeparator3.setBorder(BorderFactory.createLineBorder(oColorSeparators, 2)); }break; case 1: { + Color[] aoDarkTheme = MyColors.getTheme(1); this.setBackground(aoDarkTheme[1]); this.setBorder(BorderFactory.createLineBorder(aoDarkTheme[1], 2)); this.setOpaque(true); @@ -644,36 +653,40 @@ public class GUIMenuBar extends JMenuBar implements ActionListener { oRef.setOPCode(oRef.getData()); oMyView.getGUITestFileTable().setData(oRef.getData()); - - ArrayList data = oRef.getData(); - int iDataSize = data.size(); - ArrayList opcode = oRef.getOPCode(); - - int iOPCodeSize = opcode.size(); - //If testfile was loaded before, reset all checkboxes - if (iTestFileLoaded > 0) { - oBreakpoints = oMyView.getGUITestFileTable().getCheckboxes(); - for (int i = 0; i < iDataSize; i++) { - oBreakpoints.get(i).setEnabled(false); - } - } - //Enable only checkboxes which belong to real code - for (int i = 0; i < iDataSize; i++) { - for (int j = 0; j < iOPCodeSize; j++) { - if (data.get(i).equals(opcode.get(j))) { - oBreakpoints = oMyView.getGUITestFileTable().getCheckboxes(); - oBreakpoints.get(i).setEnabled(true); - oBreakpoints.get(i).addActionListener(this); - } - } - } - bBreakpointSet = new boolean[iOPCodeSize]; - oRef.readFileAndWriteToEEPROM(oMyView.getEnvironment().getPIC()); + setBreakpointsActionListeners(); + + oRef.readFileAndWriteToEEPROM(oMyModel.getPIC()); oMyView.getGUIMainFrame().updateWindow(); iTestFileLoaded = 1; } } + private void setBreakpointsActionListeners() { + ArrayList data = oRef.getData(); + int iDataSize = data.size(); + ArrayList opcode = oRef.getOPCode(); + + int iOPCodeSize = opcode.size(); + //If testfile was loaded before, reset all checkboxes + if (iTestFileLoaded > 0) { + oBreakpoints = oMyView.getGUITestFileTable().getCheckboxes(); + for (int i = 0; i < iDataSize; i++) { + oBreakpoints.get(i).setEnabled(false); + } + } + //Enable only checkboxes which belong to real code + for (int i = 0; i < iDataSize; i++) { + for (int j = 0; j < iOPCodeSize; j++) { + if (data.get(i).equals(opcode.get(j))) { + oBreakpoints = oMyView.getGUITestFileTable().getCheckboxes(); + oBreakpoints.get(i).setEnabled(true); + oBreakpoints.get(i).addActionListener(this); + } + } + } + bBreakpointSet = new boolean[iOPCodeSize]; + } + private void controlBreakpoints(ActionEvent e) { if (oRef != null) { int iOPCode = oRef.getOPCode().size(); diff --git a/src/View/GUIRegister.java b/src/View/GUIRegister.java index 934c27c..a4c136c 100644 --- a/src/View/GUIRegister.java +++ b/src/View/GUIRegister.java @@ -64,6 +64,7 @@ public class GUIRegister extends JPanel { buildGUIRegister(); setWidth(); setTheme(0); + setLanguage(0); } private void addComponents() { @@ -151,6 +152,18 @@ public class GUIRegister extends JPanel { } } + public void setLanguage(int iLangNr) { + switch (iLangNr) { + case 0: { + oSFRRegisters.setValueAt("Vorteiler", 3, 2); + }break; + case 1: { + oSFRRegisters.setValueAt("Prescaler", 3, 2); + }break; + } + + } + public void setTheme(int iThemeNr) { switch (iThemeNr) { case 0: { diff --git a/src/View/GUITestFileTable.java b/src/View/GUITestFileTable.java index 96786e9..1b52df6 100644 --- a/src/View/GUITestFileTable.java +++ b/src/View/GUITestFileTable.java @@ -22,6 +22,7 @@ public class GUITestFileTable extends JScrollPane { JPanel oTable = new JPanel(); int iTheme = 0; boolean bFileLoaded = false; + JTextField oFill; /** * Color oWhite = new Color(255, 253, 250); @@ -46,7 +47,7 @@ public class GUITestFileTable extends JScrollPane { */ public GUITestFileTable() { - JTextField oFill = new JTextField("Please load testfile!"); + oFill = new JTextField(); oFill.setEditable(false); oLineInformation.add(oFill); @@ -57,6 +58,7 @@ public class GUITestFileTable extends JScrollPane { this.setPreferredSize(new Dimension(600, 700)); this.setViewportView(oTestPanel); setTheme(0); + setLanguage(0); } /** @@ -212,6 +214,17 @@ public class GUITestFileTable extends JScrollPane { } } + public void setLanguage(int iLangNr) { + switch (iLangNr) { + case 0: { + oFill.setText("Bitte Testdatei laden!"); + }break; + case 1: { + oFill.setText("Please load testfile!"); + }break; + } + } + /** * @return Color to set for testfiletable */ diff --git a/src/View/GUITime.java b/src/View/GUITime.java index 4a9865b..e25ad82 100644 --- a/src/View/GUITime.java +++ b/src/View/GUITime.java @@ -33,7 +33,8 @@ public class GUITime extends JPanel { JLabel oLabelWDT = new JLabel("Watchdog Timer"); JCheckBox oEnableWDT = new JCheckBox("WDT"); - JLabel oLabelRuntime = new JLabel("Runtime: 0"); + int iRuntime = 0; + JLabel oLabelRuntime = new JLabel("Runtime: " + iRuntime); JLabel oLabelQuarz = new JLabel("Quarzfrequency"); String[] asIntervals = {"32 kHz", "100 kHz", "500 kHz", "1 MHz", "2 MHz", "4 MHz", "8 MHz", "12 MHz", "16 MHz", "20 MHz"}; @@ -41,6 +42,7 @@ public class GUITime extends JPanel { public GUITime() { buildGUITime(); + setLanguage(0); } private void buildGUITime() { @@ -67,6 +69,27 @@ public class GUITime extends JPanel { this.add(oIntervals, oConstraints); } + public void setLanguage(int iLangNr) { + switch (iLangNr) { + case 0: { + oLabelRuntime.setText("Laufzeit: " + iRuntime); + oLabelQuarz.setText("Quarzfrequenz"); + }break; + case 1: { + oLabelRuntime.setText("Runtime: " + iRuntime); + oLabelQuarz.setText("Quarzfrequency"); + }break; + } + } + + public void setRuntime(int iRuntime) { + this.iRuntime = iRuntime; + } + + public int getRuntime() { + return iRuntime; + } + public void setTheme(int iThemeNr) { switch (iThemeNr) { case 0: { diff --git a/src/View/MyColors.java b/src/View/MyColors.java new file mode 100644 index 0000000..5582d52 --- /dev/null +++ b/src/View/MyColors.java @@ -0,0 +1,42 @@ +package View; + +import java.awt.Color; + +public class MyColors { + + /** + * Color oWhite = new Color(255, 253, 250); + * Color oDarkGray = new Color(76, 78, 82); + * Color oDarkGrayB = new Color(47, 47, 47); + * Color oLightBlue = new Color(173, 216, 230); + * Color oOrangeDM = new Color(255, 170, 0); + * Color oLightBlueDM = new Color(0, 213, 255); + * Color oOrangeDMB = new Color(255, 85, 0); + * First Color == TextColor + * Second Color == BackgroundColor + * Third Color == BorderColor + * Fourth Color == TextColor Marked + * Fifth Color == BackgroundColor Marked + * Sixth Color == BorderColor Marked + */ + static Color[] aoDarkTheme = {new Color(255, 253, 250), new Color(76, 78, 82), new Color(47, 47, 47), new Color(0, 213, 255), new Color(255, 170, 0), new Color(255, 85, 0)}; + static Color[] aoLightTheme = {new Color(76, 78, 82), new Color(255, 253, 250), new Color(173, 216, 230), new Color(0, 213, 255), new Color(255, 170, 0), new Color(255, 85, 0)}; + + public static Color[] getTheme(int iThemeNr) { + Color[] oTheme; + switch (iThemeNr) { + case 0: { + oTheme = aoLightTheme; + }break; + + case 1: { + oTheme = aoDarkTheme; + }break; + + default: { + oTheme = null; + }break; + } + return oTheme; + } +} diff --git a/src/View/MyView.java b/src/View/MyView.java index 2ddfaa4..6a2c6fb 100644 --- a/src/View/MyView.java +++ b/src/View/MyView.java @@ -2,36 +2,36 @@ package View; import javax.swing.JPanel; -import Model.Backend.Runtime.Environment; +import Model.MyModel; public class MyView implements IMyView { - GUIMainFrame oGUIMainFrame; - GUIMCMenu oGUIMCMenu; - GUIPorts oGUIPorts; - GUIRamTable oGUIRamTable; - GUIRegister oGUIRegister; - GUIRegistersDetailed oGUIRegistersDetailed; - GUIStack oGUIStack; - GUITestFileTable oGUITestFileTable; - GUITime oGUITime; + private GUIMainFrame oGUIMainFrame; + private GUIMCMenu oGUIMCMenu; + private GUIPorts oGUIPorts; + private GUIRamTable oGUIRamTable; + private GUIRegister oGUIRegister; + private GUIRegistersDetailed oGUIRegistersDetailed; + private GUIStack oGUIStack; + private GUITestFileTable oGUITestFileTable; + private GUITime oGUITime; + private GUIMenuBar oGUIMenuBar; - JPanel oGUIMainPanel; + private JPanel oGUIMainPanel; - Environment oEnvironment; - - public MyView(GUIMainFrame oGUIMainFrame, GUIMCMenu oGUIMCMenu, GUIPorts oGUIPorts, GUIRamTable oGUIRamTable, GUIRegister oGUIRegister, GUIRegistersDetailed oGUIRegistersDetailed, GUIStack oGUIStack, GUITestFileTable oGUITestFileTable, GUITime oGUITime, JPanel oGUIMainPanel, Environment oEnvironment) { - this.oGUIMainFrame = oGUIMainFrame; - this.oGUIMCMenu = oGUIMCMenu; - this.oGUIPorts = oGUIPorts; - this.oGUIRamTable = oGUIRamTable; - this.oGUIRegister = oGUIRegister; - this.oGUIRegistersDetailed = oGUIRegistersDetailed; - this.oGUIStack = oGUIStack; - this.oGUITestFileTable = oGUITestFileTable; - this.oGUITime = oGUITime; - this.oGUIMainPanel = oGUIMainPanel; - this.oEnvironment = oEnvironment; + public MyView(MyModel model) { + oGUIMenuBar = new GUIMenuBar(model, this); + oGUIMCMenu = new GUIMCMenu(); + oGUIPorts = new GUIPorts(); + oGUIRamTable = new GUIRamTable(); + oGUIRegister = new GUIRegister(); + oGUIRegistersDetailed = new GUIRegistersDetailed(); + oGUIStack = new GUIStack(); + oGUITestFileTable = new GUITestFileTable(); + oGUITime = new GUITime(); + oGUIMainFrame = new GUIMainFrame(oGUIMenuBar, this); + oGUIMainPanel = oGUIMainFrame.getMainPanel(); + setTheme(0); } public void setTheme(int iThemeNr) { @@ -44,6 +44,14 @@ public class MyView implements IMyView { oGUIStack.setTheme(iThemeNr); oGUITestFileTable.setTheme(iThemeNr); oGUITime.setTheme(iThemeNr); + oGUIMenuBar.setTheme(iThemeNr); + } + + public void setLanguage(int iLangNr) { + oGUIMCMenu.setLanguage(iLangNr); + oGUIRegister.setLanguage(iLangNr); + oGUITestFileTable.setLanguage(iLangNr); + oGUITime.setLanguage(iLangNr); } public GUIMainFrame getGUIMainFrame() { @@ -74,6 +82,10 @@ public class MyView implements IMyView { return this.oGUIStack; } + public GUITime getGUITime() { + return this.oGUITime; + } + public GUITestFileTable getGUITestFileTable() { return this.oGUITestFileTable; } @@ -81,8 +93,4 @@ public class MyView implements IMyView { public JPanel getGUIMainPanel() { return this.oGUIMainPanel; } - - public Environment getEnvironment() { - return this.oEnvironment; - } } \ No newline at end of file