Frontend MenuBar created, implemented language-change

This commit is contained in:
WickedJack99
2022-03-10 22:10:40 +01:00
parent b6e37f460b
commit ed909a0069
4 changed files with 324 additions and 14 deletions

Binary file not shown.

View File

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

View File

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