Example usage for javafx.scene.control.cell CheckBoxListCell CheckBoxListCell

List of usage examples for javafx.scene.control.cell CheckBoxListCell CheckBoxListCell

Introduction

In this page you can find the example usage for javafx.scene.control.cell CheckBoxListCell CheckBoxListCell.

Prototype

public CheckBoxListCell(final Callback<T, ObservableValue<Boolean>> getSelectedProperty,
        final StringConverter<T> converter) 

Source Link

Document

Creates a CheckBoxListCell with a custom string converter.

Usage

From source file:de.perdoctus.ebikeconnect.gui.ActivitiesOverviewController.java

@FXML
public void initialize() {
    logger.info("Init!");

    NUMBER_FORMAT.setMaximumFractionDigits(2);

    webEngine = webView.getEngine();/* ww  w .  j  av  a  2 s .c om*/
    webEngine.load(getClass().getResource("/html/googleMap.html").toExternalForm());

    // Activity Headers
    activityDaysHeaderService.setOnSucceeded(event -> {
        activitiesTable.setItems(FXCollections.observableArrayList(activityDaysHeaderService.getValue()));
        activitiesTable.getSortOrder().add(tcDate);
        tcDate.setSortable(true);
    });
    activityDaysHeaderService.setOnFailed(
            event -> logger.error("Failed to obtain ActivityList!", activityDaysHeaderService.getException()));
    final ProgressDialog activityHeadersProgressDialog = new ProgressDialog(activityDaysHeaderService);
    activityHeadersProgressDialog.initModality(Modality.APPLICATION_MODAL);

    // Activity Details
    activityDetailsGroupService.setOnSucceeded(
            event -> this.currentActivityDetailsGroup.setValue(activityDetailsGroupService.getValue()));
    activityDetailsGroupService.setOnFailed(event -> logger.error("Failed to obtain ActivityDetails!",
            activityDaysHeaderService.getException()));
    final ProgressDialog activityDetailsProgressDialog = new ProgressDialog(activityDetailsGroupService);
    activityDetailsProgressDialog.initModality(Modality.APPLICATION_MODAL);

    // Gpx Export
    gpxExportService.setOnSucceeded(event -> gpxExportFinished());
    gpxExportService
            .setOnFailed(event -> handleError("Failed to generate GPX File", gpxExportService.getException()));

    tcxExportService.setOnSucceeded(event -> gpxExportFinished());
    tcxExportService
            .setOnFailed(event -> handleError("Failed to generate TCX File", tcxExportService.getException()));

    // ActivityTable
    tcDate.setCellValueFactory(param -> new SimpleObjectProperty<>(param.getValue().getDate()));
    tcDate.setCellFactory(param -> new LocalDateCellFactory());
    tcDate.setSortType(TableColumn.SortType.DESCENDING);

    tcDistance.setCellValueFactory(param -> new SimpleObjectProperty<>(param.getValue().getDistance() / 1000));
    tcDistance.setCellFactory(param -> new NumberCellFactory(1, "km"));

    tcDuration.setCellValueFactory(param -> new SimpleObjectProperty<>(param.getValue().getDrivingTime()));
    tcDuration.setCellFactory(param -> new DurationCellFactory());

    activitiesTable.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
    activitiesTable.getSelectionModel().getSelectedItems()
            .addListener((ListChangeListener<ActivityHeaderGroup>) c -> {
                while (c.next()) {
                    if (c.wasRemoved()) {
                        for (ActivityHeaderGroup activityHeaderGroup : c.getRemoved()) {
                            lstSegments.getItems().removeAll(activityHeaderGroup.getActivityHeaders());
                        }

                    }
                    if (c.wasAdded()) {
                        for (ActivityHeaderGroup activityHeaderGroup : c.getAddedSubList()) {
                            if (activityHeaderGroup != null) { // WTF? Why can this be null!?
                                lstSegments.getItems().addAll(activityHeaderGroup.getActivityHeaders());
                            }
                        }
                    }

                }
                lstSegments.getItems().sort((o1, o2) -> o1.getStartTime().isAfter(o2.getStartTime()) ? 1 : 0);
            });

    activitiesTable.setOnMouseClicked(event -> {
        if (event.getClickCount() == 2) {
            lstSegments.getCheckModel().checkAll();
            openSelectedSections();
        }
    });

    // Segment List
    lstSegments
            .setCellFactory(listView -> new CheckBoxListCell<>(item -> lstSegments.getItemBooleanProperty(item),
                    new StringConverter<ActivityHeader>() {

                        @Override
                        public ActivityHeader fromString(String arg0) {
                            return null;
                        }

                        @Override
                        public String toString(ActivityHeader activityHeader) {
                            final String startTime = activityHeader.getStartTime().format(DATE_TIME_FORMATTER);
                            final String endTime = activityHeader.getEndTime().format(TIME_FORMATTER);
                            final double distance = activityHeader.getDistance() / 1000;
                            return startTime + " - " + endTime + " (" + NUMBER_FORMAT.format(distance) + " km)";
                        }

                    }));

    // -- Chart
    chartRangeSlider.setLowValue(0);
    chartRangeSlider.setHighValue(chartRangeSlider.getMax());

    xAxis.setAutoRanging(false);
    xAxis.lowerBoundProperty().bind(chartRangeSlider.lowValueProperty());
    xAxis.upperBoundProperty().bind(chartRangeSlider.highValueProperty());
    xAxis.tickUnitProperty().bind(
            chartRangeSlider.highValueProperty().subtract(chartRangeSlider.lowValueProperty()).divide(20));
    xAxis.setTickLabelFormatter(new StringConverter<Number>() {
        @Override
        public String toString(Number object) {
            final Duration duration = Duration.of(object.intValue(), ChronoUnit.SECONDS);
            return String.valueOf(DurationFormatter.formatHhMmSs(duration));
        }

        @Override
        public Number fromString(String string) {
            return null;
        }
    });

    chart.getChart().setOnScroll(event -> {
        final double scrollAmount = event.getDeltaY();
        chartRangeSlider.setLowValue(chartRangeSlider.getLowValue() + scrollAmount);
        chartRangeSlider.setHighValue(chartRangeSlider.getHighValue() - scrollAmount);
    });

    xAxis.setOnMouseMoved(event -> {
        if (getCurrentActivityDetailsGroup() == null) {
            return;
        }

        final Number valueForDisplay = xAxis.getValueForDisplay(event.getX());
        final List<Coordinate> trackpoints = getCurrentActivityDetailsGroup().getJoinedTrackpoints();
        final int index = valueForDisplay.intValue();
        if (index >= 0 && index < trackpoints.size()) {
            final Coordinate coordinate = trackpoints.get(index);
            if (coordinate.isValid()) {
                final LatLng latLng = new LatLng(coordinate);
                try {
                    webEngine.executeScript(
                            "updateMarkerPosition(" + objectMapper.writeValueAsString(latLng) + ");");
                } catch (JsonProcessingException e) {
                    e.printStackTrace(); //TODO clean up ugly code!!!!--------------
                }
            }
        }
    });

    // -- Current ActivityDetails
    this.currentActivityDetailsGroup.addListener((observable, oldValue, newValue) -> {
        if (newValue != null) {
            activityGroupChanged(newValue);
        }
    });
}