@FXML private void initialize() { securitiesMenu.disableProperty().bind(disabled); currenciesMenu.disableProperty().bind(disabled); closeMenuItem.disableProperty().bind(disabled); optionsMenuItem.disableProperty().bind(disabled); reportMenu.disableProperty().bind(disabled); transNumberListMenuItem.disableProperty().bind(disabled); importOfxMenuItem.disableProperty().bind(disabled); importQifMenuItem.disableProperty().bind(disabled); windowMenu .disableProperty() .bind(Bindings.or(disabled, RegisterStage.registerStageList().emptyProperty())); RegisterStage.registerStageList() .addListener( (ListChangeListener<RegisterStage>) c -> { while (c.next()) { if (c.wasAdded()) { c.getAddedSubList().forEach(MenuBarController.this::addWindowMenuItem); } else if (c.wasRemoved()) { c.getAddedSubList().forEach(MenuBarController.this::removeWindowMenuItem); } } }); ThemeManager.addKnownThemes(themesMenu); MessageBus.getInstance().registerListener(this, MessageChannel.SYSTEM); }
@FXML private void closeAllWindows() { // create a copy to avoid concurrent modification issues final RegisterStage[] stages = RegisterStage.registerStageList() .toArray(new RegisterStage[RegisterStage.registerStageList().size()]); for (final RegisterStage stage : stages) { stage.close(); } }
public static RegisterStage getRegisterStage(@NotNull final Account account) { // look for an existing stage first for (final RegisterStage registerStage : registerStageListProperty) { if (registerStage.accountProperty.get().equals(account)) { registerStage.requestFocus(); return registerStage; } } return new RegisterStage(account); }
private void addWindowMenuItem(final RegisterStage registerStage) { final MenuItem menuItem = new MenuItem(registerStage.accountProperty().get().getName()); menuItem.setUserData(registerStage); menuItem.setOnAction( event -> { final RegisterStage stage = (RegisterStage) menuItem.getUserData(); stage.requestFocus(); }); registerStage.setOnHiding(event -> windowMenu.getItems().removeAll(menuItem)); windowMenu.getItems().add(0, menuItem); }
@FXML private void handleZoomAccountAction() { RegisterStage.getRegisterStage(selectedAccountProperty.get()).show(); }