Search in sources :

Example 81 with ObservableValue

use of javafx.beans.value.ObservableValue in project jvarkit by lindenb.

the class VcfStage method buildGenotypeTableRow.

/**
 * build Genotype table
 */
private TableView<Genotype> buildGenotypeTableRow(final VCFHeader header) {
    final TableView<Genotype> table = new TableView<Genotype>();
    /* sample */
    table.getColumns().add(makeColumn("Sample", G -> G.getSampleName()));
    for (final VCFFormatHeaderLine h : header.getFormatHeaderLines()) {
        final TableColumn<Genotype, String> newcol = new TableColumn<>(h.getID());
        newcol.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Genotype, String>, ObservableValue<String>>() {

            @Override
            public ObservableValue<String> call(CellDataFeatures<Genotype, String> param) {
                final String delim;
                Object o;
                if (param.getTableColumn().getText().equals(VCFConstants.GENOTYPE_KEY)) {
                    delim = param.getValue().isPhased() ? "|" : "/";
                    o = param.getValue().getAlleles().stream().map(A -> allele2stringConverter.apply(A)).collect(Collectors.toList());
                } else {
                    delim = ",";
                    o = param.getValue().getAnyAttribute(param.getTableColumn().getText());
                }
                if (o == null) {
                    return new ReadOnlyObjectWrapper<String>(null);
                }
                if (o instanceof List) {
                    List<?> L = (List<?>) o;
                    o = L.stream().map(S -> String.valueOf(S)).collect(Collectors.joining(delim)).toString();
                }
                return new ReadOnlyObjectWrapper<String>(String.valueOf(o));
            }
        });
        table.getColumns().add(newcol);
    }
    /* type */
    table.getColumns().add(makeColumn("Type", G -> G.getType().name()));
    table.setPlaceholder(new Label("No Genotype."));
    return table;
}
Also used : Arrays(java.util.Arrays) VCFHeader(htsjdk.variant.vcf.VCFHeader) ChartFactory(com.github.lindenb.jvarkit.tools.vcfviewgui.chart.ChartFactory) VariantContextChartFactory(com.github.lindenb.jvarkit.tools.vcfviewgui.chart.VariantContextChartFactory) ScrollPane(javafx.scene.control.ScrollPane) TabPane(javafx.scene.control.TabPane) ReadOnlyObjectWrapper(javafx.beans.property.ReadOnlyObjectWrapper) VariantDepthChartFactory(com.github.lindenb.jvarkit.tools.vcfviewgui.chart.VariantDepthChartFactory) Map(java.util.Map) AlleleFrequencyChartFactory(com.github.lindenb.jvarkit.tools.vcfviewgui.chart.AlleleFrequencyChartFactory) CloserUtil(htsjdk.samtools.util.CloserUtil) Rectangle2D(javafx.geometry.Rectangle2D) SplitPane(javafx.scene.control.SplitPane) PropertyValueFactory(javafx.scene.control.cell.PropertyValueFactory) GenotypeBuilder(htsjdk.variant.variantcontext.GenotypeBuilder) GraphicsContext(javafx.scene.canvas.GraphicsContext) AFByPopulationChartFactory(com.github.lindenb.jvarkit.tools.vcfviewgui.chart.AFByPopulationChartFactory) TiTvChartFactory(com.github.lindenb.jvarkit.tools.vcfviewgui.chart.TiTvChartFactory) Set(java.util.Set) Screen(javafx.stage.Screen) CellDataFeatures(javafx.scene.control.TableColumn.CellDataFeatures) ArcType(javafx.scene.shape.ArcType) Separator(javafx.scene.control.Separator) PieChart(javafx.scene.chart.PieChart) BooleanProperty(javafx.beans.property.BooleanProperty) FlowPane(javafx.scene.layout.FlowPane) VariantContextWriter(htsjdk.variant.variantcontext.writer.VariantContextWriter) CheckBoxTableCell(javafx.scene.control.cell.CheckBoxTableCell) ObservableList(javafx.collections.ObservableList) BorderPane(javafx.scene.layout.BorderPane) Genotype(htsjdk.variant.variantcontext.Genotype) CloseableIterator(htsjdk.samtools.util.CloseableIterator) OutputType(htsjdk.variant.variantcontext.writer.VariantContextWriterBuilder.OutputType) FXCollections(javafx.collections.FXCollections) TextFlow(javafx.scene.text.TextFlow) Supplier(java.util.function.Supplier) TreeSet(java.util.TreeSet) ArrayList(java.util.ArrayList) LinkedHashMap(java.util.LinkedHashMap) TabClosingPolicy(javafx.scene.control.TabPane.TabClosingPolicy) SequenceOntologyTree(com.github.lindenb.jvarkit.util.so.SequenceOntologyTree) VCFConstants(htsjdk.variant.vcf.VCFConstants) Counter(com.github.lindenb.jvarkit.util.Counter) Color(javafx.scene.paint.Color) CheckBox(javafx.scene.control.CheckBox) IOException(java.io.IOException) AFBySexChartFactory(com.github.lindenb.jvarkit.tools.vcfviewgui.chart.AFBySexChartFactory) File(java.io.File) Menu(javafx.scene.control.Menu) FileChooser(javafx.stage.FileChooser) Tab(javafx.scene.control.Tab) CompiledScript(javax.script.CompiledScript) AnnPredictionParserFactory(com.github.lindenb.jvarkit.util.vcf.predictions.AnnPredictionParserFactory) VCFFormatHeaderLine(htsjdk.variant.vcf.VCFFormatHeaderLine) ObservableValue(javafx.beans.value.ObservableValue) VariantTypeChartFactory(com.github.lindenb.jvarkit.tools.vcfviewgui.chart.VariantTypeChartFactory) EventHandler(javafx.event.EventHandler) Button(javafx.scene.control.Button) Allele(htsjdk.variant.variantcontext.Allele) VariantContextWriterBuilder(htsjdk.variant.variantcontext.writer.VariantContextWriterBuilder) VBox(javafx.scene.layout.VBox) AlertType(javafx.scene.control.Alert.AlertType) ContextMenu(javafx.scene.control.ContextMenu) WindowEvent(javafx.stage.WindowEvent) TableView(javafx.scene.control.TableView) Orientation(javafx.geometry.Orientation) Alert(javafx.scene.control.Alert) HBox(javafx.scene.layout.HBox) TextField(javafx.scene.control.TextField) PatternSyntaxException(java.util.regex.PatternSyntaxException) MenuItem(javafx.scene.control.MenuItem) Predicate(java.util.function.Predicate) VariantQualChartFactory(com.github.lindenb.jvarkit.tools.vcfviewgui.chart.VariantQualChartFactory) GenotypeType(htsjdk.variant.variantcontext.GenotypeType) Font(javafx.scene.text.Font) Collectors(java.util.stream.Collectors) SeparatorMenuItem(javafx.scene.control.SeparatorMenuItem) Text(javafx.scene.text.Text) List(java.util.List) Paint(javafx.scene.paint.Paint) Term(com.github.lindenb.jvarkit.util.so.SequenceOntologyTree.Term) VCFInfoHeaderLine(htsjdk.variant.vcf.VCFInfoHeaderLine) Optional(java.util.Optional) VariantContext(htsjdk.variant.variantcontext.VariantContext) Pattern(java.util.regex.Pattern) VariantContextBuilder(htsjdk.variant.variantcontext.VariantContextBuilder) VCFHeaderLine(htsjdk.variant.vcf.VCFHeaderLine) Scene(javafx.scene.Scene) AnnPredictionParser(com.github.lindenb.jvarkit.util.vcf.predictions.AnnPredictionParser) ButtonType(javafx.scene.control.ButtonType) Function(java.util.function.Function) TableColumn(javafx.scene.control.TableColumn) Interval(htsjdk.samtools.util.Interval) Insets(javafx.geometry.Insets) VepPredictionParser(com.github.lindenb.jvarkit.util.vcf.predictions.VepPredictionParser) VepPredictionParserFactory(com.github.lindenb.jvarkit.util.vcf.predictions.VepPredictionParserFactory) Callback(javafx.util.Callback) GenotypeTypeChartFactory(com.github.lindenb.jvarkit.tools.vcfviewgui.chart.GenotypeTypeChartFactory) VCFFilterHeaderLine(htsjdk.variant.vcf.VCFFilterHeaderLine) Label(javafx.scene.control.Label) ActionEvent(javafx.event.ActionEvent) SimpleBooleanProperty(javafx.beans.property.SimpleBooleanProperty) SpinnerValueFactory(javafx.scene.control.SpinnerValueFactory) ExtensionFilter(javafx.stage.FileChooser.ExtensionFilter) Collections(java.util.Collections) CellDataFeatures(javafx.scene.control.TableColumn.CellDataFeatures) ObservableValue(javafx.beans.value.ObservableValue) Label(javafx.scene.control.Label) Genotype(htsjdk.variant.variantcontext.Genotype) TableColumn(javafx.scene.control.TableColumn) ObservableList(javafx.collections.ObservableList) ArrayList(java.util.ArrayList) List(java.util.List) TableView(javafx.scene.control.TableView) VCFFormatHeaderLine(htsjdk.variant.vcf.VCFFormatHeaderLine)

Example 82 with ObservableValue

use of javafx.beans.value.ObservableValue in project jvarkit by lindenb.

the class VcfStage method buildFilterTable.

/**
 * build FILTER table
 */
private TableView<String> buildFilterTable() {
    final TableView<String> table = new TableView<>();
    final TableColumn<String, String> scol = new TableColumn<>("Filter");
    scol.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<String, String>, ObservableValue<String>>() {

        @Override
        public ObservableValue<String> call(CellDataFeatures<String, String> param) {
            return new ReadOnlyObjectWrapper<String>(param.getValue());
        }
    });
    table.getColumns().add(scol);
    table.setPlaceholder(new Label("No Variant or Variant contains no Filter"));
    return table;
}
Also used : CellDataFeatures(javafx.scene.control.TableColumn.CellDataFeatures) ObservableValue(javafx.beans.value.ObservableValue) Label(javafx.scene.control.Label) TableColumn(javafx.scene.control.TableColumn) TableView(javafx.scene.control.TableView)

Example 83 with ObservableValue

use of javafx.beans.value.ObservableValue in project JFoenix by jfoenixadmin.

the class JFXNodeUtils method addDelayedPropertyInvalidationListener.

public static <T> InvalidationListener addDelayedPropertyInvalidationListener(ObservableValue<T> property, Duration delayTime, Consumer<T> justInTimeConsumer, Consumer<T> delayedConsumer) {
    Wrapper<T> eventWrapper = new Wrapper<>();
    PauseTransition holdTimer = new PauseTransition(delayTime);
    holdTimer.setOnFinished(event -> delayedConsumer.accept(eventWrapper.content));
    final InvalidationListener invalidationListener = observable -> {
        eventWrapper.content = property.getValue();
        justInTimeConsumer.accept(eventWrapper.content);
        holdTimer.playFromStart();
    };
    property.addListener(invalidationListener);
    return invalidationListener;
}
Also used : EventHandler(javafx.event.EventHandler) MouseEvent(javafx.scene.input.MouseEvent) UnmodifiableListSet(com.sun.javafx.collections.UnmodifiableListSet) InvalidationListener(javafx.beans.InvalidationListener) ArrayList(java.util.ArrayList) BackgroundFill(javafx.scene.layout.BackgroundFill) Locale(java.util.Locale) BiConsumer(java.util.function.BiConsumer) Direction(com.sun.javafx.scene.traversal.Direction) KeyCode(javafx.scene.input.KeyCode) Color(javafx.scene.paint.Color) Node(javafx.scene.Node) Event(javafx.event.Event) Set(java.util.Set) KeyEvent(javafx.scene.input.KeyEvent) Background(javafx.scene.layout.Background) EventType(javafx.event.EventType) Consumer(java.util.function.Consumer) Duration(javafx.util.Duration) List(java.util.List) Region(javafx.scene.layout.Region) PauseTransition(javafx.animation.PauseTransition) Paint(javafx.scene.paint.Paint) ObservableValue(javafx.beans.value.ObservableValue) Queue(java.util.Queue) ArrayDeque(java.util.ArrayDeque) InvalidationListener(javafx.beans.InvalidationListener) PauseTransition(javafx.animation.PauseTransition)

Example 84 with ObservableValue

use of javafx.beans.value.ObservableValue in project JFoenix by jfoenixadmin.

the class JFXNodeUtils method addDelayedPropertyInvalidationListener.

public static <T> InvalidationListener addDelayedPropertyInvalidationListener(ObservableValue<T> property, Duration delayTime, BiConsumer<T, InvalidationListener> consumer) {
    Wrapper<T> eventWrapper = new Wrapper<>();
    PauseTransition holdTimer = new PauseTransition(delayTime);
    final InvalidationListener invalidationListener = observable -> {
        eventWrapper.content = property.getValue();
        holdTimer.playFromStart();
    };
    holdTimer.setOnFinished(event -> consumer.accept(eventWrapper.content, invalidationListener));
    property.addListener(invalidationListener);
    return invalidationListener;
}
Also used : EventHandler(javafx.event.EventHandler) MouseEvent(javafx.scene.input.MouseEvent) UnmodifiableListSet(com.sun.javafx.collections.UnmodifiableListSet) InvalidationListener(javafx.beans.InvalidationListener) ArrayList(java.util.ArrayList) BackgroundFill(javafx.scene.layout.BackgroundFill) Locale(java.util.Locale) BiConsumer(java.util.function.BiConsumer) Direction(com.sun.javafx.scene.traversal.Direction) KeyCode(javafx.scene.input.KeyCode) Color(javafx.scene.paint.Color) Node(javafx.scene.Node) Event(javafx.event.Event) Set(java.util.Set) KeyEvent(javafx.scene.input.KeyEvent) Background(javafx.scene.layout.Background) EventType(javafx.event.EventType) Consumer(java.util.function.Consumer) Duration(javafx.util.Duration) List(java.util.List) Region(javafx.scene.layout.Region) PauseTransition(javafx.animation.PauseTransition) Paint(javafx.scene.paint.Paint) ObservableValue(javafx.beans.value.ObservableValue) Queue(java.util.Queue) ArrayDeque(java.util.ArrayDeque) InvalidationListener(javafx.beans.InvalidationListener) PauseTransition(javafx.animation.PauseTransition)

Example 85 with ObservableValue

use of javafx.beans.value.ObservableValue in project jgnash by ccavanaugh.

the class ReportViewerDialogController method initialize.

@FXML
private void initialize() {
    busyPane = new BusyPane();
    stackPane.getChildren().add(busyPane);
    saveButton.disableProperty().bind(report.isNull());
    reportFormatButton.disableProperty().bind(report.isNull());
    fontSizeSpinner.disableProperty().bind(report.isNull());
    firstButton.disableProperty().bind(report.isNull().or(pageCount.isEqualTo(0)).or(pageIndex.isEqualTo(0)));
    previousButton.disableProperty().bind(report.isNull().or(pageCount.isEqualTo(0)).or(pageIndex.isEqualTo(0)));
    nextButton.disableProperty().bind(report.isNull().or(pageCount.isEqualTo(0)).or(pageIndex.isEqualTo(pageCount.subtract(1))));
    lastButton.disableProperty().bind(report.isNull().or(pageCount.isEqualTo(0)).or(pageIndex.isEqualTo(pageCount.subtract(1))));
    fitPageButton.disableProperty().bind(report.isNull());
    fitHeightButton.disableProperty().bind(report.isNull());
    fitWidthButton.disableProperty().bind(report.isNull());
    zoomComboBox.disableProperty().bind(report.isNull());
    zoomInButton.disableProperty().bind(report.isNull().or(zoomProperty.greaterThanOrEqualTo(DEFAULT_ZOOMS[DEFAULT_ZOOMS.length - 1] / 100)));
    zoomOutButton.disableProperty().bind(report.isNull().or(zoomProperty.lessThanOrEqualTo(DEFAULT_ZOOMS[0] / 100)));
    fitPageButton.setSelected(true);
    firstButton.prefHeightProperty().bind(saveButton.heightProperty());
    previousButton.prefHeightProperty().bind(saveButton.heightProperty());
    nextButton.prefHeightProperty().bind(saveButton.heightProperty());
    lastButton.prefHeightProperty().bind(saveButton.heightProperty());
    zoomInButton.prefHeightProperty().bind(saveButton.heightProperty());
    zoomOutButton.prefHeightProperty().bind(saveButton.heightProperty());
    fitHeightButton.prefHeightProperty().bind(saveButton.heightProperty());
    fitWidthButton.prefHeightProperty().bind(saveButton.heightProperty());
    fitPageButton.prefHeightProperty().bind(saveButton.heightProperty());
    fontSizeSpinner.setValueFactory(new SpinnerValueFactory.DoubleSpinnerValueFactory(5, 15, 7));
    // act when the report property has been set or changed
    report.addListener((observable, oldValue, newValue) -> {
        if (newValue != null) {
            fontSizeSpinner.valueFactoryProperty().get().setValue((double) newValue.getBaseFontSize());
        }
    });
    reportControllerPaneProperty.addListener((observable, oldValue, newValue) -> {
        if (newValue != null) {
            reportControllerPane.getChildren().addAll(newValue);
        }
    });
    fontSizeSpinner.valueProperty().addListener((observable, oldValue, newValue) -> {
        report.get().setBaseFontSize(newValue.floatValue());
        if (reportController != null) {
            reportController.refreshReport();
        }
    });
    pagePane.setSpacing(PAGE_BORDER);
    pagePane.setPadding(new Insets(PAGE_BORDER));
    pagePane.setAlignment(Pos.CENTER);
    scrollPane.viewportBoundsProperty().addListener((observable, oldValue, newValue) -> {
        if (fitWidthButton.isSelected()) {
            handleFitPageWidthAction();
        }
        scrollPane.setFitToWidth(pagePane.prefWidth(-1) < newValue.getWidth());
        scrollPane.setFitToHeight(pagePane.prefHeight(-1) < newValue.getHeight());
    });
    scrollPane.vvalueProperty().addListener((ObservableValue<? extends Number> observable, Number oldValue, Number newValue) -> {
        final double interval = 1d / pageCount.get();
        double low = pageIndex.get() * interval;
        double hi = low + interval;
        int newPageIndex = pageIndex.get();
        if (hi < newValue.doubleValue() && pageIndex.get() < pageCount.get()) {
            while (hi < newValue.doubleValue()) {
                newPageIndex++;
                hi += interval;
            }
            // increase the page index to match the scroll position
            setPageIndex(newPageIndex);
        } else if (low > newValue.doubleValue() && pageIndex.get() > 0) {
            while (low > newValue.doubleValue()) {
                newPageIndex--;
                low -= interval;
            }
            // decrease the page index to match the scroll position
            setPageIndex(newPageIndex);
        }
    });
    for (int zoom : DEFAULT_ZOOMS) {
        zoomComboBox.getItems().add(zoom + "%");
    }
    zoomComboBox.getSelectionModel().select(DEFAULT_ZOOM_INDEX);
    zoomComboBox.addEventHandler(KeyEvent.KEY_PRESSED, (KeyEvent e) -> {
        if (e.getCode() == KeyCode.ENTER) {
            handleZoomChangedAction();
        }
    });
    setZoomRatio(1);
    // this ensures the report is properly closed when the dialog is closed
    parent.addListener((observable, oldValue, newValue) -> {
        if (newValue != null) {
            parent.get().getWindow().setOnCloseRequest(event -> {
                try {
                    report.get().close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            });
        }
    });
}
Also used : KeyEvent(javafx.scene.input.KeyEvent) BusyPane(jgnash.uifx.control.BusyPane) Insets(javafx.geometry.Insets) ObservableValue(javafx.beans.value.ObservableValue) IOException(java.io.IOException) SpinnerValueFactory(javafx.scene.control.SpinnerValueFactory) FXML(javafx.fxml.FXML) InjectFXML(jgnash.uifx.util.InjectFXML)

Aggregations

ObservableValue (javafx.beans.value.ObservableValue)85 ChangeListener (javafx.beans.value.ChangeListener)53 FXML (javafx.fxml.FXML)13 Scene (javafx.scene.Scene)13 ImageView (javafx.scene.image.ImageView)13 KeyEvent (javafx.scene.input.KeyEvent)11 ArrayList (java.util.ArrayList)10 Label (javafx.scene.control.Label)10 TableColumn (javafx.scene.control.TableColumn)10 TableView (javafx.scene.control.TableView)10 ActionEvent (javafx.event.ActionEvent)9 MouseEvent (javafx.scene.input.MouseEvent)9 TextField (javafx.scene.control.TextField)8 Color (javafx.scene.paint.Color)8 ObservableList (javafx.collections.ObservableList)7 MenuItem (javafx.scene.control.MenuItem)7 CellDataFeatures (javafx.scene.control.TableColumn.CellDataFeatures)7 List (java.util.List)6 Set (java.util.Set)6 Platform (javafx.application.Platform)6