Search in sources :

Example 1 with Chart

use of eu.fthevenet.binjr.data.workspace.Chart in project selenium_java by sergueik.

the class ChartViewportsState method setSelection.

public void setSelection(Map<Chart<Double>, XYChartSelection<ZonedDateTime, Double>> selectionMap, boolean toHistory) {
    this.suspendAxisListeners();
    try {
        selectionMap.forEach((chart, xyChartSelection) -> get(chart).ifPresent(y -> y.setSelection(xyChartSelection, toHistory)));
        selectionMap.entrySet().stream().findFirst().ifPresent(entry -> {
            ZonedDateTime newStartX = roundDateTime(entry.getValue().getStartX());
            ZonedDateTime newEndX = roundDateTime(entry.getValue().getEndX());
            boolean dontPlotChart = newStartX.isEqual(startX.get()) && newEndX.isEqual(endX.get());
            this.startX.set(newStartX);
            this.endX.set(newEndX);
            selectionMap.forEach((chart, xyChartSelection) -> get(chart).ifPresent(y -> y.setSelection(xyChartSelection, toHistory)));
            parent.invalidateAll(toHistory, dontPlotChart, false);
        });
        timeRange.set(TimeRangePicker.TimeRange.of(startX.getValue(), endX.getValue()));
    } finally {
        this.resumeAxisListeners();
    }
}
Also used : TimeRangePicker(eu.fthevenet.util.javafx.controls.TimeRangePicker) ReadOnlyObjectProperty(javafx.beans.property.ReadOnlyObjectProperty) ValueAxis(javafx.scene.chart.ValueAxis) ZonedDateTime(java.time.ZonedDateTime) HashMap(java.util.HashMap) Logger(org.apache.logging.log4j.Logger) ReadOnlyObjectWrapper(javafx.beans.property.ReadOnlyObjectWrapper) SimpleObjectProperty(javafx.beans.property.SimpleObjectProperty) Map(java.util.Map) SimpleDoubleProperty(javafx.beans.property.SimpleDoubleProperty) Optional(java.util.Optional) Chart(eu.fthevenet.binjr.data.workspace.Chart) XYChartSelection(eu.fthevenet.util.javafx.charts.XYChartSelection) ChangeListener(javafx.beans.value.ChangeListener) LogManager(org.apache.logging.log4j.LogManager) ZonedDateTime(java.time.ZonedDateTime)

Example 2 with Chart

use of eu.fthevenet.binjr.data.workspace.Chart in project selenium_java by sergueik.

the class WorksheetController method plotChart.

private void plotChart(ChartViewPort<Double> viewPort, XYChartSelection<ZonedDateTime, Double> currentSelection, boolean forceRefresh) {
    try (Profiler p = Profiler.start("Adding series to chart " + viewPort.getDataStore().getName(), logger::trace)) {
        worksheetMaskerPane.setVisible(true);
        AsyncTaskManager.getInstance().submit(() -> {
            viewPort.getDataStore().fetchDataFromSources(currentSelection.getStartX(), currentSelection.getEndX(), forceRefresh);
            return viewPort.getDataStore().getSeries().stream().filter(series -> {
                if (series.getProcessor() == null) {
                    logger.warn("Series " + series.getDisplayName() + " does not contain any data to plot");
                    return false;
                }
                if (!series.isSelected()) {
                    logger.debug(() -> "Series " + series.getDisplayName() + " is not selected");
                    return false;
                }
                return true;
            }).map(ts -> makeXYChartSeries(viewPort.getDataStore(), ts)).collect(Collectors.toList());
        }, event -> {
            if (!closed.get()) {
                worksheetMaskerPane.setVisible(false);
                viewPort.getChart().getData().setAll((Collection<? extends XYChart.Series<ZonedDateTime, Double>>) event.getSource().getValue());
                // Force a redraw of the charts and their Y Axis considering their proper width.
                new DelayedAction(() -> viewPort.getChart().resize(0.0, 0.0), Duration.millis(50)).submit();
            }
        }, event -> {
            if (!closed.get()) {
                worksheetMaskerPane.setVisible(false);
                Dialogs.notifyException("Failed to retrieve data from source", event.getSource().getException(), root);
            }
        });
    }
}
Also used : TimeRangePicker(eu.fthevenet.util.javafx.controls.TimeRangePicker) HPos(javafx.geometry.HPos) Pos(javafx.geometry.Pos) BindingManager(eu.fthevenet.util.javafx.bindings.BindingManager) Initializable(javafx.fxml.Initializable) DoubleBinding(javafx.beans.binding.DoubleBinding) javafx.scene.layout(javafx.scene.layout) Dialogs(eu.fthevenet.binjr.dialogs.Dialogs) CacheHint(javafx.scene.CacheHint) javafx.scene.control(javafx.scene.control) URL(java.net.URL) ZonedDateTime(java.time.ZonedDateTime) NoAdapterFoundException(eu.fthevenet.binjr.data.exceptions.NoAdapterFoundException) Side(javafx.geometry.Side) InvalidationListener(javafx.beans.InvalidationListener) ColorTableCell(eu.fthevenet.util.javafx.controls.ColorTableCell) MaskerPane(org.controlsfx.control.MaskerPane) ListChangeListener(javafx.collections.ListChangeListener) ImageIO(javax.imageio.ImageIO) eu.fthevenet.binjr.data.workspace(eu.fthevenet.binjr.data.workspace) DelayedAction(eu.fthevenet.util.javafx.controls.DelayedAction) USE_COMPUTED_SIZE(javafx.scene.layout.Region.USE_COMPUTED_SIZE) PropertyValueFactory(javafx.scene.control.cell.PropertyValueFactory) ReadOnlyDoubleProperty(javafx.beans.property.ReadOnlyDoubleProperty) AsyncTaskManager(eu.fthevenet.binjr.data.async.AsyncTaskManager) Group(javafx.scene.Group) Collectors(java.util.stream.Collectors) Platform(javafx.application.Platform) FXML(javafx.fxml.FXML) DataAdapter(eu.fthevenet.binjr.data.adapters.DataAdapter) Duration(javafx.util.Duration) Logger(org.apache.logging.log4j.Logger) TimeSeriesBinding(eu.fthevenet.binjr.data.adapters.TimeSeriesBinding) javafx.scene.chart(javafx.scene.chart) CheckBoxTableCell(javafx.scene.control.cell.CheckBoxTableCell) ObservableList(javafx.collections.ObservableList) Path(javafx.scene.shape.Path) Profiler(eu.fthevenet.util.logging.Profiler) java.util(java.util) SimpleStringProperty(javafx.beans.property.SimpleStringProperty) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) Bindings(javafx.beans.binding.Bindings) Function(java.util.function.Function) Supplier(java.util.function.Supplier) VPos(javafx.geometry.VPos) FXMLLoader(javafx.fxml.FXMLLoader) GlobalPreferences(eu.fthevenet.binjr.preferences.GlobalPreferences) TextAlignment(javafx.scene.text.TextAlignment) Chart(eu.fthevenet.binjr.data.workspace.Chart) DecimalFormatTableCellFactory(eu.fthevenet.util.javafx.controls.DecimalFormatTableCellFactory) Color(javafx.scene.paint.Color) javafx.scene.input(javafx.scene.input) Node(javafx.scene.Node) Property(javafx.beans.property.Property) WritableImage(javafx.scene.image.WritableImage) IOException(java.io.IOException) File(java.io.File) Consumer(java.util.function.Consumer) eu.fthevenet.util.javafx.charts(eu.fthevenet.util.javafx.charts) FileChooser(javafx.stage.FileChooser) ActionEvent(javafx.event.ActionEvent) Stage(javafx.stage.Stage) DateTimeFormatter(java.time.format.DateTimeFormatter) SwingFXUtils(javafx.embed.swing.SwingFXUtils) ObservableValue(javafx.beans.value.ObservableValue) ChangeListener(javafx.beans.value.ChangeListener) LogManager(org.apache.logging.log4j.LogManager) Profiler(eu.fthevenet.util.logging.Profiler) ZonedDateTime(java.time.ZonedDateTime) DelayedAction(eu.fthevenet.util.javafx.controls.DelayedAction)

Example 3 with Chart

use of eu.fthevenet.binjr.data.workspace.Chart in project selenium_java by sergueik.

the class WorksheetController method addBindings.

// region *** protected members ***
protected void addBindings(Collection<TimeSeriesBinding<Double>> bindings, Chart<Double> targetChart) {
    InvalidationListener isVisibleListener = (observable) -> {
        viewPorts.stream().filter(v -> v.getDataStore().equals(targetChart)).findFirst().ifPresent(v -> {
            boolean andAll = true;
            boolean orAll = false;
            for (TimeSeriesInfo<?> t : targetChart.getSeries()) {
                andAll &= t.isSelected();
                orAll |= t.isSelected();
            }
            CheckBox showAllCheckBox = (CheckBox) v.getSeriesTable().getColumns().get(0).getGraphic();
            showAllCheckBox.setIndeterminate(Boolean.logicalXor(andAll, orAll));
            showAllCheckBox.setSelected(andAll);
        });
    };
    for (TimeSeriesBinding<Double> b : bindings) {
        TimeSeriesInfo<Double> newSeries = TimeSeriesInfo.fromBinding(b);
        bindingManager.attachListener(newSeries.selectedProperty(), (observable, oldValue, newValue) -> viewPorts.stream().filter(v -> v.getDataStore().equals(targetChart)).findFirst().ifPresent(v -> invalidate(v, false, false)));
        bindingManager.attachListener(newSeries.selectedProperty(), isVisibleListener);
        targetChart.addSeries(newSeries);
        // Explicitly call the listener to initialize the proper status of the checkbox
        isVisibleListener.invalidated(null);
    }
    invalidateAll(false, false, false);
}
Also used : TimeRangePicker(eu.fthevenet.util.javafx.controls.TimeRangePicker) HPos(javafx.geometry.HPos) Pos(javafx.geometry.Pos) BindingManager(eu.fthevenet.util.javafx.bindings.BindingManager) Initializable(javafx.fxml.Initializable) DoubleBinding(javafx.beans.binding.DoubleBinding) javafx.scene.layout(javafx.scene.layout) Dialogs(eu.fthevenet.binjr.dialogs.Dialogs) CacheHint(javafx.scene.CacheHint) javafx.scene.control(javafx.scene.control) URL(java.net.URL) ZonedDateTime(java.time.ZonedDateTime) NoAdapterFoundException(eu.fthevenet.binjr.data.exceptions.NoAdapterFoundException) Side(javafx.geometry.Side) InvalidationListener(javafx.beans.InvalidationListener) ColorTableCell(eu.fthevenet.util.javafx.controls.ColorTableCell) MaskerPane(org.controlsfx.control.MaskerPane) ListChangeListener(javafx.collections.ListChangeListener) ImageIO(javax.imageio.ImageIO) eu.fthevenet.binjr.data.workspace(eu.fthevenet.binjr.data.workspace) DelayedAction(eu.fthevenet.util.javafx.controls.DelayedAction) USE_COMPUTED_SIZE(javafx.scene.layout.Region.USE_COMPUTED_SIZE) PropertyValueFactory(javafx.scene.control.cell.PropertyValueFactory) ReadOnlyDoubleProperty(javafx.beans.property.ReadOnlyDoubleProperty) AsyncTaskManager(eu.fthevenet.binjr.data.async.AsyncTaskManager) Group(javafx.scene.Group) Collectors(java.util.stream.Collectors) Platform(javafx.application.Platform) FXML(javafx.fxml.FXML) DataAdapter(eu.fthevenet.binjr.data.adapters.DataAdapter) Duration(javafx.util.Duration) Logger(org.apache.logging.log4j.Logger) TimeSeriesBinding(eu.fthevenet.binjr.data.adapters.TimeSeriesBinding) javafx.scene.chart(javafx.scene.chart) CheckBoxTableCell(javafx.scene.control.cell.CheckBoxTableCell) ObservableList(javafx.collections.ObservableList) Path(javafx.scene.shape.Path) Profiler(eu.fthevenet.util.logging.Profiler) java.util(java.util) SimpleStringProperty(javafx.beans.property.SimpleStringProperty) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) Bindings(javafx.beans.binding.Bindings) Function(java.util.function.Function) Supplier(java.util.function.Supplier) VPos(javafx.geometry.VPos) FXMLLoader(javafx.fxml.FXMLLoader) GlobalPreferences(eu.fthevenet.binjr.preferences.GlobalPreferences) TextAlignment(javafx.scene.text.TextAlignment) Chart(eu.fthevenet.binjr.data.workspace.Chart) DecimalFormatTableCellFactory(eu.fthevenet.util.javafx.controls.DecimalFormatTableCellFactory) Color(javafx.scene.paint.Color) javafx.scene.input(javafx.scene.input) Node(javafx.scene.Node) Property(javafx.beans.property.Property) WritableImage(javafx.scene.image.WritableImage) IOException(java.io.IOException) File(java.io.File) Consumer(java.util.function.Consumer) eu.fthevenet.util.javafx.charts(eu.fthevenet.util.javafx.charts) FileChooser(javafx.stage.FileChooser) ActionEvent(javafx.event.ActionEvent) Stage(javafx.stage.Stage) DateTimeFormatter(java.time.format.DateTimeFormatter) SwingFXUtils(javafx.embed.swing.SwingFXUtils) ObservableValue(javafx.beans.value.ObservableValue) ChangeListener(javafx.beans.value.ChangeListener) LogManager(org.apache.logging.log4j.LogManager) InvalidationListener(javafx.beans.InvalidationListener)

Example 4 with Chart

use of eu.fthevenet.binjr.data.workspace.Chart in project selenium_java by sergueik.

the class WorksheetController method setupOverlayChartLayout.

private void setupOverlayChartLayout() {
    for (int i = 0; i < viewPorts.size(); i++) {
        ChartViewPort<Double> v = viewPorts.get(i);
        XYChart<ZonedDateTime, Double> chart = v.getChart();
        int nbAdditionalCharts = getWorksheet().getCharts().size() - 1;
        DoubleBinding n = Bindings.createDoubleBinding(() -> viewPorts.stream().filter(c -> !c.getChart().equals(chart)).map(c -> c.getChart().getYAxis().getWidth()).reduce(Double::sum).orElse(0.0) + (Y_AXIS_SEPARATION * nbAdditionalCharts), viewPorts.stream().map(c -> c.getChart().getYAxis().widthProperty()).toArray(ReadOnlyDoubleProperty[]::new));
        HBox hBox = new HBox(chart);
        hBox.setAlignment(Pos.CENTER_LEFT);
        bindingManager.bind(hBox.prefHeightProperty(), chartParent.heightProperty());
        bindingManager.bind(hBox.prefWidthProperty(), chartParent.widthProperty());
        bindingManager.bind(chart.minWidthProperty(), chartParent.widthProperty().subtract(n));
        bindingManager.bind(chart.prefWidthProperty(), chartParent.widthProperty().subtract(n));
        bindingManager.bind(chart.maxWidthProperty(), chartParent.widthProperty().subtract(n));
        if (i == 0) {
            chart.getYAxis().setSide(Side.LEFT);
        } else {
            chart.getYAxis().setSide(Side.RIGHT);
            chart.setVerticalZeroLineVisible(false);
            chart.setHorizontalZeroLineVisible(false);
            chart.setVerticalGridLinesVisible(false);
            chart.setHorizontalGridLinesVisible(false);
            bindingManager.bind(chart.translateXProperty(), viewPorts.get(0).getChart().getYAxis().widthProperty());
            bindingManager.bind(chart.getYAxis().translateXProperty(), Bindings.createDoubleBinding(() -> viewPorts.stream().filter(c -> viewPorts.indexOf(c) != 0 && viewPorts.indexOf(c) < viewPorts.indexOf(v)).map(c -> c.getChart().getYAxis().getWidth()).reduce(Double::sum).orElse(0.0) + Y_AXIS_SEPARATION * (viewPorts.indexOf(v) - 1), viewPorts.stream().map(c -> c.getChart().getYAxis().widthProperty()).toArray(ReadOnlyDoubleProperty[]::new)));
        }
        chartParent.getChildren().add(hBox);
    }
    DateTimeFormatter dateTimeFormatter = DateTimeFormatter.RFC_1123_DATE_TIME;
    LinkedHashMap<XYChart<ZonedDateTime, Double>, Function<Double, String>> map = new LinkedHashMap<>();
    viewPorts.forEach(v -> map.put(v.getChart(), v.getPrefixFormatter()::format));
    crossHair = new XYChartCrosshair<>(map, chartParent, dateTimeFormatter::format);
    crossHair.onSelectionDone(s -> {
        logger.debug(() -> "Applying zoom selection: " + s.toString());
        currentState.setSelection(convertSelection(s), true);
    });
    hCrosshair.selectedProperty().bindBidirectional(globalPrefs.horizontalMarkerOnProperty());
    vCrosshair.selectedProperty().bindBidirectional(globalPrefs.verticalMarkerOnProperty());
    bindingManager.bind(crossHair.horizontalMarkerVisibleProperty(), Bindings.createBooleanBinding(() -> globalPrefs.isShiftPressed() || hCrosshair.isSelected(), hCrosshair.selectedProperty(), globalPrefs.shiftPressedProperty()));
    bindingManager.bind(crossHair.verticalMarkerVisibleProperty(), Bindings.createBooleanBinding(() -> globalPrefs.isCtrlPressed() || vCrosshair.isSelected(), vCrosshair.selectedProperty(), globalPrefs.ctrlPressedProperty()));
}
Also used : TimeRangePicker(eu.fthevenet.util.javafx.controls.TimeRangePicker) HPos(javafx.geometry.HPos) Pos(javafx.geometry.Pos) BindingManager(eu.fthevenet.util.javafx.bindings.BindingManager) Initializable(javafx.fxml.Initializable) DoubleBinding(javafx.beans.binding.DoubleBinding) javafx.scene.layout(javafx.scene.layout) Dialogs(eu.fthevenet.binjr.dialogs.Dialogs) CacheHint(javafx.scene.CacheHint) javafx.scene.control(javafx.scene.control) URL(java.net.URL) ZonedDateTime(java.time.ZonedDateTime) NoAdapterFoundException(eu.fthevenet.binjr.data.exceptions.NoAdapterFoundException) Side(javafx.geometry.Side) InvalidationListener(javafx.beans.InvalidationListener) ColorTableCell(eu.fthevenet.util.javafx.controls.ColorTableCell) MaskerPane(org.controlsfx.control.MaskerPane) ListChangeListener(javafx.collections.ListChangeListener) ImageIO(javax.imageio.ImageIO) eu.fthevenet.binjr.data.workspace(eu.fthevenet.binjr.data.workspace) DelayedAction(eu.fthevenet.util.javafx.controls.DelayedAction) USE_COMPUTED_SIZE(javafx.scene.layout.Region.USE_COMPUTED_SIZE) PropertyValueFactory(javafx.scene.control.cell.PropertyValueFactory) ReadOnlyDoubleProperty(javafx.beans.property.ReadOnlyDoubleProperty) AsyncTaskManager(eu.fthevenet.binjr.data.async.AsyncTaskManager) Group(javafx.scene.Group) Collectors(java.util.stream.Collectors) Platform(javafx.application.Platform) FXML(javafx.fxml.FXML) DataAdapter(eu.fthevenet.binjr.data.adapters.DataAdapter) Duration(javafx.util.Duration) Logger(org.apache.logging.log4j.Logger) TimeSeriesBinding(eu.fthevenet.binjr.data.adapters.TimeSeriesBinding) javafx.scene.chart(javafx.scene.chart) CheckBoxTableCell(javafx.scene.control.cell.CheckBoxTableCell) ObservableList(javafx.collections.ObservableList) Path(javafx.scene.shape.Path) Profiler(eu.fthevenet.util.logging.Profiler) java.util(java.util) SimpleStringProperty(javafx.beans.property.SimpleStringProperty) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) Bindings(javafx.beans.binding.Bindings) Function(java.util.function.Function) Supplier(java.util.function.Supplier) VPos(javafx.geometry.VPos) FXMLLoader(javafx.fxml.FXMLLoader) GlobalPreferences(eu.fthevenet.binjr.preferences.GlobalPreferences) TextAlignment(javafx.scene.text.TextAlignment) Chart(eu.fthevenet.binjr.data.workspace.Chart) DecimalFormatTableCellFactory(eu.fthevenet.util.javafx.controls.DecimalFormatTableCellFactory) Color(javafx.scene.paint.Color) javafx.scene.input(javafx.scene.input) Node(javafx.scene.Node) Property(javafx.beans.property.Property) WritableImage(javafx.scene.image.WritableImage) IOException(java.io.IOException) File(java.io.File) Consumer(java.util.function.Consumer) eu.fthevenet.util.javafx.charts(eu.fthevenet.util.javafx.charts) FileChooser(javafx.stage.FileChooser) ActionEvent(javafx.event.ActionEvent) Stage(javafx.stage.Stage) DateTimeFormatter(java.time.format.DateTimeFormatter) SwingFXUtils(javafx.embed.swing.SwingFXUtils) ObservableValue(javafx.beans.value.ObservableValue) ChangeListener(javafx.beans.value.ChangeListener) LogManager(org.apache.logging.log4j.LogManager) ReadOnlyDoubleProperty(javafx.beans.property.ReadOnlyDoubleProperty) DoubleBinding(javafx.beans.binding.DoubleBinding) CacheHint(javafx.scene.CacheHint) Function(java.util.function.Function) ZonedDateTime(java.time.ZonedDateTime) DateTimeFormatter(java.time.format.DateTimeFormatter)

Example 5 with Chart

use of eu.fthevenet.binjr.data.workspace.Chart in project selenium_java by sergueik.

the class WorksheetController method setReloadRequiredHandler.

public void setReloadRequiredHandler(Consumer<WorksheetController> action) {
    ChangeListener<Object> controllerReloadListener = (observable, oldValue, newValue) -> {
        if (newValue != null) {
            logger.debug("Reloading worksheet controller because property changed from: " + oldValue + " to " + newValue);
            action.accept(this);
            this.close();
        }
    };
    bindingManager.attachListener(worksheet.chartLayoutProperty(), controllerReloadListener);
    this.worksheet.getCharts().forEach(c -> {
        bindingManager.attachListener(c.unitPrefixesProperty(), controllerReloadListener);
        bindingManager.attachListener(c.chartTypeProperty(), controllerReloadListener);
    });
    ListChangeListener<Chart<Double>> chartListListener = c -> {
        while (c.next()) {
            if (c.wasPermutated()) {
                for (int i = c.getFrom(); i < c.getTo(); ++i) {
                // nothing for now
                }
            } else if (c.wasUpdated()) {
            // nothing for now
            } else {
                if (!preventReload) {
                    if (c.wasAdded()) {
                        List<? extends Chart<Double>> added = c.getAddedSubList();
                        Chart<Double> chart = added.get(added.size() - 1);
                        int chartIndex = worksheet.getCharts().indexOf(chart);
                        worksheet.setSelectedChart(chartIndex);
                        chart.setShowProperties(true);
                    }
                    if (c.wasRemoved()) {
                        if (worksheet.getSelectedChart() == c.getFrom()) {
                            worksheet.setSelectedChart(Math.max(0, c.getFrom() - 1));
                        } else if (worksheet.getSelectedChart() > c.getFrom()) {
                            worksheet.setSelectedChart(Math.max(0, worksheet.getSelectedChart() - 1));
                        }
                    }
                    logger.debug(() -> "Reloading worksheet controller because list changed: " + c.toString() + " in controller " + this.toString());
                    action.accept(this);
                } else {
                    logger.debug(() -> "Reload explicitly prevented on change " + c.toString());
                }
            }
        }
    };
    bindingManager.attachListener(worksheet.getCharts(), chartListListener);
}
Also used : TimeRangePicker(eu.fthevenet.util.javafx.controls.TimeRangePicker) HPos(javafx.geometry.HPos) Pos(javafx.geometry.Pos) BindingManager(eu.fthevenet.util.javafx.bindings.BindingManager) Initializable(javafx.fxml.Initializable) DoubleBinding(javafx.beans.binding.DoubleBinding) javafx.scene.layout(javafx.scene.layout) Dialogs(eu.fthevenet.binjr.dialogs.Dialogs) CacheHint(javafx.scene.CacheHint) javafx.scene.control(javafx.scene.control) URL(java.net.URL) ZonedDateTime(java.time.ZonedDateTime) NoAdapterFoundException(eu.fthevenet.binjr.data.exceptions.NoAdapterFoundException) Side(javafx.geometry.Side) InvalidationListener(javafx.beans.InvalidationListener) ColorTableCell(eu.fthevenet.util.javafx.controls.ColorTableCell) MaskerPane(org.controlsfx.control.MaskerPane) ListChangeListener(javafx.collections.ListChangeListener) ImageIO(javax.imageio.ImageIO) eu.fthevenet.binjr.data.workspace(eu.fthevenet.binjr.data.workspace) DelayedAction(eu.fthevenet.util.javafx.controls.DelayedAction) USE_COMPUTED_SIZE(javafx.scene.layout.Region.USE_COMPUTED_SIZE) PropertyValueFactory(javafx.scene.control.cell.PropertyValueFactory) ReadOnlyDoubleProperty(javafx.beans.property.ReadOnlyDoubleProperty) AsyncTaskManager(eu.fthevenet.binjr.data.async.AsyncTaskManager) Group(javafx.scene.Group) Collectors(java.util.stream.Collectors) Platform(javafx.application.Platform) FXML(javafx.fxml.FXML) DataAdapter(eu.fthevenet.binjr.data.adapters.DataAdapter) Duration(javafx.util.Duration) Logger(org.apache.logging.log4j.Logger) TimeSeriesBinding(eu.fthevenet.binjr.data.adapters.TimeSeriesBinding) javafx.scene.chart(javafx.scene.chart) CheckBoxTableCell(javafx.scene.control.cell.CheckBoxTableCell) ObservableList(javafx.collections.ObservableList) Path(javafx.scene.shape.Path) Profiler(eu.fthevenet.util.logging.Profiler) java.util(java.util) SimpleStringProperty(javafx.beans.property.SimpleStringProperty) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) Bindings(javafx.beans.binding.Bindings) Function(java.util.function.Function) Supplier(java.util.function.Supplier) VPos(javafx.geometry.VPos) FXMLLoader(javafx.fxml.FXMLLoader) GlobalPreferences(eu.fthevenet.binjr.preferences.GlobalPreferences) TextAlignment(javafx.scene.text.TextAlignment) Chart(eu.fthevenet.binjr.data.workspace.Chart) DecimalFormatTableCellFactory(eu.fthevenet.util.javafx.controls.DecimalFormatTableCellFactory) Color(javafx.scene.paint.Color) javafx.scene.input(javafx.scene.input) Node(javafx.scene.Node) Property(javafx.beans.property.Property) WritableImage(javafx.scene.image.WritableImage) IOException(java.io.IOException) File(java.io.File) Consumer(java.util.function.Consumer) eu.fthevenet.util.javafx.charts(eu.fthevenet.util.javafx.charts) FileChooser(javafx.stage.FileChooser) ActionEvent(javafx.event.ActionEvent) Stage(javafx.stage.Stage) DateTimeFormatter(java.time.format.DateTimeFormatter) SwingFXUtils(javafx.embed.swing.SwingFXUtils) ObservableValue(javafx.beans.value.ObservableValue) ChangeListener(javafx.beans.value.ChangeListener) LogManager(org.apache.logging.log4j.LogManager) Chart(eu.fthevenet.binjr.data.workspace.Chart) CacheHint(javafx.scene.CacheHint)

Aggregations

Chart (eu.fthevenet.binjr.data.workspace.Chart)7 TimeRangePicker (eu.fthevenet.util.javafx.controls.TimeRangePicker)7 ZonedDateTime (java.time.ZonedDateTime)7 ChangeListener (javafx.beans.value.ChangeListener)7 DataAdapter (eu.fthevenet.binjr.data.adapters.DataAdapter)6 TimeSeriesBinding (eu.fthevenet.binjr.data.adapters.TimeSeriesBinding)6 AsyncTaskManager (eu.fthevenet.binjr.data.async.AsyncTaskManager)6 NoAdapterFoundException (eu.fthevenet.binjr.data.exceptions.NoAdapterFoundException)6 eu.fthevenet.binjr.data.workspace (eu.fthevenet.binjr.data.workspace)6 Dialogs (eu.fthevenet.binjr.dialogs.Dialogs)6 GlobalPreferences (eu.fthevenet.binjr.preferences.GlobalPreferences)6 BindingManager (eu.fthevenet.util.javafx.bindings.BindingManager)6 eu.fthevenet.util.javafx.charts (eu.fthevenet.util.javafx.charts)6 ColorTableCell (eu.fthevenet.util.javafx.controls.ColorTableCell)6 DecimalFormatTableCellFactory (eu.fthevenet.util.javafx.controls.DecimalFormatTableCellFactory)6 DelayedAction (eu.fthevenet.util.javafx.controls.DelayedAction)6 Profiler (eu.fthevenet.util.logging.Profiler)6 File (java.io.File)6 IOException (java.io.IOException)6 URL (java.net.URL)6