ScrollPane implemented, started implementation of color theme

This commit is contained in:
Meruemon
2022-03-15 11:56:43 +01:00
parent 01d956b75a
commit eb91c6232b
4 changed files with 120 additions and 44 deletions

View File

@@ -25,6 +25,7 @@ public class GUIMenuBar extends JMenuBar implements ActionListener {
ArrayList<JCheckBox> 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<String> 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;
}
}

View File

@@ -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<JCheckBox> oCheckboxes = new ArrayList<JCheckBox>();
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<String> 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<JCheckBox> getCheckboxes() {
return oCheckboxes;
}
/**
* @param data ArrayList to check.
* @returns length of longest string at ArrayList.
*/
private int getMaxLen(ArrayList<String> 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;
}
}