From eb91c6232bc5db055454190b63681c35f8c38921 Mon Sep 17 00:00:00 2001 From: Meruemon Date: Tue, 15 Mar 2022 11:56:43 +0100 Subject: [PATCH] ScrollPane implemented, started implementation of color theme --- .../PIC_SIMULATOR_GUI_JAVA/GUIMenuBar.class | Bin 11953 -> 12050 bytes .../GUITestFileTable.class | Bin 3318 -> 4580 bytes .../PIC_SIMULATOR_GUI_JAVA/GUIMenuBar.java | 10 +- .../GUITestFileTable.java | 154 +++++++++++++----- 4 files changed, 120 insertions(+), 44 deletions(-) diff --git a/bin/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIMenuBar.class b/bin/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIMenuBar.class index 3c0b56c6bdf4913c8baaad57cd19c84029fa2bcf..40f2b9268468f0ceb4c284a8a4f5d1b62b014d8d 100644 GIT binary patch literal 12050 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 diff --git a/bin/Frontend/PIC_SIMULATOR_GUI_JAVA/GUITestFileTable.class b/bin/Frontend/PIC_SIMULATOR_GUI_JAVA/GUITestFileTable.class index 0a3b2f872ab9b5c93d608b798c37f6f8252b4a84..35e7e40c8cb069b25233cf3ccf038941737083c4 100644 GIT binary patch literal 4580 zcmb7H{dW}Q6@K1icPH6QU;`wu7!ZU=vI!(2gf@XdJ^+_)2qhsQP$k3ekPK{ga58~F zTR|IZu}E8MzpNIqP+G87TeDH4R%^Abt^Ka8=hXhx)4!poAEeJaGrQS^Xpft-Gw;50 z?|tum?sM5NOzDnJHUOCF*xY+YfX{JNLv|d%AWX*uE!vU`K0j zYdse|`iQ;FNa{V>!KALhC$R9ac1#)* zD9~+Nlxr3!G24gq_>qI=m_8y<-v(Dh*j=c zwJJ)WDp)O0ktf!pk1?HkGEszj;?NL89d45cu4PWDT?}&bR?{mb)~Q&JMq)Oi+glTc zExAAhs`u6OD)>kyZW+aP%Sgnu6XvKL#0E4;%S6)8P^6_**rcKbo0(@?a^(n&cdpcT z_d2zdHmF<8u1>3pHnbCWEs+q2iq+ZO5cvCNMe|@9WhRly{zJ>v}~$4nzejFf#r3$+^E||jbuW%g0OK+!KgsU z@j0hZR2;_`u|B3HNA<2lvY4VCCv&8lgSZ>F$;&5Id6LMK7(kXh6Oo>K9BJWWCnlN-*a zOCC?M@4&2Iq}Ma}p@L_x@A_E@6+e=GN-*~DWfo1vS-$L_j3wc;hyY)CDfxmH>@Z7a zn(B?EDcg+U7T%ye#5bAYw!N-Ho`pF^#`$)Vkw*wttKYHDb)3awx*DwE>}Kh+&QIam}8BLQi&n&J!U6&n6A;( z%%f88(H>`yjfk;(gUdk;G6rm&&k7nsCH)7V&7o5q$tZgo&;n_N3u+p}7( zK%_2>=(CKZ0G+&U<5&l*fRB;RMLA<#g3TNT4`U@pQH4{u72|BrXHm`mSHqqb!Bx~^ zg45ZHSdCY)25+DqJ85N^ix9f7i@#1`J3fxx#P2Mc&`qohxbDFo-rXGZN@NTE#=Mjg z;Y8#)MAGQvZE+g=a$>xb0Ucn3QyAdt;Lg>=JRV`VhZ=pn9`+41`U@KazDDIT-t+XD zio!)xxK6XFI9yEKlyi+sc&2c7f4TBJMkaA0jgy4(o~B?pNFS;S*QRl=yYz8+e>fwt7cTbE3lHt4l5h#1eqQ<>E=l8DALU9sIlm)U*I!$%_!4P+=~dX}z6TcI zD@V@B;_>$emzbJ~Ao7wGjQd3lBry~22c{5^mlliwxuy$Y{!PsLB@iON&m z^Izxcr`)MT!89Q%Qo!&QDp;j3P=0`a<6X+Ufj6_9|C!`G>xFM3-u;p=&v4-uW5C%w z<^=2Dv&d0*2vEtBd_tdpStU14QwiGDQxsz#){f9ANwD-x4HgoRZ()1iXg2lL{`gE_zi zJYNKJ==JCv3$iI+Z{Z-{2xomU&svuRKl6D7!g%*io!-A7)_?_$`B%sr=pl zH}Tc?G4XrHL;?PQKYCtVB_pL5-7~M14}4d|$fC+CRN$w|z0ne|h~H&=Ru#L9BHmZT zY9-eSod&Sjc_}`|w*ELv{5+y~0x>+va=w(~Xtx(@HCz6l_*!%c&lLU#9SYu2eBAjn JZ5H4!{{!Y3LU{lH literal 3318 zcmb7GZF3XX6@IR?(pu}at>6f<#s(4!wPdhNUYuZqQriR&m1ByGjU584rNv&5wXU=R zo2KcT`~Lpkrmr;VWIEHCwwWSl;+anKq0^c6Q@?hmo&JD+&X;E5K6h7=C2%_v7?$gM z&pr2?=XuUK{>yuB{b6ehC-F-a0fC{@C8y|G#eDL7dg5v}J$W%RHa&IW>Y0n_tLMgM z#*$o2TV?mOU9hIjg@UC*5!iLZyk)K?%eU>~V)ER1vuG6rLgkEIw0M}2r^$lJv#eX9 z$*4fPGqGglZZ0^hR#_nCn^au8kQ^(O%(aYNc4-yK+KWZgt(53ya3`A+-e%)v&*!+a zI-26;@CmzUyD5QSe|$zjnQ-!!h9J6hv_n_%kU+N=S?jYJqUef1;9(sq+EnZo*xi!f zw6)6otwO#Hj|c>g9oG;;kMz2isq{aXZhS^s^y%1#{Y<@VxzFWoSE9$T`sd>_Djux| zW8QX?XG(THW3D+BSHl4ul%798Jp0pW=}F+Qjt`=r@X(WQC$P8nuDtK>O`1h>(JGDl zcM>`VaD-r(`Mf})$$G+BUU7<6(H)KZp-UIrn<@sGRSN)hm^BHnJLWC_Sp{kyhp#oX|uiET>G@q){!+ zR)&d)z>yt~d_A>jHB|%fgw7(-33|y|c5Yc?g@TG_@0Uh4S8@u4akHc$g)vFoxIi0; z;~&XG6sL4Nhtou?Y~LaM)Mi?WGNB?}bC#@2VBB1+tKclUq}AaFCNZVrd4XtCQLU9- zYgxy6e1s0Ennpp{PVzhp&SlwI=JKe9EH0{;u4}FJSjP-ziQbC5Q7B4jGG-NX6qol{ zQ(O~HvFw&i8kRL&lJ#;4mvy{|D`aSq@?8}WOibXK4igK6ZP9Wk&DD%W$N!6#v~-i# zVKv;WsaO=))0C^%K*lR}A#V|68#h(lXhp-b&{4oLleuLUD%R9>S(oXWyqg=5hU@5& zpA{V+MTuOwj^CqL|NT2&h{2V-R>)ROLd_06mV>x0tBn}McdWCf4l%WG!^*MpsEwnz zqvK<;Luj%?6lKBWrDQ%XoxOZtYpGwHmlmJY@hN+y^SFal*>#wEg0qx-JWyB^-8Yi-%jw(HjB05Vg-bCHoFXidmR&Dn&-u zY0p?C*Jf9!Z3tF#-*)Gb&5z1&QW*Vcwy&KmU!!^KDOEO0C`)%Fxay z|8K6npU%Y+wDEHtcV){77p$TOV93sT%}2{Rl~T@7qK;UItj|Ai3d z7ji6eH^Nl_8WgTMQ2FiP&TnWXZL^6DbS5?to!h{!d+6RoY;M<{4H%h$U=_VQIWVV$ zH}F^$hY|x-#Ams6l*UQ9_N<4ttv!R^c@I9$?;sxp3_iUFUFhLzFK25n%cKv-xH^gb zIK$DIVfYvD7@nZ@Za*wMiKo1~BN)ch3|inB9Os#z&WKDR@D@|-0>m?kDn>Vvnp2|t zlwdT!fe%eGlnLcpY7;>Q+c}~b%8@G0%o@rj&T{8m6(0@`hl0c5H;_@PxUh*!+@2p% z4K)_JhZkhBSBKk_;mGUwQ{9VZXxrE8H`009V=r%g4cxje)9W^@{jPyDXizxXjKJiD`u{P{>+DOmw0gQ?)K@;VL< z#K^eRP8C1vdkxX%pHu6Kh$+2yxBk)hYhLsfv5yFW7=`cxSC{GfMON(<>ftg2F}+}( z^dG9TLLK<5gfN6(&^ExEgC52~A{zHFR<;rI?CXf}_onyIA%y4+FvVB-b^x#a7bHm( AssI20 diff --git a/src/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIMenuBar.java b/src/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIMenuBar.java index 2de643e..7edf4be 100644 --- a/src/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIMenuBar.java +++ b/src/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIMenuBar.java @@ -25,6 +25,7 @@ public class GUIMenuBar extends JMenuBar implements ActionListener { ArrayList oCheckBoxes; ReadEepromFile oRef; boolean[] bBreakpointSet; + int iTestFileLoaded = 0; //Custom separators because addSeparator(default) looks not nice. JMenuItem oSeparator0; @@ -527,7 +528,7 @@ public class GUIMenuBar extends JMenuBar implements ActionListener { int iResponse = oFileChooser.showOpenDialog(null); if (iResponse == JFileChooser.APPROVE_OPTION) { oFile = new File(oFileChooser.getSelectedFile().getAbsolutePath()); - System.out.println(oFile); + //System.out.println(oFile); oRef = new ReadEepromFile(); oRef.setData(oFile); oRef.setOPCode(oRef.getData()); @@ -536,6 +537,12 @@ public class GUIMenuBar extends JMenuBar implements ActionListener { int iDataSize = data.size(); ArrayList opcode = oRef.getOPCode(); int iOPCodeSize = opcode.size(); + if (iTestFileLoaded > 0) { + oCheckBoxes = oGUITestFileTable.getCheckboxes(); + for (int i = 0; i < iDataSize; i++) { + oCheckBoxes.get(i).setEnabled(false); + } + } for (int i = 0; i < iDataSize; i++) { for (int j = 0; j < iOPCodeSize; j++) { if (data.get(i).equals(opcode.get(j))) { @@ -548,6 +555,7 @@ public class GUIMenuBar extends JMenuBar implements ActionListener { bBreakpointSet = new boolean[iOPCodeSize]; oRef.readFileAndWriteToEEPROM(oEnv.getPIC()); oGUIMainFrame.updateWindow(); + iTestFileLoaded = 1; } } diff --git a/src/Frontend/PIC_SIMULATOR_GUI_JAVA/GUITestFileTable.java b/src/Frontend/PIC_SIMULATOR_GUI_JAVA/GUITestFileTable.java index bbcc79f..b58f83d 100644 --- a/src/Frontend/PIC_SIMULATOR_GUI_JAVA/GUITestFileTable.java +++ b/src/Frontend/PIC_SIMULATOR_GUI_JAVA/GUITestFileTable.java @@ -4,88 +4,124 @@ import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.GridLayout; -import java.awt.Insets; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.IOException; +import java.awt.Color; import java.util.ArrayList; import javax.swing.JCheckBox; import javax.swing.JPanel; -import javax.swing.JScrollBar; +import javax.swing.JScrollPane; import javax.swing.JTextField; +import javax.swing.ScrollPaneConstants; -public class GUITestFileTable extends JPanel { +public class GUITestFileTable extends JScrollPane { String sLine; ArrayList oCheckboxes = new ArrayList(); + JPanel oTable; + int iTheme = 0; + /** + * 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)}; + + /** + * Constructor which initializes a filler. + */ public GUITestFileTable() { - JTextField oFill = new JTextField("19"); + oTable = new JPanel(); + JTextField oFill = new JTextField("0"); oFill.setEditable(false); - this.setLayout(new GridLayout(1, 3)); - this.add(oFill); - this.add(new JCheckBox()); - oFill = new JTextField("Test"); + JPanel oTestPanel = new JPanel(); + oTestPanel.setLayout(new GridLayout(1, 3)); + oTestPanel.add(oFill); + oTestPanel.add(new JCheckBox()); + oFill = new JTextField("Please load testfile!"); oFill.setEditable(false); - this.add(oFill); + oTestPanel.add(oFill); + this.setViewportView(oTestPanel); } + /** + * Creates scrollable panel which contains information of testfile. + * @param data arraylist which contains the data of the testfile as strings. (testfile has x lines, data has x entries) + */ public void setData(ArrayList data) { - this.removeAll(); - JScrollBar oScrollBar = new JScrollBar(JScrollBar.VERTICAL, 30, 1, 0, 100); - int iNumberOfLines = data.size() + 1; + oTable.removeAll(); //Clear table. + oCheckboxes.clear(); //Clear arraylist containing checkboxes. + + //Component which will include numbers, breakpoints and lines from testfile. JPanel oLines = new JPanel(); - oLines.add(oScrollBar);//TODO oLines.setLayout(new GridBagLayout()); - int iHorizontalCount = 0; - int iVerticalCount = 0; - System.out.println(1); + + //Constraint for position of components at oLines. GridBagConstraints l = new GridBagConstraints(); - l.gridx = iHorizontalCount; - - int iMaxLength = getMaxLen(data); + l.gridx = 0; + int iMaxLength = getMaxLen(data); //MaxLen for displaying line. + int iNumberOfLines = data.size() + 1; + int iVerticalCount = 0; //Variable for adding components to right line. for (int i = 1; i < iNumberOfLines; i++) { - JPanel oPanel = new JPanel(); - oPanel.setLayout(new GridBagLayout()); + //Component which will be filled with three components (represents one line). + JPanel oLine = new JPanel(); + oLine.setLayout(new GridBagLayout()); + //Constraint for position of components at oLine. GridBagConstraints c = new GridBagConstraints(); - c.gridx = 0; - c.gridy = 0; + c.gridy = 0; //row 0 + c.gridx = 0; //collumn 0 + //Component displays number of testfileline JTextField oNumber = new JTextField(i + "", 3); + oNumber.setForeground(aoLightTheme[0]); + oNumber.setBackground(aoLightTheme[1]); oNumber.setEditable(false); - oPanel.add(oNumber, c); - - c.gridx = 1; + oLine.add(oNumber, c); + c.gridx = 1; //collumn 1 + //Component displays whether breakpoint is set or reset. JCheckBox oCheckbox = new JCheckBox(); oCheckbox.setEnabled(false); oCheckboxes.add(oCheckbox); - oPanel.add(oCheckbox, c); + oLine.add(oCheckbox, c); - c.gridx = 2; - - JTextField oTestLine = new JTextField(data.get(i - 1), iMaxLength); + c.gridx = 2; //collumn 2 + //Component displays comment to specific line. + JTextField oTestLine = new JTextField(data.get(i - 1), (int)(iMaxLength * 0.7)); oTestLine.setEditable(false); - oPanel.add(oTestLine, c); + oLine.add(oTestLine, c); - l.gridy = iVerticalCount; - l.anchor = GridBagConstraints.WEST; - oLines.add(oPanel, l); - iVerticalCount++; + l.gridy = iVerticalCount; //row iVerticalcount + l.anchor = GridBagConstraints.WEST; //Set orientation of elements to left (west) + oLines.add(oLine, l); + iVerticalCount++; //increment for putting next entry at next line. } - System.out.println(iMaxLength); - this.add(oLines); + + oTable.add(oLines); + + this.setPreferredSize(new Dimension(600, 700)); + this.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); + this.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); + this.setWheelScrollingEnabled(true); + this.getVerticalScrollBar().setUnitIncrement(16); + this.setViewportView(oTable); } + /** + * @returns ArrayList containing all checkboxes which represent the breakpoints at testfile. + */ public ArrayList getCheckboxes() { return oCheckboxes; } + /** + * @param data ArrayList to check. + * @returns length of longest string at ArrayList. + */ private int getMaxLen(ArrayList data) { int iSize = data.size(); int iMaxLength = 0; @@ -96,4 +132,36 @@ public class GUITestFileTable extends JPanel { } return iMaxLength; } -} + + public void setDarkTheme() { + iTheme = 1; + } + + public void setLightTheme() { + iTheme = 0; + } + + public void markLine(int iLineToMark) { + + } + + public void unmarkLine(int iLineToUnmark) { + + } + + /** + * @return Color to set for testfiletable + */ + private Color[] getTheme() { + Color[] oReturnColor = {new Color(76, 78, 82), new Color(255, 253, 250)}; + switch (iTheme) { + case 0: { + oReturnColor = aoLightTheme; + }break; + case 1: { + oReturnColor = aoDarkTheme; + }break; + } + return oReturnColor; + } +} \ No newline at end of file