Automate switching between languages
This commit is contained in:
@@ -5,11 +5,16 @@ import java.net.URL;
|
||||
import java.util.ResourceBundle;
|
||||
|
||||
import com.google.common.eventbus.EventBus;
|
||||
import com.google.common.eventbus.Subscribe;
|
||||
|
||||
import app.events.LanguageChangedEvent;
|
||||
import app.model.Model;
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.fxml.Initializable;
|
||||
import javafx.scene.control.MenuBar;
|
||||
import javafx.scene.control.RadioMenuItem;
|
||||
import javafx.scene.control.ToggleGroup;
|
||||
import javafx.stage.DirectoryChooser;
|
||||
import javafx.stage.FileChooser;
|
||||
import javafx.stage.Stage;
|
||||
@@ -17,11 +22,13 @@ import javafx.stage.Stage;
|
||||
public class MenubarController implements Initializable, Controller {
|
||||
|
||||
private EventBus eventBus;
|
||||
private Model model;
|
||||
|
||||
@FXML
|
||||
private MenuBar menubar;
|
||||
|
||||
@FXML
|
||||
private ToggleGroup languageToggleGroup;
|
||||
|
||||
@FXML
|
||||
public String handleOpenFile() {
|
||||
FileChooser fc = new FileChooser();
|
||||
@@ -76,12 +83,27 @@ public class MenubarController implements Initializable, Controller {
|
||||
}
|
||||
|
||||
/**
|
||||
* Links the controller to the global model
|
||||
*
|
||||
* @param model The model to be linked
|
||||
* Handles the event where the language was change from the menu.
|
||||
*/
|
||||
public void setModel(Model model) {
|
||||
this.model = model;
|
||||
@FXML
|
||||
private void handleLanguageChange(ActionEvent event) {
|
||||
this.eventBus.post(
|
||||
new LanguageChangedEvent(
|
||||
((RadioMenuItem) event.getSource()).getText()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates menubuttons whenever the language is changed
|
||||
*/
|
||||
@Subscribe
|
||||
private void handle(LanguageChangedEvent event) {
|
||||
this.languageToggleGroup
|
||||
.getToggles()
|
||||
.stream()
|
||||
.map(RadioMenuItem.class::cast)
|
||||
.filter(t -> t.getId().equals("toggle" + event.getLanguage()))
|
||||
.findFirst()
|
||||
.orElseThrow()
|
||||
.setSelected(true);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user