@FXML
  private void initialize() {
    deleteButton.setDisable(true);
    reconcileButton.setDisable(true);

    initializeTreeTableView();

    Platform.runLater(this::loadAccountTree);

    MessageBus.getInstance()
        .registerListener(
            this, MessageChannel.SYSTEM, MessageChannel.ACCOUNT, MessageChannel.TRANSACTION);

    // Register invalidation listeners to force a reload
    typeFilter.addListener(observable -> reload());

    selectedAccountProperty.addListener(
        (observable, oldValue, newValue) -> {
          updateButtonStates();
        });

    modifyButton.disableProperty().bind(selectedAccountProperty.isNull());

    AccountBalanceDisplayManager.getAccountBalanceDisplayModeProperty()
        .addListener(
            (observable, oldValue, newValue) -> {
              treeTableView.refresh();
            });
  }
  private void initBindings() {
    // zorgen dat de content van de scrollpane de juiste brete aanhoud
    quizPane.prefWidthProperty().bind(questionScroll.widthProperty().add(-5));
    // wrappings zetten
    openQuestionText.wrappingWidthProperty().bind(openQuestionVbox.widthProperty().add(-20));
    multipleChoiceText.wrappingWidthProperty().bind(multipleChoiseVbox.widthProperty().add(-20));
    imageQuestionText.wrappingWidthProperty().bind(imageQuestionVbox.widthProperty().add(-20));

    questionListener =
        new ListChangeListener<QuestionSubmit>() {
          @Override
          public void onChanged(
              javafx.collections.ListChangeListener.Change<? extends QuestionSubmit> c) {
            for (QuestionSubmit s : c.getList()) {
              if (!questionForPane.values().contains(s)) {
                TitledPane p = new TitledPane(s.getQuestion(), new AnchorPane());
                questionAccordion.getPanes().add(p);
                questionForPane.put(p, s);
              }
            }
          }
        };

    questionAccordion
        .expandedPaneProperty()
        .addListener(
            new ChangeListener<TitledPane>() {
              @Override
              public void changed(
                  ObservableValue<? extends TitledPane> observable,
                  TitledPane oldValue,
                  TitledPane newValue) {
                if (oldValue != null) {
                  ((AnchorPane) oldValue.getContent()).getChildren().clear();
                }
                if (newValue != null) {
                  createQuestionFor(newValue);
                }
              }
            });

    currentPlayingRound.addListener(
        new ChangeListener<RoundSubmit>() {
          @Override
          public void changed(
              ObservableValue<? extends RoundSubmit> observable,
              RoundSubmit oldValue,
              RoundSubmit newValue) {
            removeRound(oldValue);
            setRound(newValue);
          }
        });

    quizPane.visibleProperty().bind(currentPlayingRound.isNotNull());
  }
Пример #3
0
  @Override
  public void duringSave(Void model) {
    List<EntityExportSource<? extends AbstractPersistentObject>> entityExportSources =
        PersistentWork.read(
            em -> {
              @SuppressWarnings("unchecked")
              List<Class<? extends AbstractPersistentObject>> entityClasses =
                  em.getEntityManagerFactory()
                      .getMetamodel()
                      .getEntities()
                      .stream()
                      .map(e -> (Class<? extends AbstractPersistentObject>) e.getJavaType())
                      .collect(Collectors.toList());
              List<EntityExportSource<? extends AbstractPersistentObject>> exportSources =
                  entityClasses
                      .stream()
                      .map(c -> new EntityExportSource<>(PersistentWork.idsFrom(c), c))
                      .collect(Collectors.toList());
              return exportSources;
            });

    XlsxExporter exporter = new XlsxExporter(controller.getExecutorService());

    File file = exportFile.get();
    try {
      if (file.exists()) {
        log.info("Deleting existing file {}", file);
        file.delete();
      }
      Files.createDirectories(file.toPath());
      file.createNewFile();
    } catch (IOException e) {
      log.error("Could not create file {}", file, e);
    }
    List<EntityExportSource<?>> bla = entityExportSources;
    exporter.export(file, bla);

    controller
        .getJavaFXExecutor()
        .submit(
            () -> {
              Dialogs.create()
                  .message(Localized.get("export.successfully", file))
                  .showInformation();
              if (openAfterExport.isSelected()) {
                controller
                    .getExecutorService()
                    .submit(
                        () -> {
                          try {
                            desktop.edit(file);
                          } catch (IOException e) {
                            log.error("Could not open {}", file, e);
                          }
                        });
              }
            });
  }
  private void installListeners() {
    treeTableView
        .getSelectionModel()
        .selectedItemProperty()
        .addListener(
            (observable, oldValue, newValue) -> {
              if (newValue != null) {
                selectedAccountProperty.setValue(newValue.getValue());
              } else {
                selectedAccountProperty.setValue(null);
              }
            });

    for (final TreeTableColumn<?, ?> treeTableColumn : treeTableView.getColumns()) {
      treeTableColumn
          .visibleProperty()
          .addListener((observable, oldValue, newValue) -> saveColumnVisibility());
    }
  }
Пример #5
0
  @FXML
  void showFileChooser() {
    FileChooser fileChooser = new FileChooser();
    fileChooser.setInitialFileName("export");
    fileChooser.setSelectedExtensionFilter(
        new FileChooser.ExtensionFilter("export to excel", ".xlsx"));

    File file = fileChooser.showOpenDialog(exportBtn.getScene().getWindow());
    exportFile.set(file);
  }
  @FXML
  private void sendRound() {
    if (answerForQuestion.size() != currentPlayingRound.get().getAmountOfQuestions()) {
      messageMaker.showWarning("niet alle vragen zijn ingevuld");
      return;
    }

    send(questionsForRound.get(currentPlayingRound.get()));

    // de huidige ronde verwijderen
    questionsForRound.remove(currentPlayingRound.get());
    if (questionsForRound.isEmpty()) {
      currentPlayingRound.set(null);
    } else {
      for (RoundSubmit s : questionsForRound.keySet()) {
        currentPlayingRound.set(s);
        break;
      }
    }
  }
  private void updateButtonStates() {
    Platform.runLater(
        () -> {
          final Account account = selectedAccountProperty.get();

          if (account != null) {
            final int count = account.getTransactionCount();

            deleteButton.setDisable(count > 0 || account.getChildCount() > 0);
            reconcileButton.setDisable(count <= 0);
            zoomButton.setDisable(account.isPlaceHolder());
          } else {
            deleteButton.setDisable(true);
            reconcileButton.setDisable(true);
            zoomButton.setDisable(true);
          }
        });
  }
Пример #8
0
  static {
    preferences = Preferences.userNodeForPackage(ThemeManager.class);

    final StringProperty _baseColorProperty = new SimpleStringProperty();

    // restore the old value
    fontScaleProperty.set(preferences.getDouble(FONT_SIZE, 1));

    // Save the value when it changes
    fontScaleProperty.addListener(
        (observable, oldValue, newValue) -> {
          if (newValue != null) {
            preferences.putDouble(FONT_SIZE, newValue.doubleValue());
          }
        });

    baseColorProperty.setValue(Color.web(preferences.get(BASE_COLOR, DEFAULT_MODENA_BASE_COLOR)));

    // restore the old base color value
    switch (preferences.get(LAST, Application.STYLESHEET_MODENA)) {
      case Application.STYLESHEET_CASPIAN:
        baseColorProperty.setValue(
            Color.web(preferences.get(BASE_COLOR, DEFAULT_CASPIAN_BASE_COLOR)));
        break;
      case Application.STYLESHEET_MODENA:
        baseColorProperty.setValue(
            Color.web(preferences.get(BASE_COLOR, DEFAULT_MODENA_BASE_COLOR)));
        break;
      default:
        baseColorProperty.setValue(
            Color.web(preferences.get(BASE_COLOR, DEFAULT_MODENA_BASE_COLOR)));
    }

    _baseColorProperty.setValue(colorToHex(baseColorProperty.getValue()));

    // Save the value when it changes
    baseColorProperty.addListener(
        (observable, oldValue, newValue) -> {
          if (newValue != null) {
            preferences.put(BASE_COLOR, colorToHex(newValue));
            _baseColorProperty.setValue(colorToHex(newValue));
          }
        });

    // Create the binding format for the style / font size
    styleProperty =
        Bindings.format(
            "-fx-font-size: %1$.6fem; -fx-base:%2$s", fontScaleProperty, _baseColorProperty);
  }
 @FXML
 private void handleZoomAccountAction() {
   RegisterStage.getRegisterStage(selectedAccountProperty.get()).show();
 }
Пример #10
0
 private void update(Wallet wallet) {
   balance.set(wallet.getBalance());
   address.set(wallet.currentReceiveAddress());
 }