Implemented parts of communication of view with model

This commit is contained in:
Meruemon
2022-03-24 12:41:49 +01:00
parent c30e59203d
commit 9ee475b05d
23 changed files with 681 additions and 328 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -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<String> oData) {
}
public void saveSimulatorState() {
}
public void loadSimulatorState() {
}
public void exitSimulator() {
}
}

View File

@@ -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<String> oData);
public void saveSimulatorState();
public void loadSimulatorState();
public void exitSimulator();
}

View File

@@ -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<String> oData) {
}
public void saveSimulatorStateModel() {
}
public void loadSimulatorStateModel() {
}
public void exitSimulatorModel() {
}
}

View File

@@ -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<String> oData) {
}
public void saveSimulatorStateView() {
}
public void loadSimulatorStateView() {
}
public void exitSimulatorView() {
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -37,7 +37,7 @@ public class Environment {
watchdog = new WATCHDOG();

View File

@@ -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<JPanel> oPanels = new ArrayList<JPanel>();
/**
* 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() {

View File

@@ -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<JCheckBox> 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<String> data = oRef.getData();
int iDataSize = data.size();
ArrayList<String> 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;
}
}

View File

@@ -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: {

View File

@@ -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<Boolean> 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.

View File

@@ -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;
}
}