mirror of
https://gitlab.com/kauron/jstudy
synced 2024-12-22 08:23:33 +01:00
Test: option to lock switching tabs
This commit is contained in:
parent
0d4b50a78c
commit
d3d07b7541
4 changed files with 16 additions and 5 deletions
|
@ -7,6 +7,7 @@ import javafx.application.Platform;
|
|||
import javafx.beans.binding.Bindings;
|
||||
import javafx.beans.property.BooleanProperty;
|
||||
import javafx.beans.property.SimpleBooleanProperty;
|
||||
import javafx.collections.ListChangeListener;
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.event.Event;
|
||||
import javafx.event.EventHandler;
|
||||
|
@ -55,14 +56,20 @@ public class Controller implements Initializable {
|
|||
private final BooleanProperty tabIsTable = new SimpleBooleanProperty(false);
|
||||
private final Map<Tab, TableController> tabMap = new HashMap<>();
|
||||
private String updateURL, updateFileName;
|
||||
private Tab theTest = null;
|
||||
|
||||
@Override
|
||||
public void initialize(URL url, ResourceBundle resourceBundle) {
|
||||
tabPane.getSelectionModel().selectedItemProperty().addListener((ob, o, n) -> {
|
||||
tabIsTable.set(tabMap.get(n) != null);
|
||||
menuCloseTab.setDisable(!n.isClosable());
|
||||
menuSave.setDisable(!tabMap.containsKey(n) || tabMap.get(n).saved.get());
|
||||
if (theTest == o && AppPrefs.lockTabsOnTest.get()) { // optionally disallow switching from test
|
||||
tabPane.getSelectionModel().select(o);
|
||||
} else { // update if in table tab
|
||||
tabIsTable.set(tabMap.get(n) != null);
|
||||
menuCloseTab.setDisable(!n.isClosable());
|
||||
menuSave.setDisable(!tabMap.containsKey(n) || tabMap.get(n).saved.get());
|
||||
}
|
||||
});
|
||||
tabPane.getTabs().removeListener((ListChangeListener<Tab>) c -> theTest = null);
|
||||
Platform.runLater(() ->
|
||||
root.getScene().getWindow().setOnCloseRequest(event -> {
|
||||
for (Tab tab : tabPane.getTabs()) {
|
||||
|
@ -316,7 +323,8 @@ public class Controller implements Initializable {
|
|||
|
||||
((TestController) loader.getController()).setList(new ArrayList<>(list));
|
||||
|
||||
tabPane.getTabs().add(new Tab("Test: " + tabPane.getSelectionModel().getSelectedItem().getText(), root));
|
||||
theTest = new Tab("Test: " + tabPane.getSelectionModel().getSelectedItem().getText(), root);
|
||||
tabPane.getTabs().add(theTest);
|
||||
tabPane.getSelectionModel().selectLast();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
|
|
|
@ -10,7 +10,7 @@ import java.util.ResourceBundle;
|
|||
|
||||
public class SettingsController implements Initializable {
|
||||
@FXML
|
||||
private CheckBox repeatMistakes, showFeedback, repeatImmediately;
|
||||
private CheckBox repeatMistakes, showFeedback, repeatImmediately, lockTabsOnTest;
|
||||
|
||||
@Override
|
||||
public void initialize(URL location, ResourceBundle resources) {
|
||||
|
@ -18,6 +18,7 @@ public class SettingsController implements Initializable {
|
|||
repeatImmediately.selectedProperty().bindBidirectional(AppPrefs.repeatImmediately);
|
||||
repeatMistakes.selectedProperty().bindBidirectional(AppPrefs.repeatWrong);
|
||||
showFeedback.selectedProperty().bindBidirectional(AppPrefs.showFeedback);
|
||||
lockTabsOnTest.selectedProperty().bindBidirectional(AppPrefs.lockTabsOnTest);
|
||||
repeatMistakes.selectedProperty().addListener((obj, o, n) -> {
|
||||
if (!n) repeatImmediately.setSelected(false);
|
||||
});
|
||||
|
|
|
@ -13,6 +13,7 @@ public class AppPrefs {
|
|||
public static final BooleanPref repeatWrong = new BooleanPref(false, "repeatWrong");
|
||||
public static final BooleanPref showFeedback = new BooleanPref(true, "showFeedback");
|
||||
public static final BooleanPref repeatImmediately = new BooleanPref(false, "repeatImmediately");
|
||||
public static final BooleanPref lockTabsOnTest = new BooleanPref(false, "lockTabsOnTest");
|
||||
public static File lastDir;
|
||||
|
||||
static {
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
<CheckBox fx:id="repeatMistakes" text="_Repeat mistakes"/>
|
||||
<CheckBox fx:id="repeatImmediately" text="_Always repeat immediately"/>
|
||||
<CheckBox fx:id="showFeedback" text="Show _feedback while testing"/>
|
||||
<CheckBox fx:id="lockTabsOnTest" text="Don't allow tab switching when on a test"/>
|
||||
</children>
|
||||
<padding>
|
||||
<Insets bottom="15.0" left="15.0" right="15.0" top="15.0"/>
|
||||
|
|
Loading…
Reference in a new issue