diff --git a/bin/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIMainFrame.class b/bin/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIMainFrame.class index e32f089..583e904 100644 Binary files a/bin/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIMainFrame.class and b/bin/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIMainFrame.class differ diff --git a/bin/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIMenuBar.class b/bin/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIMenuBar.class new file mode 100644 index 0000000..40c8052 Binary files /dev/null and b/bin/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIMenuBar.class differ diff --git a/src/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIMainFrame.java b/src/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIMainFrame.java index d8a1749..4ee760d 100755 --- a/src/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIMainFrame.java +++ b/src/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIMainFrame.java @@ -2,12 +2,18 @@ package Frontend.PIC_SIMULATOR_GUI_JAVA; import java.awt.Color; import java.awt.Font; +import java.awt.event.*; +import java.awt.FlowLayout; + import java.util.ArrayList; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; import javax.swing.border.Border; public class GUIMainFrame extends JFrame { @@ -21,6 +27,10 @@ public class GUIMainFrame extends JFrame { 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(420, 420); //sets x and y dimension of frame + this.setLayout(new FlowLayout()); + + this.setJMenuBar(new GUIMenuBar(this)); + this.setVisible(true); //make frame visible ImageIcon guiLogo = new ImageIcon("./images/gui_logo.png"); // create an ImageIcon @@ -29,23 +39,25 @@ public class GUIMainFrame extends JFrame { Color guiBackgroundColor = new Color(255, 255, 255); // 0xFFFFFF || 0, 0, 0 //this.getContentPane().setBackground(guiBackgroundColor); //change color of background - JLabel text = new JLabel(); // create label, passing of text at constructor possible - text.setText("Bro do you even code?"); // set text of label - text.setIcon(guiLogo); - text.setHorizontalTextPosition(JLabel.CENTER); //JLabel.LEFT, JLabel.CENTER, JLabel.RIGHT - text.setVerticalTextPosition(JLabel.TOP); //JLabel.TOP, JLabel.CENTER, JLabel.BOTTOM - text.setForeground(Color.green); // set fontcolor of text - text.setFont(new Font("Arial", Font.ITALIC, 20)); // set fontstyle, fontformat (PLAIN, BOLD, ITALIC), and size - text.setIconTextGap(-100); // set gap of text to image - text.setBackground(Color.BLUE); // set background color - text.setOpaque(true); // display background color + //JLabel text = new JLabel(); // create label, passing of text at constructor possible + //text.setText("Bro do you even code?"); // set text of label + //text.setIcon(guiLogo); + //text.setHorizontalTextPosition(JLabel.CENTER); //JLabel.LEFT, JLabel.CENTER, JLabel.RIGHT + //text.setVerticalTextPosition(JLabel.TOP); //JLabel.TOP, JLabel.CENTER, JLabel.BOTTOM + //text.setForeground(Color.green); // set fontcolor of text + //text.setFont(new Font("Arial", Font.ITALIC, 20)); // set fontstyle, fontformat (PLAIN, BOLD, ITALIC), and size + //text.setIconTextGap(-100); // set gap of text to image + //text.setBackground(Color.BLUE); // set background color + //text.setOpaque(true); // display background color Border border = BorderFactory.createLineBorder(Color.green, 3); // creates border for label, color and size of border - text.setBorder(border); // sets border of label to "border" - text.setVerticalAlignment(JLabel.TOP); // vertically alligns label "text" (JLabel.TOP, JLabel.CENTER, JLabel.BOTTOM) - text.setHorizontalAlignment(JLabel.CENTER); // horizontally aligns label "text" (JLabel.LEFT, JLabel.CENTER, JLabel.RIGHT) + //text.setBorder(border); // sets border of label to "border" + //text.setVerticalAlignment(JLabel.TOP); // vertically alligns label "text" (JLabel.TOP, JLabel.CENTER, JLabel.BOTTOM) + //text.setHorizontalAlignment(JLabel.CENTER); // horizontally aligns label "text" (JLabel.LEFT, JLabel.CENTER, JLabel.RIGHT) - this.add(text); // add label to frame + //this.add(text); // add label to frame } + + } \ No newline at end of file diff --git a/src/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIMenuBar.java b/src/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIMenuBar.java new file mode 100644 index 0000000..98cfe10 --- /dev/null +++ b/src/Frontend/PIC_SIMULATOR_GUI_JAVA/GUIMenuBar.java @@ -0,0 +1,298 @@ +package Frontend.PIC_SIMULATOR_GUI_JAVA; + +import java.awt.event.*; + +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; + +public class GUIMenuBar extends JMenuBar implements ActionListener{ + GUIMainFrame oMainFrame; + + //File + JMenu oFileMenu; + JMenuItem oLoadTestFile; + JMenuItem oLoadProgStateItem; + JMenuItem oSaveProgStateItem; + JMenuItem oExitItem; + + //View + JMenu oViewMenu; + JMenu oChangeColors; + JMenuItem oDarkTheme; + JMenuItem oLightTheme; + + //Microcontroller + JMenu oMicrocontroller; + JMenuItem oStartProg; + JMenuItem oPauseProg; + JMenuItem oResetProg; + JMenuItem oStepProg; + JMenu oChangeWorkInterval; + JMenuItem oIntervalASAP; + JMenuItem oInterval1Sec; + JMenuItem oInterval2Sec; + + //Help + JMenu oHelpMenu; + JMenu oChangeLanguageMenu; + JMenuItem oGerLangItem; + JMenuItem oEngLangItem; + JMenuItem oManual; + JMenuItem oAbout; + + String[] sGermanLang = {"Datei", "Testdatei laden", "Programmzustand laden", "Programmzustand speichern", "Simulation beenden", + "Ansicht", "Thema", "Dunkler Modus", "Heller Modus", + "Microcontroller", "Programm starten", "Programm stoppen", "Programm zuruecksetzen", "Schritt fuer Schritt", "Bearbeitungsintervall", "Sofort", "1 Sekunde", "2 Sekunden", + "Hilfe", "Sprache", "Deutsch", "Englisch", "Anleitung", "Ueber"}; + + String[] sEnglishLang = {"File", "Load Testfile", "Load Programstate", "Save Programstate", "Exit simulation", + "View", "Theme", "Dark Theme", "Light Theme", + "Microcontroller", "Start program", "Stop program", "Reset program", "Step by Step", "Workinterval", "Instant", "1 second", "2 seconds", + "Help", "Language", "German", "English", "Manual", "About"}; + + public GUIMenuBar(GUIMainFrame frame) { + oMainFrame = frame; + //File + oFileMenu = new JMenu(sGermanLang[0]); + oLoadTestFile = new JMenuItem(sGermanLang[1]); + oLoadProgStateItem = new JMenuItem(sGermanLang[2]); + oSaveProgStateItem = new JMenuItem(sGermanLang[3]); + oExitItem = new JMenuItem(sGermanLang[4]); + + //View + oViewMenu = new JMenu(sGermanLang[5]); + oChangeColors = new JMenu(sGermanLang[6]); + oDarkTheme = new JMenuItem(sGermanLang[7]); + oLightTheme = new JMenuItem(sGermanLang[8]); + + //Microcontroller + oMicrocontroller = new JMenu(sGermanLang[9]); + oStartProg = new JMenuItem(sGermanLang[10]); + oPauseProg = new JMenuItem(sGermanLang[11]); + oResetProg = new JMenuItem(sGermanLang[12]); + oStepProg = new JMenuItem(sGermanLang[13]); + oChangeWorkInterval = new JMenu(sGermanLang[14]); + oIntervalASAP = new JMenuItem(sGermanLang[15]); + oInterval1Sec = new JMenuItem(sGermanLang[16]); + oInterval2Sec = new JMenuItem(sGermanLang[17]); + + //Help + oHelpMenu = new JMenu(sGermanLang[18]); + oChangeLanguageMenu = new JMenu(sGermanLang[19]); + oGerLangItem = new JMenuItem(sGermanLang[20]); + oEngLangItem = new JMenuItem(sGermanLang[21]); + oManual = new JMenuItem(sGermanLang[22]); + oAbout = new JMenuItem(sGermanLang[23]); + + setActionListeners(); + setMnemonics(); + buildMenubar(); + } + + private void setActionListeners() { + //File + oLoadTestFile.addActionListener(this); + oLoadProgStateItem.addActionListener(this); + oSaveProgStateItem.addActionListener(this); + oExitItem.addActionListener(this); + + //View + oDarkTheme.addActionListener(this); + oLightTheme.addActionListener(this); + + //Microcontroller + oStartProg.addActionListener(this); + oPauseProg.addActionListener(this); + oResetProg.addActionListener(this); + oStepProg.addActionListener(this); + oIntervalASAP.addActionListener(this); + oInterval1Sec.addActionListener(this); + oInterval2Sec.addActionListener(this); + + //Help + oGerLangItem.addActionListener(this); + oEngLangItem.addActionListener(this); + oManual.addActionListener(this); + oAbout.addActionListener(this); + } + + private void setMnemonics() { + //File + oFileMenu.setMnemonic(KeyEvent.VK_F); //alt + f for file + oLoadTestFile.setMnemonic(KeyEvent.VK_T); //t for test + oLoadProgStateItem.setMnemonic(KeyEvent.VK_L); //l for load + oSaveProgStateItem.setMnemonic(KeyEvent.VK_S); //s for save + oExitItem.setMnemonic(KeyEvent.VK_E); //e for exit + + //View + oViewMenu.setMnemonic(KeyEvent.VK_V); //alt + v for view + oChangeColors.setMnemonic(KeyEvent.VK_C); //c for color + oDarkTheme.setMnemonic(KeyEvent.VK_D); //d for dark + oLightTheme.setMnemonic(KeyEvent.VK_L); //l for light + + //Microcontroller + oMicrocontroller.setMnemonic(KeyEvent.VK_M); //alt + m for microcontroller + oStartProg.setMnemonic(KeyEvent.VK_S); //s for start + oPauseProg.setMnemonic(KeyEvent.VK_P); //p for pause + oResetProg.setMnemonic(KeyEvent.VK_R); //r for reset + oStepProg.setMnemonic(KeyEvent.VK_T); // t for step + oChangeWorkInterval.setMnemonic(KeyEvent.VK_I); //i for interval + oIntervalASAP.setMnemonic(KeyEvent.VK_0); //0 for as soon as possible + oInterval1Sec.setMnemonic(KeyEvent.VK_1); //1 for 1 second + oInterval2Sec.setMnemonic(KeyEvent.VK_2); //2 for 2 seconds + + //Help + oHelpMenu.setMnemonic(KeyEvent.VK_H); //alt + h for help + oChangeLanguageMenu.setMnemonic(KeyEvent.VK_L); //l for language + oGerLangItem.setMnemonic(KeyEvent.VK_G); //g for german + oEngLangItem.setMnemonic(KeyEvent.VK_E); //e for english + oManual.setMnemonic(KeyEvent.VK_M); //m for manual + oAbout.setMnemonic(KeyEvent.VK_A); //a for about + } + + private void buildMenubar() { + //File + oFileMenu.add(oLoadTestFile); + oFileMenu.add(oLoadProgStateItem); + oFileMenu.add(oSaveProgStateItem); + oFileMenu.add(oExitItem); + + //View + oChangeColors.add(oDarkTheme); + oChangeColors.add(oLightTheme); + oViewMenu.add(oChangeColors); + + //Microcontroller + oMicrocontroller.add(oStartProg); + oMicrocontroller.add(oPauseProg); + oMicrocontroller.add(oResetProg); + oMicrocontroller.add(oStepProg); + oChangeWorkInterval.add(oIntervalASAP); + oChangeWorkInterval.add(oInterval1Sec); + oChangeWorkInterval.add(oInterval2Sec); + oMicrocontroller.add(oChangeWorkInterval); + + //Help + oChangeLanguageMenu.add(oGerLangItem); + oChangeLanguageMenu.add(oEngLangItem); + oHelpMenu.add(oChangeLanguageMenu); + oHelpMenu.add(oManual); + oHelpMenu.add(oAbout); + + //Menubar (this) + this.add(oFileMenu); + this.add(oViewMenu); + this.add(oMicrocontroller); + this.add(oHelpMenu); + } + + private void changeLangMenuBar(String[] lang) { + //File + oFileMenu.setText(lang[0]); + oLoadTestFile.setText(lang[1]); + oLoadProgStateItem.setText(lang[2]); + oSaveProgStateItem.setText(lang[3]); + oExitItem.setText(lang[4]); + + //View + oViewMenu.setText(lang[5]); + oChangeColors.setText(lang[6]); + oDarkTheme.setText(lang[7]); + oLightTheme.setText(lang[8]); + + //Microcontroller + oMicrocontroller.setText(lang[9]); + oStartProg.setText(lang[10]); + oPauseProg.setText(lang[11]); + oResetProg.setText(lang[12]); + oStepProg.setText(lang[13]); + oChangeWorkInterval.setText(lang[14]); + oIntervalASAP.setText(lang[15]); + oInterval1Sec.setText(lang[16]); + oInterval2Sec.setText(lang[17]); + + //Help + oHelpMenu.setText(lang[18]); + oChangeLanguageMenu.setText(lang[19]); + oGerLangItem.setText(lang[20]); + oEngLangItem.setText(lang[21]); + oManual.setText(lang[22]); + oAbout.setText(lang[23]); + } + + @Override + public void actionPerformed(ActionEvent e) { + //File + if (e.getSource() == oLoadTestFile) { + System.out.println("Bro do you even code? test"); + //TODO + } + if (e.getSource() == oLoadProgStateItem) { + System.out.println("Bro do you even code? load"); + //TODO + } + if (e.getSource() == oSaveProgStateItem) { + System.out.println("Bro do you even code? save"); + //TODO + System.exit(0); + } + if (e.getSource() == oExitItem) { + System.out.println("Bro do you even code? exit"); + //TODO + System.exit(0); + } + + //View + //Change to dark theme + if (e.getSource() == oDarkTheme) { + System.out.println("It's gettin dark brooo"); //TODO + } + //Change to light theme + if (e.getSource() == oLightTheme) { + System.out.println("It burns, it burnnnnnnssssss"); //TODO + } + + //Microcontroller + if (e.getSource() == oStartProg) { + System.out.println("Start prog"); //TODO + } + if (e.getSource() == oPauseProg) { + System.out.println("oPauseProg"); //TODO + } + if (e.getSource() == oResetProg) { + System.out.println("oResetProg"); //TODO + } + if (e.getSource() == oStepProg) { + System.out.println("oStepProg"); //TODO + } + if (e.getSource() == oIntervalASAP) { + System.out.println("oIntervalASAP"); //TODO + } + if (e.getSource() == oInterval1Sec) { + System.out.println("oInterval1Sec"); //TODO + } + if (e.getSource() == oInterval2Sec) { + System.out.println("oInterval2Sec"); //TODO + } + + //Help + //Change language at gui. + if (e.getSource() == oGerLangItem) { + changeLangMenuBar(sGermanLang); + //TODO rest of gui + } + if (e.getSource() == oEngLangItem) { + changeLangMenuBar(sEnglishLang); + //TODO rest of gui + } + //Show manual + if (e.getSource() == oManual) { + //TODO + } + //Show about + if (e.getSource() == oAbout) { + //TODO + } + } +} \ No newline at end of file