Basic implementation of menu bar. Easy to add new menus.
This commit is contained in:
65
src/main/java/gui/src/menubar/Menu.java
Normal file
65
src/main/java/gui/src/menubar/Menu.java
Normal file
@@ -0,0 +1,65 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 01.11.2023
|
||||
*/
|
||||
|
||||
package gui.src.menubar;
|
||||
|
||||
import javax.swing.JMenu;
|
||||
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
import gui.src.constants.GUIConstants.Languages;
|
||||
import gui.src.interfaces.Translateable;
|
||||
|
||||
/**
|
||||
* Menu at menu bar.
|
||||
*/
|
||||
public class Menu extends JMenu implements Translateable {
|
||||
private String[] translations = null;
|
||||
|
||||
/**
|
||||
* @param translations of this menus text.
|
||||
* @param actionListener belonging to this menu. Events that occur by clicking on menu depending on this.
|
||||
*/
|
||||
public Menu(final String[] translations, ActionListener actionListener) {
|
||||
this.setTranslations(translations);
|
||||
this.changeLanguage(Languages.German);
|
||||
if (actionListenerValid("constructor of Menu", actionListener)) {
|
||||
this.addActionListener(actionListener);
|
||||
}
|
||||
}
|
||||
|
||||
public void setTranslations(final String[] translations) {
|
||||
if (null != translations) {
|
||||
this.translations = translations;
|
||||
}
|
||||
}
|
||||
|
||||
public void changeLanguage(Languages language) {
|
||||
if (translationsSet("changeLanguage")) {
|
||||
this.setText(translations[language.ordinal()]);
|
||||
for (int index = 0; index < this.getItemCount(); index++) {
|
||||
((MenuItem)this.getItem(index)).changeLanguage(language);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean translationsSet(String callingMethod) {
|
||||
boolean translationsSet = true;
|
||||
if (null == translations) {
|
||||
translationsSet = false;
|
||||
System.err.println("Error at " + callingMethod + " of menu item. translations are null");
|
||||
}
|
||||
return translationsSet;
|
||||
}
|
||||
|
||||
private boolean actionListenerValid(String callingMethod, ActionListener actionListener) {
|
||||
boolean actionListenerSet = true;
|
||||
if (null == actionListener) {
|
||||
actionListenerSet = false;
|
||||
System.err.println("Error at " + callingMethod + " of menu item. action listener is null");
|
||||
}
|
||||
return actionListenerSet;
|
||||
}
|
||||
}
|
||||
41
src/main/java/gui/src/menubar/MenuBar.java
Normal file
41
src/main/java/gui/src/menubar/MenuBar.java
Normal file
@@ -0,0 +1,41 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 01.11.2023
|
||||
*/
|
||||
|
||||
package gui.src.menubar;
|
||||
|
||||
import javax.swing.JMenuBar;
|
||||
|
||||
import gui.src.constants.GUIConstants.Languages;
|
||||
|
||||
import gui.src.interfaces.Translateable;
|
||||
|
||||
import gui.src.menubar.menus.HelpMenuFactory;
|
||||
import gui.src.menubar.menus.LanguageMenuFactory;
|
||||
|
||||
public class MenuBar extends JMenuBar implements Translateable {
|
||||
|
||||
private MenuBarLanguageController languageController = null;
|
||||
|
||||
private MenuBar() {
|
||||
languageController = new MenuBarLanguageController(this);
|
||||
|
||||
this.add(HelpMenuFactory.createHelpMenu());
|
||||
this.add(LanguageMenuFactory.createLanguageMenu(languageController));
|
||||
}
|
||||
|
||||
public static MenuBar getMenuBar() {
|
||||
return new MenuBar();
|
||||
}
|
||||
|
||||
public void changeLanguage(Languages language) {
|
||||
changeLanguageOfMenus(language);
|
||||
}
|
||||
|
||||
private void changeLanguageOfMenus(Languages language) {
|
||||
for (int index = 0; index < this.getMenuCount(); index++) {
|
||||
((Menu)this.getMenu(index)).changeLanguage(language);
|
||||
}
|
||||
}
|
||||
}
|
||||
22
src/main/java/gui/src/menubar/MenuBarLanguageController.java
Normal file
22
src/main/java/gui/src/menubar/MenuBarLanguageController.java
Normal file
@@ -0,0 +1,22 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 01.11.2023
|
||||
*/
|
||||
|
||||
package gui.src.menubar;
|
||||
|
||||
public class MenuBarLanguageController {
|
||||
private MenuBar menuBar = null;
|
||||
|
||||
public MenuBarLanguageController(MenuBar menuBar) {
|
||||
this.menuBar = menuBar;
|
||||
}
|
||||
|
||||
public Menu getMenu(int index) {
|
||||
return (Menu)this.menuBar.getMenu(index);
|
||||
}
|
||||
|
||||
public int getMenuCount() {
|
||||
return this.menuBar.getMenuCount();
|
||||
}
|
||||
}
|
||||
62
src/main/java/gui/src/menubar/MenuItem.java
Normal file
62
src/main/java/gui/src/menubar/MenuItem.java
Normal file
@@ -0,0 +1,62 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 01.11.2023
|
||||
*/
|
||||
|
||||
package gui.src.menubar;
|
||||
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
import javax.swing.JMenuItem;
|
||||
|
||||
import gui.src.constants.GUIConstants.Languages;
|
||||
import gui.src.interfaces.Translateable;
|
||||
|
||||
/**
|
||||
* Menu item at menu at menu bar.
|
||||
*/
|
||||
public class MenuItem extends JMenuItem implements Translateable {
|
||||
private String[] translations = null;
|
||||
|
||||
/**
|
||||
* @param translations of this menu items text.
|
||||
* @param actionListener belonging to this menu item. Events that occur by clicking on menu item depending on this.
|
||||
*/
|
||||
public MenuItem(final String[] translations, ActionListener actionListener) {
|
||||
this.setTranslations(translations);
|
||||
this.changeLanguage(Languages.German);
|
||||
if (actionListenerValid("constructor of Menu", actionListener)) {
|
||||
this.addActionListener(actionListener);
|
||||
}
|
||||
}
|
||||
|
||||
public void setTranslations(final String[] translations) {
|
||||
if (null != translations) {
|
||||
this.translations = translations;
|
||||
}
|
||||
}
|
||||
|
||||
public void changeLanguage(Languages language) {
|
||||
if (translationsSet("changeLanguage")) {
|
||||
this.setText(translations[language.ordinal()]);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean translationsSet(String callingMethod) {
|
||||
boolean translationsSet = true;
|
||||
if (null == translations) {
|
||||
translationsSet = false;
|
||||
System.err.println("Error at " + callingMethod + " of menu item. translations of are null");
|
||||
}
|
||||
return translationsSet;
|
||||
}
|
||||
|
||||
private boolean actionListenerValid(String callingMethod, ActionListener actionListener) {
|
||||
boolean actionListenerSet = true;
|
||||
if (null == actionListener) {
|
||||
actionListenerSet = false;
|
||||
System.err.println("Error at " + callingMethod + " of menu item. action listener is null");
|
||||
}
|
||||
return actionListenerSet;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 01.11.2023
|
||||
*/
|
||||
|
||||
package gui.src.menubar.menuItems;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
import gui.src.menubar.MenuItem;
|
||||
|
||||
public class HelpMenuItemFactory {
|
||||
|
||||
public static MenuItem createManualMenuItem() {
|
||||
final String[] translations = {"Anleitung", "Manual"};
|
||||
ActionListener actionListener = new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
// TODO Auto-generated method stub
|
||||
}
|
||||
};
|
||||
|
||||
MenuItem manualMenuItem = new MenuItem(translations, actionListener);
|
||||
|
||||
return manualMenuItem;
|
||||
}
|
||||
|
||||
public static MenuItem createAboutMenuItem() {
|
||||
final String[] translations = {"Über", "About"};
|
||||
ActionListener actionListener = new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
// TODO Auto-generated method stub
|
||||
}
|
||||
};
|
||||
|
||||
MenuItem aboutMenuItem = new MenuItem(translations, actionListener);
|
||||
|
||||
return aboutMenuItem;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 01.11.2023
|
||||
*/
|
||||
|
||||
package gui.src.menubar.menuItems;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
import gui.src.constants.GUIConstants.Languages;
|
||||
import gui.src.menubar.MenuBarLanguageController;
|
||||
import gui.src.menubar.MenuItem;
|
||||
|
||||
public class LanguageMenuItemFactory {
|
||||
|
||||
public static MenuItem createGermanMenuItem(MenuBarLanguageController languageController) {
|
||||
final String[] translations = {"Deutsch", "German"};
|
||||
ActionListener actionListener = new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
for (int index = 0; index < languageController.getMenuCount(); index++) {
|
||||
languageController.getMenu(index).changeLanguage(Languages.German);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
MenuItem germanMenuItem = new MenuItem(translations, actionListener);
|
||||
|
||||
return germanMenuItem;
|
||||
}
|
||||
|
||||
public static MenuItem createEnglishMenuItem(MenuBarLanguageController languageController) {
|
||||
final String[] translations = {"Englisch", "English"};
|
||||
ActionListener actionListener = new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
for (int index = 0; index < languageController.getMenuCount(); index++) {
|
||||
languageController.getMenu(index).changeLanguage(Languages.English);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
MenuItem englishMenuItem = new MenuItem(translations, actionListener);
|
||||
|
||||
return englishMenuItem;
|
||||
}
|
||||
}
|
||||
30
src/main/java/gui/src/menubar/menus/HelpMenuFactory.java
Normal file
30
src/main/java/gui/src/menubar/menus/HelpMenuFactory.java
Normal file
@@ -0,0 +1,30 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 01.11.2023
|
||||
*/
|
||||
|
||||
package gui.src.menubar.menus;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
import gui.src.menubar.Menu;
|
||||
import gui.src.menubar.menuItems.HelpMenuItemFactory;
|
||||
|
||||
public class HelpMenuFactory {
|
||||
|
||||
|
||||
public static Menu createHelpMenu() {
|
||||
final String[] translations = {"Hilfe", "Help"};
|
||||
ActionListener actionListener = new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
// TODO Auto-generated method stub
|
||||
}
|
||||
};
|
||||
Menu helpMenu = new Menu(translations, actionListener);
|
||||
helpMenu.add(HelpMenuItemFactory.createManualMenuItem());
|
||||
helpMenu.add(HelpMenuItemFactory.createAboutMenuItem());
|
||||
return helpMenu;
|
||||
}
|
||||
}
|
||||
30
src/main/java/gui/src/menubar/menus/LanguageMenuFactory.java
Normal file
30
src/main/java/gui/src/menubar/menus/LanguageMenuFactory.java
Normal file
@@ -0,0 +1,30 @@
|
||||
/**
|
||||
* @author Aaron Moser
|
||||
* @date 01.11.2023
|
||||
*/
|
||||
|
||||
package gui.src.menubar.menus;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
import gui.src.menubar.Menu;
|
||||
import gui.src.menubar.MenuBarLanguageController;
|
||||
import gui.src.menubar.menuItems.LanguageMenuItemFactory;
|
||||
|
||||
public class LanguageMenuFactory {
|
||||
|
||||
public static Menu createLanguageMenu(MenuBarLanguageController languageController) {
|
||||
final String[] translations = {"Sprache", "Language"};
|
||||
ActionListener actionListener = new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
|
||||
}
|
||||
};
|
||||
Menu languageMenu = new Menu(translations, actionListener);
|
||||
languageMenu.add(LanguageMenuItemFactory.createGermanMenuItem(languageController));
|
||||
languageMenu.add(LanguageMenuItemFactory.createEnglishMenuItem(languageController));
|
||||
return languageMenu;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user