From 9ee475b05d1a5b855ab0311f3caa1f8dc1e3c0d6 Mon Sep 17 00:00:00 2001 From: Meruemon Date: Thu, 24 Mar 2022 12:41:49 +0100 Subject: [PATCH] Implemented parts of communication of view with model --- bin/Control/Control.class | Bin 2715 -> 0 bytes bin/Control/IActions.class | Bin 779 -> 0 bytes bin/Control/MyControlModel.class | Bin 0 -> 2832 bytes bin/Control/MyControlView.class | Bin 0 -> 4309 bytes bin/Model/Backend/Microcontroller/RAM.class | Bin 18954 -> 20041 bytes bin/Model/Backend/MyModel.class | Bin 517 -> 766 bytes bin/View/GUIMainFrame.class | Bin 5316 -> 5381 bytes bin/View/GUIMenuBar.class | Bin 12257 -> 13635 bytes bin/View/GUIPorts.class | Bin 6497 -> 6903 bytes bin/View/GUITestFileTable.class | Bin 5802 -> 6177 bytes bin/View/MyView.class | Bin 1762 -> 2843 bytes src/Control/Control.java | 118 ------- src/Control/IActions.java | 58 ---- src/Control/MyControlModel.java | 119 +++++++ src/Control/MyControlView.java | 162 ++++++++++ src/Model/Backend/Microcontroller/RAM.java | 83 ++++- src/Model/Backend/MyModel.java | 9 +- src/Model/Backend/Runtime/Environment.java | 2 +- src/View/GUIMainFrame.java | 45 ++- src/View/GUIMenuBar.java | 342 +++++++++++++------- src/View/GUIPorts.java | 12 + src/View/GUITestFileTable.java | 8 + src/View/MyView.java | 51 ++- 23 files changed, 681 insertions(+), 328 deletions(-) delete mode 100644 bin/Control/Control.class delete mode 100644 bin/Control/IActions.class create mode 100644 bin/Control/MyControlModel.class create mode 100644 bin/Control/MyControlView.class delete mode 100644 src/Control/Control.java delete mode 100644 src/Control/IActions.java create mode 100644 src/Control/MyControlModel.java create mode 100644 src/Control/MyControlView.java diff --git a/bin/Control/Control.class b/bin/Control/Control.class deleted file mode 100644 index dc8fbca52457691d58b7f00daef697d305de5a16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2715 zcma)7Yf}?R6uq55A=6X4uILivP+F z)>iq!AK;HtPxnlqlu0!o=;^+F&*^(lpEO^;eg5+OJKd*;DT*tA8F^P78mU0^ii zG^KdQXuP7n*iawDlZ(=p-V&p0*#X#}0J$ckLWz=(iV^X?zV6neA^PpsW>feHMuL*It(VfHxg}3R{E`lUsZQE=q$0T%TITN z_p~NDvgZjGrDQi$MM>G@mJfEe!DtLA)snQ4U^5!gt4gu)5NW|Yn5@-n!EW8-o{!U2 z=GKlWUspRmY^TY;4wUqM;r(9M>yWrTwhoJV$}qjTfqhA*tewhPTVMYORfG zUK{{c_5qnbMZ=Z7fTJH;IS8p*YrKnEvoBu;O>!x9B#r<|?0MWpkxs`|X=4y%XMdI6 z;eJmXEYXT;D9jyg1!jA?+E5be@`sV|#OLk@bRf%?=n5OnWGsib*CZ~=DVM9YtxZO! zvlVSi-;-9p=(>Ebg3Bl<2}bI&V?#_AH!&ZXwisZwrR$z6?M`7yLx-GI?r}y_k>re~ zf40ruPTxAYC_v;f@LrGain{Fj7WW)i-MccRYVp_LxOgwU{UD>!y5qYop_G8~p*wFV z9cTu2kK=EMVnoXS7)iMw;~B)qD2;I(tLMmw<2y0?KOLK$`$Uto^PlL%M}%TDh4DBg zFdoA=0fG!>lQfOUg#bpU=rmR!0P!$L)$BJM6vO;?`XfAM0dZ9dJ0MQ#4QW8(M1_wo(p0WUYdx2z-kFLZMF?<+QZ`pjn#JKAks{EgzZex|ytWWU?D(vh^dA z<>_Xq*}$LUBTaVr=Xi_$1eDQjya2(&F{dPtlD(=a)cc|m0@)eeF#{Wszy&k#StRf; zGw@X;@NfDj>~Ww>uQl+nOv+G7rn_c?w+B$%3m?7$EyA1kA!3Y{^i#dA=b_Q#`f(24 qP&t5VnI52)B4GX7Sf&+SU&*XZH&UBbGw{DiVA%}xBY|tW>-8U%1YUUn diff --git a/bin/Control/IActions.class b/bin/Control/IActions.class deleted file mode 100644 index 366e3b766a21c2ca38db0dcb7edab3ca5d2cbd6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 779 zcmZvaTW`}a6vvOp)~;R4N`b9hH|{|~l=s1;?j|aAYDl6D*pmrXSTmFaG}ib9o6L;8hbA81!~kVYSMK<56m*Dohg=Q9b47e3t8s@T=DM*G8c*3-w&hdA%j6M@#8J6%!ebb`OgUsb;}*xie*;dgtTDr=GwIP zRjvOuvDLE3wzhp~-|%x0%d;})R%th9?9q3p|1WmM4{7HjgLbS+oeF1?LAQPfZ=J^m z1DpxCZ-CEY2^!#@N0YcrY!TbU6=H|jCEg^iLeKZPMeGxA6Ys!XA76uY&jIls@jmeZ hJoNEL)b}xLpx;e&y8utn=TpjiMttsw883Xs%YWEJu=)T1 diff --git a/bin/Control/MyControlModel.class b/bin/Control/MyControlModel.class new file mode 100644 index 0000000000000000000000000000000000000000..8aafdbeb7c00f1c7211846faaac55f05f3d07ec4 GIT binary patch literal 2832 zcma)7SyK~15bg;{I1EQXE>BR=1kiwrS2%Wv)Um{ zpznYl(Ue8)N@{EGfR#N0QAeo>4CmA)wL;6En7xm1bxsqAI3>Zp}w)L@;g zD7f3eR+q1wlFRJ!w5okZ6Yt;qRid1u81D`R1mdno1?J&Y#EESm*7mSj6hEXjmz|Pf z^0EYt(B87&zHe5G+Hp9ca_vUbof;KiwYY<4EmmbVrax#obbpOwPdM4^c7AJ9n~WrK zs^M!Mw^GYO(BmB5dRkVlv%o7hUXH-qo(?pd_pxeN3ZCG0CB3Mi5oeWp6ukzL;{Z0d z>G5H`Rg*!0KsPvzEBx6 zYY(oy2MyHwHrZ4A>5C`CGBPoIaRbGenPS2~F>am2z+1$?gj!Mnt>kz zfphRk=h(7LQ~}SHNj8)$(_?dkvlbLj^uzZQo?&mMvBDvkS5Ni2+UrJdQ;)O%h90z_ nT7X52Mb1b4HWuKyif`Fm8#}NzD`ubw1ZK>@qd?%Q$~yZG66TH# literal 0 HcmV?d00001 diff --git a/bin/Control/MyControlView.class b/bin/Control/MyControlView.class new file mode 100644 index 0000000000000000000000000000000000000000..e547e2dfd85f8f992813ba3e0f21c4185436c205 GIT binary patch literal 4309 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 literal 18954 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 diff --git a/bin/Model/Backend/MyModel.class b/bin/Model/Backend/MyModel.class index 07c747fcbf751e8934c80859980e31b859a9e91a..639bf7f8b9aa56534891e0e3b185792bfcc974e7 100644 GIT binary patch literal 766 zcma)3%TC)s6g^`HLV`&kg+f~>AcT~Js{Viii$)+Jg@Ou-)TQH$V8EF{#)-sVwNj%> zUGxL^DB$?9h>RCq`1rogz4zRCeER$E`56b;EW;95IW+?rxL-a0R_cL!`jGf#lmr%U zys_s7p1yL=`Zv;#1WM-oq$9A?&9Rgp8sF$BG(jLkmqlL$9CM_{Dl~d1HMx1x_mPg& zP`Xn^B+c$Ct)fGLljeU6$(0nfZ1uQyha#)6vEZPBntR;z!Ly#EOYFGZj>c^YnhOBCe~q z|G;VQO=x_YVCfe_7TypWC=si~dD0xzuz+Powo)2a@RlAMV3lJ;Vy$tIMf)AzXJcIc mtHa)uclJ delta 250 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 diff --git a/bin/View/GUIMenuBar.class b/bin/View/GUIMenuBar.class index 2953cd34163330b3741a91823fb51a133ebea104..514865d456add420dadd3b92db0649ac172d9c55 100644 GIT binary patch literal 13635 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 diff --git a/bin/View/GUIPorts.class b/bin/View/GUIPorts.class index 5f0649a2abcf26e6729b074e2130bc581f8dd87b..d9a9b19c3d485416e9c6d7727b140907e32a33cc 100644 GIT binary patch delta 1309 zcma)6T}TvR6g_8V*V&yNOWpFPG+WEs-89RH9zy5`iOLEhd$0#tb?_%!LAUZDSc2#^ zV%~~^9>TYvzr`$~hhDOxw;+8Lu$gcN5442#>$r|717GotP&>^Su`swj z)YKC>5~=HrL_6#DwDp+nv5h*S_-sYS2Zu)#a%UP@`9)hbVFw568ND>$bqo_nI=Ms$- zR+D#$TFIr>A@8=lDuc_o+#2z&^;OviRvN5i(3YbJiI^&#)a-> zj*LK7Mj$Oi&5@y}b>z`+#fsO(sq7v?p!Npyh&xbs)yQ|)rq(BDIFU=D0;&3mGs!Wj zjU;|WG|wSQvWU`L#Bd6+I>Qm2LzLCTZ91D|kpp(u4|8#XwjPJ^k(77ZN79Ara4K;R zb47xoA>5Vx)^CzhCK|IQ8vkJ;p7Nb?;XoW04&*;vIEXS^x`S{`H2%#*rr?;6#5NHZ z7jyk}5&`LxS1846)Zz^`;4L;wyaVshiudTo2MkDj3?FeCpKwLMm^Me>`NlqQ(M z6ZspAVOn;+%QHhara2F@T!tiTWw19$yom~%sj`*bE}3*UkH|(`hVYaO^EvvQZrTeE z!1I}I;(3Opl_|m&a234L)U6WLpg^M22(VUqQ4!j7RS45nHrrLpC@XEC22}Vf{NW@* bP&63?$e`$OIiZ$QUXdxwnbq=96xRI&%p)z> delta 862 zcma)*O=uHQ6ot>pB%RD;`e)N7Mw1#v(a?wnN^v1rAr$<{$|ATaL5mh4f~n#{2-&!m zGCRekbX}`4twmh8u`XPSSd}XNpi-@=ZE9-AJCi2$_a1m}se3k|Pp?ki zwJhxA<}v+u_TQ-_1Q*RE1>_q?y)YhZKWul4#5h z4)0GNKYjA-nRA&FJ}k4rph_>Ho=Rs^gBOMgW&4g}I{IPBLPbZ$RvA%jVvEXV^RX6D zTDi_FYkduVgYE1vllpF--#)P3U@JprUhk%V{I>pp^o-|?ylyrIcjd5<8bvfdfiiIq z%HgiqP4p>=0#+U6P88^hPtZeLv1Y`ZEc{ON*9mHMLjRR0R*9Xp9+{tnuPbM_vzr(W z>`4^aSYTU?e<~FgF$O@vw5*p9mGvotc!oHhqX#e0EBXLtF@TpC!YgD& zU&L#S;0><5*yi=zUmZKbAOv z_A-a$#hsUp94fqw6<&j7rb2KmA3_rur;F1CSjG#r-2%_vnK-7HAmFw4Bxwz(* pBup=wgBEnSReAT2Utvy#!V&o#2)BjXVivZ+w6sjP-=f@t!AiJE70XSnU6l_G#L=7YC1~)0ip2R_%#D7^pWI=2ROiRwwG#8TEp)60^fUwmO!K*H*=5*VQGB zcy0Nt^3ugBt_t#2#ovw(`KI9te$;UtodP|P@n0NIzGVoMlG3FDUt(@;Jdre33P#op zR9aZGo-R?lSYSv(v)BK6Oh}1edT1F8BeSmob)i3lz9{$D-|+U?DYA znbm^vwh^|l^EjF(XYMN&u37kOlOo}9+tW8&8RABQX9ymi@56@=5Wt5h<~>xK$qk}xt_v4X;|LFQ$(3rlEnbVN)=KgR&He6&-xVQ#~ zPqc6+#qyDC`Qm|ir9a-C4e4aX(mr~kWDPPDcQpI#aghDywUtpEWfq`-co&DUn^N!L zpueCpU!t7$8x{BpOYk*iYQ-At#d_NBq8(eY4?AGdwVmhyPU0YyIfQFC%w;}et}O^v zh)ThPIV0jj6(w1M2+rd>qOB+pKXQp|@j~#XX}DDgHx%96i2P`Nn3iU)88u0I%m)Se zH9e|5Z8la^=;%1Z?#kCU_kngYi}nrM`4(ev3S~Hr3Y>KoEyRMr+`dI4k{pMkO~M0t zMn@6du9?cHJgl0d_prCD^1~T?&x{>p@BYo8N)zjA#Dl1e;1n~zf(E4*MXHQc-Rvfpt+^!cf2&zgGynhq delta 1018 zcmZ`&OH5Ny5Iwi=2kmPlwv_lOp$G_13y8*$7%sY49oS8E-_f}`txy@}8H=08s ztY%RS=HY1GYF_5*R`CP}7~~z^orR@E3{vr?;xexpPCQf5i#~3%q{#hvso(`)Yl#zH zVSsxqiSla|gLuRDTTkF{276b#qELL;e!g%20R)At08SW4Bvff2DeD^E2Jo3ezcEyXI<-b52JjEPYKH!6nm#<6 z{(Ck(iReBm?+TYsnc?<)9WGoJRpJpagX&qw_)3qXHM{_a#F0xQYhc#uaqJj~+B)fIJ11 zas{OXg4hl(eRcE)bHS*H3lk`$op}h|LkFP>5)ncSp$8P{fUF-xg=acswI9%In#~Eu zz=MutUr^RJKrJRLF!r3S_owK)i10;CZDpoehoR{v*(S_GGu*g^9JCsG9aJ62oz|O6 z^>n?uA_;7a0vR(QpAR|~`6h2cL_Om^MEJrtBT~a1%6XSGw2_8(O5O1v4ML;_lkubu z#pSJkNGTp60bNK&H&SW%ZhDOR=qFprm}*6W#zgW>wqk}bjs%5Cib(y)6m4S4U&C7x AA^-pY diff --git a/bin/View/MyView.class b/bin/View/MyView.class index df1e68849806476a646fa4241fb473be252acd3f..d4d2793cdb55552c8b9a4720a78fc306d3ab423c 100644 GIT binary patch literal 2843 zcma)6?OGdE5PlZ|fn}iuS}-E^11V$!Y-ugj(xL*T4FW}=@%v+e6_$pLCQGZ{jd!5W zWAu6a;RSdT-ih^{vme=P_eXyuGiPSrIkWGXnScKK>+hE@@c@lHIyCfET<3+g^^=G^ zavCn4+RtsPYJ11llY>*|(9fe=gQ3F8L7ayE+M}oCE!*|h>-L$WVR%#dlg1?tx{6xe za=dfqZG|Wc{k`Jfsnz|4h6}M<8R#{{yKA5A+Xq!%F%$w)G`I{5ubwxh>tPdElWi1E0&nvR`!6hII^9amRZ=y z`t;ZM&|*bHZk2rK=)^Sx*8&)GgdJ853M4r64G9#_YfxVDq7@RfD!i0fkwg&36{7#({Ov!A$8 zy}OQz*gxSEM%cCn(D9l0KaUoSOqH6G9#>JZ&7s!HWcJwc>5H3}`KF6;^TcKulrS>f zIz!2@Xz%m|G2!MJOoT+cXCR1(*x^_vf+8z#i{e5)QgP9kXc!IirFqjZo=lu}^MrUyGP%vo!1W?*^m5) zpvmXt3S8sFbn@55A%qMk{~@EPBnMMTj-`?uN+mgxN^&5T#8tD@#DqE1#H2af#FSacHBmGRT}_nCLU$9hW+C5%Wfppxm^TZ( zP24sMdJ}idLSGY$zcG6U-sArQR|mKZa;%`2t6+c?4090_Siu$EKFRw_)aG#&i~Q;b zxQ{h4LMGV8K?Zm#4ZfENKEzQ5 zxR?enXM!DkmjN!N!7G{IW1M7wXVc*IOt6d746v03Z)Ad>p_&1nPlLBJ!DsL?z<1K% W-Ar%|-)Ddq)8I-b_y^TW_5T4ZggfK_ delta 288 zcmbO&_K273)W2Q({{LsNWr&~1)hN%M?;h&uo0?bZlvu>bAm|g8nOd%o5Zc(G$H>KI zlbM%UV#mmEcJfz7U3RGI$r4P{H(z3U%s4rnt&Wjt@-wzfLlFiR22lo11~CRc25|;q z1_=g9Ae3j2Vo+s}X3%DkVK8KnWiV%u16nW7;LM;fxq*FUy{7aw1~;uO4B9~26G-a< zX&)f152XEpv>}iV0@B7nIuuBo0_lj23=9lR432}s4xfsEs|hRV^CmF vXV3sb0|re73!n-IpyeJ6It*4om101B3=EzO)(kd4nt@^R3JxAtkYRBE6AC>H diff --git a/src/Control/Control.java b/src/Control/Control.java deleted file mode 100644 index c1d19da..0000000 --- a/src/Control/Control.java +++ /dev/null @@ -1,118 +0,0 @@ -package Control; - -import java.util.ArrayList; - -import Model.Backend.MyModel; -import View.MyView; - -public class Control implements IActions { - - MyModel oModel; - MyView oView; - //put Objects to manipulate here - - public Control(MyModel model, MyView view) { - oModel = model; - oView = view; - } - - public void getWRegister(int iValue) { - - } - - public void getPCintern(int iValue) { - - } - - public void getPCLATH(int iValue) { - - } - - public void getPCL(int iValue) { - - } - - public void getFSR(int iValue) { - - } - - public void getStatus(int iValue) { - - } - - public void getOption(int iValue) { - - } - - public void getPrescaler(int iValue) { - - } - - public void getTMR0(int iValue) { - - } - - - - public void setPortAPinXToY(int iPort, boolean bEnabled) { - - } - - public void setPortBPinXToY(int iPort, boolean bEnabled) { - - } - - public void setPortATrisXToY(int iPort, boolean bEnabled) { - - } - - public void setPortBTrisXToY(int iPort, boolean bEnabled) { - - } - - public void getRam(int[][] aiiRam) { - - } - - - public void startProgram() { - - } - - public void stepProgram() { - - } - - public void pauseProgram() { - - } - - public void resetProgram() { - - } - - public void controlWDT(boolean bEnabled) { - - } - - public void setQuarz(int iElement) { - - } - - - public void loadFileToEEPROM(ArrayList oData) { - - } - - public void saveSimulatorState() { - - } - - public void loadSimulatorState() { - - } - - public void exitSimulator() { - - } -} diff --git a/src/Control/IActions.java b/src/Control/IActions.java deleted file mode 100644 index 8fdbbc3..0000000 --- a/src/Control/IActions.java +++ /dev/null @@ -1,58 +0,0 @@ -package Control; - -import java.util.ArrayList; - -public interface IActions { - - public void getWRegister(int iValue); - - public void getPCintern(int iValue); - - public void getPCLATH(int iValue); - - public void getPCL(int iValue); - - public void getFSR(int iValue); - - public void getStatus(int iValue); - - public void getOption(int iValue); - - public void getPrescaler(int iValue); - - public void getTMR0(int iValue); - - - - public void setPortAPinXToY(int iPort, boolean bEnabled); - - public void setPortBPinXToY(int iPort, boolean bEnabled); - - public void setPortATrisXToY(int iPort, boolean bEnabled); - - public void setPortBTrisXToY(int iPort, boolean bEnabled); - - public void getRam(int[][] aiiRam); - - - public void startProgram(); - - public void stepProgram(); - - public void pauseProgram(); - - public void resetProgram(); - - public void controlWDT(boolean bEnabled); - - public void setQuarz(int iElement); - - - public void loadFileToEEPROM(ArrayList oData); - - public void saveSimulatorState(); - - public void loadSimulatorState(); - - public void exitSimulator(); -} diff --git a/src/Control/MyControlModel.java b/src/Control/MyControlModel.java new file mode 100644 index 0000000..49bc542 --- /dev/null +++ b/src/Control/MyControlModel.java @@ -0,0 +1,119 @@ +package Control; + +import java.util.ArrayList; + +import Model.Backend.MyModel; +import View.MyView; + +public class MyControlModel { + + MyModel oModel; + MyView oView; + //put Objects to manipulate here + + public MyControlModel(MyModel model, MyView view) { + oModel = model; + oView = view; + } + + public void setWRegisterModel(int iValue) { + + } + + public void setPCinternModel(int iValue) { + + } + + public void setPCLATHModel(int iValue) { + + } + + public void setPCLModel(int iValue) { + + } + + public void setFSRModel(int iValue) { + + } + + public void setStatusModel(int iValue) { + + } + + public void setOptionModel(int iValue) { + + } + + public void setPrescalerModel(int iValue) { + + } + + public void setTMR0Model(int iValue) { + + } + + + + public void setPortAPinXToYModel(int iPort, boolean bEnabled) { + + } + + public void setPortBPinXToYModel(int iPort, boolean bEnabled) { + + } + + public void setPortATrisXToYModel(int iPort, boolean bEnabled) { + + } + + public void setPortBTrisXToYModel(int iPort, boolean bEnabled) { + + } + + 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) { + + } + + + public void loadFileToEEPROMModel(ArrayList oData) { + + } + + public void saveSimulatorStateModel() { + + } + + public void loadSimulatorStateModel() { + + } + + public void exitSimulatorModel() { + + } +} diff --git a/src/Control/MyControlView.java b/src/Control/MyControlView.java new file mode 100644 index 0000000..b65a43d --- /dev/null +++ b/src/Control/MyControlView.java @@ -0,0 +1,162 @@ +package Control; + +import java.util.ArrayList; + +import Model.Backend.MyModel; +import View.MyView; + +public class MyControlView { + + MyView oMyView; + MyModel oMyModel; + + public MyControlView(MyView view, MyModel model) { + oMyView = view; + oMyModel = model; + } + + public void updateView() { + setRegistersView(); + setPortAView(); + setPortBView(); + setRamView(); + } + + /** + * Sets registers at gui to values from PIC. + */ + private void setRegistersView() { + + //Get values from pic + int[] aiValues = new int[9]; + aiValues[0] = oMyModel.getPIC().getRam().get_TMR0(); + aiValues[1] = oMyModel.getPIC().getRam().get_Programcounter(); + aiValues[2] = oMyModel.getPIC().getRam().get_STATUS(); + aiValues[3] = oMyModel.getPIC().getRam().get_PCLATH(); + aiValues[4] = oMyModel.getPIC().getRam().get_FSR(); + aiValues[5] = oMyModel.getPIC().getRam().get_PCL(); + aiValues[6] = oMyModel.getPIC().getRam().get_OPTION(); + if (oMyModel.getPIC().getRam().get_PSA()) { + aiValues[7] = oMyModel.getPIC().getRam().get_WDT_PrescalerRate(); + } else { + aiValues[7] = oMyModel.getPIC().getRam().get_TMR0_PrescalerRate(); + } + aiValues[8] = oMyModel.getPIC().get_WRegister(); + + //Fill gui element with gathered values + oMyView.getGUIRegister().setRegisters(aiValues); + } + + /** + * Sets detailed register-table values to values from PIC. + */ + public void setRegistersDetailed() { + + } + + /** + * + */ + public void setPortAView() { + + boolean[] abEnabled = new boolean[10]; + + abEnabled[0] = oMyModel.getPIC().getRam().get_TRISA0(); + abEnabled[1] = oMyModel.getPIC().getRam().get_TRISA1(); + abEnabled[2] = oMyModel.getPIC().getRam().get_TRISA2(); + abEnabled[3] = oMyModel.getPIC().getRam().get_TRISA3(); + abEnabled[4] = oMyModel.getPIC().getRam().get_TRISA4(); + + abEnabled[5] = true; + abEnabled[6] = true; + abEnabled[7] = true; + abEnabled[8] = true; + abEnabled[9] = true; + + oMyView.getGUIPorts().enableCheckboxesA(abEnabled); + } + + public void setPortBView() { + + boolean[] abEnabled = new boolean[10]; + + abEnabled[0] = oMyModel.getPIC().getRam().get_TRISB0(); + abEnabled[1] = oMyModel.getPIC().getRam().get_TRISB1(); + abEnabled[2] = oMyModel.getPIC().getRam().get_TRISB2(); + abEnabled[3] = oMyModel.getPIC().getRam().get_TRISB3(); + abEnabled[4] = oMyModel.getPIC().getRam().get_TRISB4(); + abEnabled[5] = oMyModel.getPIC().getRam().get_TRISB5(); + abEnabled[6] = oMyModel.getPIC().getRam().get_TRISB6(); + abEnabled[7] = oMyModel.getPIC().getRam().get_TRISB7(); + + abEnabled[8] = true; + abEnabled[9] = true; + abEnabled[10] = true; + abEnabled[11] = true; + abEnabled[12] = true; + abEnabled[13] = true; + abEnabled[14] = true; + abEnabled[15] = true; + + oMyView.getGUIPorts().enableCheckboxesA(abEnabled); + } + + public void setRamView() { + int[] aiData; + int[] aiBank0 = oMyModel.getPIC().getRam().get_Bank0(); + int[] aiBank1 = oMyModel.getPIC().getRam().get_Bank1(); + int iLenB0 = aiBank0.length; + int iLenB1 = aiBank1.length; + aiData = new int[iLenB0 + iLenB1]; + for (int i = 0; i < iLenB0; i++) { + aiData[i] = aiBank0[i]; + } + for (int i = iLenB0; i < (iLenB0 + iLenB1); i++) { + aiData[i] = aiBank1[i]; + } + oMyView.getGUIRamTable().setGUIRam(aiData); + } + + + + public void startProgramView() { + + } + + public void stepProgramView() { + + } + + public void pauseProgramView() { + + } + + public void resetProgramView() { + + } + + public void controlWDTView(boolean bEnabled) { + + } + + public void setQuarzView(int iElement) { + + } + + + public void loadFileToEEPROMView(ArrayList oData) { + + } + + public void saveSimulatorStateView() { + + } + + public void loadSimulatorStateView() { + + } + + public void exitSimulatorView() { + + } +} \ No newline at end of file diff --git a/src/Model/Backend/Microcontroller/RAM.java b/src/Model/Backend/Microcontroller/RAM.java index 47a595c..8f911e0 100755 --- a/src/Model/Backend/Microcontroller/RAM.java +++ b/src/Model/Backend/Microcontroller/RAM.java @@ -23,6 +23,9 @@ public class RAM { //Last programmcounter for function getLastLine in main. private int lastProgramcounter; + // + private int iPrescaledTMR0; + /** * Constructor of RAM * Initializes two banks as two int arrays of size 128. @@ -202,22 +205,36 @@ public class RAM { */ public synchronized void increment_TMR0() { int iValTMR0 = get_TMR0(); - int iValIncr; + int iValPrescaler; + + boolean bPSA = get_PSA(); //PreScalerAssignment //Check assignment of prescaler (PSA == 0) => TMR0; (PSA == 1) => WDT - if (get_PSA()) { - iValIncr = 1; + //Prescaler assigned to WDT, icrement TMR0 by 1. + if (bPSA) { + //Increment TMR0 by 1, set T0IF at overflow. + if ((iValTMR0 + 1) > 255) { + set_T0IF(true); + set_TMR0((iValTMR0 + 1) & 255); + } else { + set_T0IF(false); + set_TMR0(iValTMR0 + 1); + } + //Prescaler assigned to TMR0, increment TMR0 if prescaled TMR0 equals TMR0 prescaler-rate. } else { - iValIncr = get_TMR0_PrescalerRate(); - } - - //Check for overflow and set bit and timer - if ((iValTMR0 + iValIncr) > 255) { - set_T0IF(true); - set_TMR0((iValTMR0 + iValIncr) & 255); //TODO 0 or &255 (Question to Prof) - } else { - set_T0IF(false); - set_TMR0(iValTMR0 + iValIncr); + iValPrescaler = get_TMR0_PrescalerRate(); + iPrescaledTMR0++; + if (iPrescaledTMR0 == iValPrescaler) { + iPrescaledTMR0 = 0; //Reset prescaled TMR0 + //Increment TMR0 by 1, set T0IF at overflow. + if ((iValTMR0 + 1) > 255) { + set_T0IF(true); + set_TMR0((iValTMR0 + 1) & 255); + } else { + set_T0IF(false); + set_TMR0(iValTMR0 + 1); + } + } } } @@ -1554,4 +1571,44 @@ public class RAM { public synchronized boolean get_TRISA4() { return (get_TRISA() & 0b00010000) == 16; } + + public synchronized boolean get_TRISB0() { + return (get_TRISB() & 0b00000001) == 1; + } + + public synchronized boolean get_TRISB1() { + return (get_TRISB() & 0b00000010) == 2; + } + + public synchronized boolean get_TRISB2() { + return (get_TRISB() & 0b00000100) == 4; + } + + public synchronized boolean get_TRISB3() { + return (get_TRISB() & 0b00001000) == 8; + } + + public synchronized boolean get_TRISB4() { + return (get_TRISB() & 0b00010000) == 16; + } + + public synchronized boolean get_TRISB5() { + return (get_TRISB() & 0b00100000) == 32; + } + + public synchronized boolean get_TRISB6() { + return (get_TRISB() & 0b01000000) == 64; + } + + public synchronized boolean get_TRISB7() { + return (get_TRISB() & 0b10000000) == 128; + } + + public synchronized int[] get_Bank0() { + return bank0; + } + + public synchronized int[] get_Bank1() { + return bank1; + } } \ No newline at end of file diff --git a/src/Model/Backend/MyModel.java b/src/Model/Backend/MyModel.java index ff9ef86..17dc6a3 100644 --- a/src/Model/Backend/MyModel.java +++ b/src/Model/Backend/MyModel.java @@ -1,15 +1,22 @@ package Model.Backend; import Model.Backend.Microcontroller.PIC; +import Model.Backend.Runtime.Environment; public class MyModel { PIC oPIC; + Environment oEnvironment; - public MyModel(PIC pic) { + public MyModel(PIC pic, Environment env) { oPIC = pic; + oEnvironment = env; } public PIC getPIC() { return this.oPIC; } + + public Environment getEnvironment() { + return this.oEnvironment; + } } diff --git a/src/Model/Backend/Runtime/Environment.java b/src/Model/Backend/Runtime/Environment.java index f5a9000..0d9cabb 100755 --- a/src/Model/Backend/Runtime/Environment.java +++ b/src/Model/Backend/Runtime/Environment.java @@ -37,7 +37,7 @@ public class Environment { watchdog = new WATCHDOG(); - + diff --git a/src/View/GUIMainFrame.java b/src/View/GUIMainFrame.java index bce45c9..907299d 100755 --- a/src/View/GUIMainFrame.java +++ b/src/View/GUIMainFrame.java @@ -6,11 +6,11 @@ import java.util.ArrayList; import java.awt.GridBagLayout; import java.awt.GridBagConstraints; -import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JPanel; +import Model.Backend.MyModel; import Model.Backend.Runtime.Environment; public class GUIMainFrame extends JFrame { @@ -33,6 +33,7 @@ public class GUIMainFrame extends JFrame { 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(); @@ -43,25 +44,52 @@ public class GUIMainFrame extends JFrame { GUIMCMenu oGUIMCMenu = new GUIMCMenu(); GUITime oGUITime = new GUITime(); + //Panels of gui-main-frame JPanel oMainPanel = new JPanel(); JPanel oPanel0 = new JPanel(); JPanel oPanel1 = new JPanel(); JPanel oPanel2 = new JPanel(); JPanel oPanel3 = new JPanel(); - MyView oMyView = new MyView(this, oGUIMCMenu, oGUIMenuBar, oGUIPorts, oGUIRamTable, oGUIRegister, oGUIRegistersDetailed, oGUIStack, oGUITestFileTable, oGUITime, oMainPanel); + /** + * Object for storing all components, will be overhanded to menubar, to set theme. + * + */ + MyView oMyView; + + MyModel oMyModel; ArrayList oPanels = new ArrayList(); + /** * Constructor */ - public GUIMainFrame(Environment env) { + public GUIMainFrame(Environment oEnvironment) { 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 + //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 + } + + private void buildGUIMainFrame() { //Set layouts of panels oMainPanel.setLayout(new GridBagLayout()); oPanel0.setLayout(new GridBagLayout()); @@ -134,19 +162,8 @@ public class GUIMainFrame extends JFrame { oPanels.add(oPanel3); oPanels.add(oMainPanel); - //Set Icon - ImageIcon guiLogo = new ImageIcon("./pictures/gui_logo.png"); // create an ImageIcon - this.setIconImage(guiLogo.getImage()); // change icon of frame - - //Set menubar - oGUIMenuBar = new GUIMenuBar(oMyView, env, this, oGUITestFileTable, oGUIRegister, oGUIRegistersDetailed); - this.setJMenuBar(oGUIMenuBar); - //Build this frame this.add(oMainPanel); - setTheme(0); - updateWindow(); - this.setVisible(true); //make frame visible } public void updateWindow() { diff --git a/src/View/GUIMenuBar.java b/src/View/GUIMenuBar.java index 674c81a..a70bde7 100644 --- a/src/View/GUIMenuBar.java +++ b/src/View/GUIMenuBar.java @@ -15,18 +15,33 @@ 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.Backend.Runtime.Environment; public class GUIMenuBar extends JMenuBar implements ActionListener { - Environment oEnv; - GUIMainFrame oGUIMainFrame; - GUITestFileTable oGUITestFileTable; - GUIRegister oGUIRegister; - GUIRegistersDetailed oGUIRegistersDetailed; + /** + * 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; + ArrayList oBreakpoints; ReadEepromFile oRef; boolean[] bBreakpointSet; @@ -82,15 +97,6 @@ public class GUIMenuBar extends JMenuBar implements ActionListener { "Microcontroller", "Start program", "Pause program", "Reset program", "Step by Step", "Workinterval", "Instant", "1 second", "2 seconds", "Help", "Language", "German", "English", "Manual", "About"}; - /** - * Color oWhite = new Color(255, 253, 250); - * Color oDarkGray = new Color(76, 78, 82); - * First Color == TextColor - * Second Color == BackgroundColor - */ - Color[] aoDarkTheme = {new Color(255, 253, 250), new Color(76, 78, 82)}; - Color[] aoLightTheme = {new Color(76, 78, 82), new Color(255, 253, 250)}; - //Color for separators is always the same. Color oColorSeparators = new Color(47, 47, 47); @@ -98,7 +104,7 @@ public class GUIMenuBar extends JMenuBar implements ActionListener { * Constructor initializes menubar. * @param frame */ - public GUIMenuBar(MyView view, Environment env, GUIMainFrame mainframe, GUITestFileTable guitft, GUIRegister guiregs, GUIRegistersDetailed guiregsdet) { //TODO maybe single components, with methods, of frame to set theme + public GUIMenuBar(MyModel model, MyView view) { //TODO maybe single components, with methods, of frame to set theme //Custom Separators since default is not able to change background. oSeparator0 = new JMenuItem(); @@ -116,11 +122,8 @@ public class GUIMenuBar extends JMenuBar implements ActionListener { //Referrence to change different parts of gui for theme. oMyView = view; - oEnv = env; - oGUIMainFrame = mainframe; - oGUITestFileTable = guitft; - oGUIRegister = guiregs; - oGUIRegistersDetailed = guiregsdet; + + oMyControl = new MyControlModel(model, view); //File oFileMenu = new JMenu(sGermanLang[0]); @@ -157,7 +160,7 @@ public class GUIMenuBar extends JMenuBar implements ActionListener { setActionListeners(); setGerMnemonics(); buildMenubar(); - setTheme(aoLightTheme[0], aoLightTheme[1]); + setTheme(0); } /** @@ -370,13 +373,13 @@ public class GUIMenuBar extends JMenuBar implements ActionListener { //Change to dark theme if (e.getSource() == oDarkTheme) { System.out.println("It's gettin dark brooo"); //TODO - setTheme(aoDarkTheme[0], aoDarkTheme[1]); + setTheme(1); oMyView.setTheme(1); } //Change to light theme if (e.getSource() == oLightTheme) { System.out.println("Death to all vampires!"); //TODO - setTheme(aoLightTheme[0], aoLightTheme[1]); + setTheme(0); oMyView.setTheme(0); } @@ -391,7 +394,7 @@ public class GUIMenuBar extends JMenuBar implements ActionListener { System.out.println("oResetProg"); //TODO } if (e.getSource() == oStepProg) { - oEnv.step(); + oMyView.getEnvironment().step(); } if (e.getSource() == oIntervalASAP) { System.out.println("oIntervalASAP"); //TODO @@ -427,108 +430,205 @@ public class GUIMenuBar extends JMenuBar implements ActionListener { controlBreakpoints(e); } - /** - * Changes Color of text and background of menubar. - * @param oText = Color of text - * @param oBackground = Color of background - */ - private void setTheme(Color oText, Color oBackground) { - this.setBackground(oBackground); - this.setBorder(BorderFactory.createLineBorder(oBackground, 2)); - this.setOpaque(true); + public void setTheme(int iThemeNr) { + switch (iThemeNr) { + case 0: { + this.setBackground(aoLightTheme[1]); + this.setBorder(BorderFactory.createLineBorder(aoLightTheme[1], 2)); + this.setOpaque(true); - //File - oFileMenu.setForeground(oText); - oLoadTestFile.setForeground(oText); - oLoadProgStateItem.setForeground(oText); - oSaveProgStateItem.setForeground(oText); - oExitItem.setForeground(oText); + //File + oFileMenu.setForeground(aoLightTheme[0]); + oLoadTestFile.setForeground(aoLightTheme[0]); + oLoadProgStateItem.setForeground(aoLightTheme[0]); + oSaveProgStateItem.setForeground(aoLightTheme[0]); + oExitItem.setForeground(aoLightTheme[0]); - //View - oViewMenu.setForeground(oText); - oChangeColors.setForeground(oText); - oDarkTheme.setForeground(oText); - oLightTheme.setForeground(oText); + //View + oViewMenu.setForeground(aoLightTheme[0]); + oChangeColors.setForeground(aoLightTheme[0]); + oDarkTheme.setForeground(aoLightTheme[0]); + oLightTheme.setForeground(aoLightTheme[0]); - //Microcontroller - oMicrocontroller.setForeground(oText); - oStartProg.setForeground(oText); - oPauseProg.setForeground(oText); - oResetProg.setForeground(oText); - oStepProg.setForeground(oText); - oChangeWorkInterval.setForeground(oText); - oIntervalASAP.setForeground(oText); - oInterval1Sec.setForeground(oText); - oInterval2Sec.setForeground(oText); + //Microcontroller + oMicrocontroller.setForeground(aoLightTheme[0]); + oStartProg.setForeground(aoLightTheme[0]); + oPauseProg.setForeground(aoLightTheme[0]); + oResetProg.setForeground(aoLightTheme[0]); + oStepProg.setForeground(aoLightTheme[0]); + oChangeWorkInterval.setForeground(aoLightTheme[0]); + oIntervalASAP.setForeground(aoLightTheme[0]); + oInterval1Sec.setForeground(aoLightTheme[0]); + oInterval2Sec.setForeground(aoLightTheme[0]); - //Help - oHelpMenu.setForeground(oText); - oChangeLanguageMenu.setForeground(oText); - oGerLangItem.setForeground(oText); - oEngLangItem.setForeground(oText); - oManual.setForeground(oText); - oAbout.setForeground(oText); + //Help + oHelpMenu.setForeground(aoLightTheme[0]); + oChangeLanguageMenu.setForeground(aoLightTheme[0]); + oGerLangItem.setForeground(aoLightTheme[0]); + oEngLangItem.setForeground(aoLightTheme[0]); + oManual.setForeground(aoLightTheme[0]); + oAbout.setForeground(aoLightTheme[0]); - //File - oFileMenu.setBackground(oBackground); - oLoadTestFile.setBackground(oBackground); - oLoadProgStateItem.setBackground(oBackground); - oSaveProgStateItem.setBackground(oBackground); - oExitItem.setBackground(oBackground); + //File + oFileMenu.setBackground(aoLightTheme[1]); + oLoadTestFile.setBackground(aoLightTheme[1]); + oLoadProgStateItem.setBackground(aoLightTheme[1]); + oSaveProgStateItem.setBackground(aoLightTheme[1]); + oExitItem.setBackground(aoLightTheme[1]); - //View - oViewMenu.setBackground(oBackground); - oChangeColors.setBackground(oBackground); - oDarkTheme.setBackground(oBackground); - oLightTheme.setBackground(oBackground); + //View + oViewMenu.setBackground(aoLightTheme[1]); + oChangeColors.setBackground(aoLightTheme[1]); + oDarkTheme.setBackground(aoLightTheme[1]); + oLightTheme.setBackground(aoLightTheme[1]); - //Microcontroller - oMicrocontroller.setBackground(oBackground); - oStartProg.setBackground(oBackground); - oPauseProg.setBackground(oBackground); - oResetProg.setBackground(oBackground); - oStepProg.setBackground(oBackground); - oChangeWorkInterval.setBackground(oBackground); - oIntervalASAP.setBackground(oBackground); - oInterval1Sec.setBackground(oBackground); - oInterval2Sec.setBackground(oBackground); + //Microcontroller + oMicrocontroller.setBackground(aoLightTheme[1]); + oStartProg.setBackground(aoLightTheme[1]); + oPauseProg.setBackground(aoLightTheme[1]); + oResetProg.setBackground(aoLightTheme[1]); + oStepProg.setBackground(aoLightTheme[1]); + oChangeWorkInterval.setBackground(aoLightTheme[1]); + oIntervalASAP.setBackground(aoLightTheme[1]); + oInterval1Sec.setBackground(aoLightTheme[1]); + oInterval2Sec.setBackground(aoLightTheme[1]); - //Help - oHelpMenu.setBackground(oBackground); - oChangeLanguageMenu.setBackground(oBackground); - oGerLangItem.setBackground(oBackground); - oEngLangItem.setBackground(oBackground); - oManual.setBackground(oBackground); - oAbout.setBackground(oBackground); + //Help + oHelpMenu.setBackground(aoLightTheme[1]); + oChangeLanguageMenu.setBackground(aoLightTheme[1]); + oGerLangItem.setBackground(aoLightTheme[1]); + oEngLangItem.setBackground(aoLightTheme[1]); + oManual.setBackground(aoLightTheme[1]); + oAbout.setBackground(aoLightTheme[1]); - //File - oFileMenu.getPopupMenu().setBorder(BorderFactory.createLineBorder(oBackground)); //TODO white lines at menus - oFileMenu.getPopupMenu().setOpaque(true); + //File + oFileMenu.getPopupMenu().setBorder(BorderFactory.createLineBorder(aoLightTheme[1])); + oFileMenu.getPopupMenu().setOpaque(true); - //View - oViewMenu.getPopupMenu().setBorder(BorderFactory.createLineBorder(oBackground)); - oChangeColors.getPopupMenu().setBorder(BorderFactory.createLineBorder(oBackground)); - oChangeColors.setOpaque(true); + //View + oViewMenu.getPopupMenu().setBorder(BorderFactory.createLineBorder(aoLightTheme[1])); + oChangeColors.getPopupMenu().setBorder(BorderFactory.createLineBorder(aoLightTheme[1])); + oChangeColors.setOpaque(true); - //Microcontroller - oMicrocontroller.getPopupMenu().setBorder(BorderFactory.createLineBorder(oBackground)); - oChangeWorkInterval.getPopupMenu().setBorder(BorderFactory.createLineBorder(oBackground)); - oChangeWorkInterval.setOpaque(true); + //Microcontroller + oMicrocontroller.getPopupMenu().setBorder(BorderFactory.createLineBorder(aoLightTheme[1])); + oChangeWorkInterval.getPopupMenu().setBorder(BorderFactory.createLineBorder(aoLightTheme[1])); + oChangeWorkInterval.setOpaque(true); - //Help - oHelpMenu.getPopupMenu().setBorder(BorderFactory.createLineBorder(oBackground)); - oChangeLanguageMenu.getPopupMenu().setBorder(BorderFactory.createLineBorder(oBackground)); - oChangeLanguageMenu.setOpaque(true); + //Help + oHelpMenu.getPopupMenu().setBorder(BorderFactory.createLineBorder(aoLightTheme[1])); + oChangeLanguageMenu.getPopupMenu().setBorder(BorderFactory.createLineBorder(aoLightTheme[1])); + oChangeLanguageMenu.setOpaque(true); - //Separators - oSeparator0.setBackground(oColorSeparators); - oSeparator0.setBorder(BorderFactory.createLineBorder(oColorSeparators, 2)); - oSeparator1.setBackground(oColorSeparators); - oSeparator1.setBorder(BorderFactory.createLineBorder(oColorSeparators, 2)); - oSeparator2.setBackground(oColorSeparators); - oSeparator2.setBorder(BorderFactory.createLineBorder(oColorSeparators, 2)); - oSeparator3.setBackground(oColorSeparators); - oSeparator3.setBorder(BorderFactory.createLineBorder(oColorSeparators, 2)); + //Separators + oSeparator0.setBackground(oColorSeparators); + oSeparator0.setBorder(BorderFactory.createLineBorder(oColorSeparators, 2)); + oSeparator1.setBackground(oColorSeparators); + oSeparator1.setBorder(BorderFactory.createLineBorder(oColorSeparators, 2)); + oSeparator2.setBackground(oColorSeparators); + oSeparator2.setBorder(BorderFactory.createLineBorder(oColorSeparators, 2)); + oSeparator3.setBackground(oColorSeparators); + oSeparator3.setBorder(BorderFactory.createLineBorder(oColorSeparators, 2)); + }break; + case 1: { + this.setBackground(aoDarkTheme[1]); + this.setBorder(BorderFactory.createLineBorder(aoDarkTheme[1], 2)); + this.setOpaque(true); + + //File + oFileMenu.setForeground(aoDarkTheme[0]); + oLoadTestFile.setForeground(aoDarkTheme[0]); + oLoadProgStateItem.setForeground(aoDarkTheme[0]); + oSaveProgStateItem.setForeground(aoDarkTheme[0]); + oExitItem.setForeground(aoDarkTheme[0]); + + //View + oViewMenu.setForeground(aoDarkTheme[0]); + oChangeColors.setForeground(aoDarkTheme[0]); + oDarkTheme.setForeground(aoDarkTheme[0]); + oLightTheme.setForeground(aoDarkTheme[0]); + + //Microcontroller + oMicrocontroller.setForeground(aoDarkTheme[0]); + oStartProg.setForeground(aoDarkTheme[0]); + oPauseProg.setForeground(aoDarkTheme[0]); + oResetProg.setForeground(aoDarkTheme[0]); + oStepProg.setForeground(aoDarkTheme[0]); + oChangeWorkInterval.setForeground(aoDarkTheme[0]); + oIntervalASAP.setForeground(aoDarkTheme[0]); + oInterval1Sec.setForeground(aoDarkTheme[0]); + oInterval2Sec.setForeground(aoDarkTheme[0]); + + //Help + oHelpMenu.setForeground(aoDarkTheme[0]); + oChangeLanguageMenu.setForeground(aoDarkTheme[0]); + oGerLangItem.setForeground(aoDarkTheme[0]); + oEngLangItem.setForeground(aoDarkTheme[0]); + oManual.setForeground(aoDarkTheme[0]); + oAbout.setForeground(aoDarkTheme[0]); + + //File + oFileMenu.setBackground(aoDarkTheme[1]); + oLoadTestFile.setBackground(aoDarkTheme[1]); + oLoadProgStateItem.setBackground(aoDarkTheme[1]); + oSaveProgStateItem.setBackground(aoDarkTheme[1]); + oExitItem.setBackground(aoDarkTheme[1]); + + //View + oViewMenu.setBackground(aoDarkTheme[1]); + oChangeColors.setBackground(aoDarkTheme[1]); + oDarkTheme.setBackground(aoDarkTheme[1]); + oLightTheme.setBackground(aoDarkTheme[1]); + + //Microcontroller + oMicrocontroller.setBackground(aoDarkTheme[1]); + oStartProg.setBackground(aoDarkTheme[1]); + oPauseProg.setBackground(aoDarkTheme[1]); + oResetProg.setBackground(aoDarkTheme[1]); + oStepProg.setBackground(aoDarkTheme[1]); + oChangeWorkInterval.setBackground(aoDarkTheme[1]); + oIntervalASAP.setBackground(aoDarkTheme[1]); + oInterval1Sec.setBackground(aoDarkTheme[1]); + oInterval2Sec.setBackground(aoDarkTheme[1]); + + //Help + oHelpMenu.setBackground(aoDarkTheme[1]); + oChangeLanguageMenu.setBackground(aoDarkTheme[1]); + oGerLangItem.setBackground(aoDarkTheme[1]); + oEngLangItem.setBackground(aoDarkTheme[1]); + oManual.setBackground(aoDarkTheme[1]); + oAbout.setBackground(aoDarkTheme[1]); + + //File + oFileMenu.getPopupMenu().setBorder(BorderFactory.createLineBorder(aoDarkTheme[1])); + oFileMenu.getPopupMenu().setOpaque(true); + + //View + oViewMenu.getPopupMenu().setBorder(BorderFactory.createLineBorder(aoDarkTheme[1])); + oChangeColors.getPopupMenu().setBorder(BorderFactory.createLineBorder(aoDarkTheme[1])); + oChangeColors.setOpaque(true); + + //Microcontroller + oMicrocontroller.getPopupMenu().setBorder(BorderFactory.createLineBorder(aoDarkTheme[1])); + oChangeWorkInterval.getPopupMenu().setBorder(BorderFactory.createLineBorder(aoDarkTheme[1])); + oChangeWorkInterval.setOpaque(true); + + //Help + oHelpMenu.getPopupMenu().setBorder(BorderFactory.createLineBorder(aoDarkTheme[1])); + oChangeLanguageMenu.getPopupMenu().setBorder(BorderFactory.createLineBorder(aoDarkTheme[1])); + oChangeLanguageMenu.setOpaque(true); + + //Separators + oSeparator0.setBackground(oColorSeparators); + oSeparator0.setBorder(BorderFactory.createLineBorder(oColorSeparators, 2)); + oSeparator1.setBackground(oColorSeparators); + oSeparator1.setBorder(BorderFactory.createLineBorder(oColorSeparators, 2)); + oSeparator2.setBackground(oColorSeparators); + oSeparator2.setBorder(BorderFactory.createLineBorder(oColorSeparators, 2)); + oSeparator3.setBackground(oColorSeparators); + oSeparator3.setBorder(BorderFactory.createLineBorder(oColorSeparators, 2)); + }break; + } } private void loadTestFile() { @@ -542,30 +642,34 @@ public class GUIMenuBar extends JMenuBar implements ActionListener { oRef = new ReadEepromFile(); oRef.setData(oFile); oRef.setOPCode(oRef.getData()); - oGUITestFileTable.setData(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 = oGUITestFileTable.getCheckboxes(); + 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 = oGUITestFileTable.getCheckboxes(); + oBreakpoints = oMyView.getGUITestFileTable().getCheckboxes(); oBreakpoints.get(i).setEnabled(true); oBreakpoints.get(i).addActionListener(this); } } } bBreakpointSet = new boolean[iOPCodeSize]; - oRef.readFileAndWriteToEEPROM(oEnv.getPIC()); - oGUIMainFrame.updateWindow(); + oRef.readFileAndWriteToEEPROM(oMyView.getEnvironment().getPIC()); + oMyView.getGUIMainFrame().updateWindow(); iTestFileLoaded = 1; } } diff --git a/src/View/GUIPorts.java b/src/View/GUIPorts.java index 7a0ab60..6faa670 100644 --- a/src/View/GUIPorts.java +++ b/src/View/GUIPorts.java @@ -215,6 +215,18 @@ public class GUIPorts extends JPanel { return null; } + public void enableCheckboxesA(boolean[] abEnabled) { + for (int i = 0; i < 10; i++) { + oCheckboxes.get(i).setEnabled(abEnabled[i]); + } + } + + public void enableCheckboxesB(boolean[] abEnabled) { + for (int i = 10; i < 26; i++) { + oCheckboxes.get(i).setEnabled(abEnabled[i]); + } + } + public void setTheme(int iThemeNr) { switch (iThemeNr) { case 0: { diff --git a/src/View/GUITestFileTable.java b/src/View/GUITestFileTable.java index cdabc00..96786e9 100644 --- a/src/View/GUITestFileTable.java +++ b/src/View/GUITestFileTable.java @@ -137,6 +137,14 @@ public class GUITestFileTable extends JScrollPane { return oCheckboxes; } + //Sets checkbox at position i to boolean at position i at overhanded list. + public void setCheckboxes(ArrayList bEnabled) { + int iCheckboxesSize = oCheckboxes.size(); + for (int i = 0; i < iCheckboxesSize; i++) { + oCheckboxes.get(i).setEnabled(bEnabled.get(i)); + } + } + /** * @param data ArrayList to check. * @returns length of longest string at ArrayList. diff --git a/src/View/MyView.java b/src/View/MyView.java index ef5cd17..2ddfaa4 100644 --- a/src/View/MyView.java +++ b/src/View/MyView.java @@ -2,11 +2,12 @@ package View; import javax.swing.JPanel; +import Model.Backend.Runtime.Environment; + public class MyView implements IMyView { GUIMainFrame oGUIMainFrame; GUIMCMenu oGUIMCMenu; - GUIMenuBar oGUIMenuBar; GUIPorts oGUIPorts; GUIRamTable oGUIRamTable; GUIRegister oGUIRegister; @@ -17,10 +18,11 @@ public class MyView implements IMyView { JPanel oGUIMainPanel; - public MyView(GUIMainFrame oGUIMainFrame, GUIMCMenu oGUIMCMenu, GUIMenuBar oGUIMenuBar, GUIPorts oGUIPorts, GUIRamTable oGUIRamTable, GUIRegister oGUIRegister, GUIRegistersDetailed oGUIRegistersDetailed, GUIStack oGUIStack, GUITestFileTable oGUITestFileTable, GUITime oGUITime, 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.oGUIMenuBar = oGUIMenuBar; this.oGUIPorts = oGUIPorts; this.oGUIRamTable = oGUIRamTable; this.oGUIRegister = oGUIRegister; @@ -29,6 +31,7 @@ public class MyView implements IMyView { this.oGUITestFileTable = oGUITestFileTable; this.oGUITime = oGUITime; this.oGUIMainPanel = oGUIMainPanel; + this.oEnvironment = oEnvironment; } public void setTheme(int iThemeNr) { @@ -42,4 +45,44 @@ public class MyView implements IMyView { oGUITestFileTable.setTheme(iThemeNr); oGUITime.setTheme(iThemeNr); } -} + + public GUIMainFrame getGUIMainFrame() { + return this.oGUIMainFrame; + } + + public GUIMCMenu getGUIMCMenu() { + return this.oGUIMCMenu; + } + + public GUIPorts getGUIPorts() { + return this.oGUIPorts; + } + + public GUIRamTable getGUIRamTable() { + return this.oGUIRamTable; + } + + public GUIRegister getGUIRegister() { + return this.oGUIRegister; + } + + public GUIRegistersDetailed getGUIRegistersDetailed() { + return this.oGUIRegistersDetailed; + } + + public GUIStack getGUIStack() { + return this.oGUIStack; + } + + public GUITestFileTable getGUITestFileTable() { + return this.oGUITestFileTable; + } + + public JPanel getGUIMainPanel() { + return this.oGUIMainPanel; + } + + public Environment getEnvironment() { + return this.oEnvironment; + } +} \ No newline at end of file