Java Code Examples for javafx.scene.control.Label#setTooltip()
The following examples show how to use
javafx.scene.control.Label#setTooltip() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: PickerLabel.java From HubTurbo with GNU Lesser General Public License v3.0 | 6 votes |
@Override public Node getNode() { // actual name for labels at the top, add tick for selected labels Label label = new Label((canDisplayFullName ? getFullName() : getShortName())); setLabelStyle(label); label.setText(label.getText() + (!canDisplayFullName && isSelected ? " ✓" : "")); FontLoader fontLoader = Toolkit.getToolkit().getFontLoader(); double width = fontLoader.computeStringWidth(label.getText(), label.getFont()); label.setPrefWidth(width + 30); if (isInGroup()) { Tooltip groupTooltip = new Tooltip(getGroupName()); label.setTooltip(groupTooltip); } setupEvents(label); return label; }
Example 2
Source File: NodeDetailPaneController.java From pmd-designer with BSD 2-Clause "Simplified" License | 6 votes |
@Override protected void beforeParentInit() { additionalInfoListView.setPlaceholder(new Label("No additional info")); Val<Node> currentSelection = initNodeSelectionHandling(getDesignerRoot(), EventStreams.never(), false); // pin to see updates currentSelection.pin(); hideCommonAttributesProperty() .values() .distinct() .subscribe(show -> setFocusNode(currentSelection.getValue(), new DataHolder())); attrValueColumn.setCellValueFactory(param -> Val.constant(DesignerUtil.attrToXpathString(param.getValue()))); attrNameColumn.setCellValueFactory(param -> Val.constant("@" + param.getValue().getName())); attrNameColumn.setCellFactory(col -> new AttributeNameTableCell()); Label valueColGraphic = new Label("Value"); valueColGraphic.setTooltip(new Tooltip("This is the XPath 2.0 representation")); attrValueColumn.setGraphic(valueColGraphic); }
Example 3
Source File: DataSetMeasurements.java From chart-fx with Apache License 2.0 | 6 votes |
protected void addGraphBelowItems() { final String toolTip = "whether to draw the new DataSet below (checked) or above (un-checked) the existing DataSets"; final Label label = new Label("draw below: "); label.setTooltip(new Tooltip(toolTip)); GridPane.setConstraints(label, 0, lastLayoutRow); graphBelowOtherDataSets.setSelected(false); graphBelowOtherDataSets.setTooltip(new Tooltip(toolTip)); GridPane.setConstraints(graphBelowOtherDataSets, 1, lastLayoutRow++); graphBelowOtherDataSets.selectedProperty().addListener((obs, o, n) -> { final Chart chart = localChart.get(); if (chart == null) { return; } chart.getRenderers().remove(renderer); if (Boolean.TRUE.equals(n)) { chart.getRenderers().add(0, renderer); } else { chart.getRenderers().add(renderer); } }); this.getDialogContentBox().getChildren().addAll(label, graphBelowOtherDataSets); }
Example 4
Source File: SnapshotTable.java From phoebus with Eclipse Public License 1.0 | 6 votes |
private void setup(String text, String tooltip, int minWidth, int prefWidth, boolean resizable) { label = new Label(text); label.setTooltip(new Tooltip(tooltip)); label.setTextAlignment(TextAlignment.CENTER); setGraphic(label); if (minWidth != -1) { setMinWidth(minWidth); } if (prefWidth != -1) { setPrefWidth(prefWidth); } setResizable(resizable); // setOnEditStart(e -> controller.suspend()); // setOnEditCancel(e -> controller.resume()); // setOnEditCommit(e -> controller.resume()); this.text = text; }
Example 5
Source File: SnapshotTreeTable.java From phoebus with Eclipse Public License 1.0 | 6 votes |
private void setup(String text, String tooltip, int minWidth, int prefWidth, boolean resizable) { label = new Label(text); label.setTooltip(new Tooltip(tooltip)); label.setTextAlignment(TextAlignment.CENTER); setGraphic(label); if (minWidth != -1) { setMinWidth(minWidth); } if (prefWidth != -1) { setPrefWidth(prefWidth); } setResizable(resizable); // setOnEditStart(e -> controller.suspend()); // setOnEditCancel(e -> controller.resume()); // setOnEditCommit(e -> controller.resume()); this.text = text; }
Example 6
Source File: StatusBar.java From scenic-view with GNU General Public License v3.0 | 5 votes |
private Label createLabel(final String value, final Tooltip tooltip) { final Label label = new Label(value); label.getStyleClass().add("value-name"); if (tooltip != null) { label.setTooltip(tooltip); } return label; }
Example 7
Source File: TxIdTextField.java From bisq with GNU Affero General Public License v3.0 | 5 votes |
public TxIdTextField() { txConfidenceIndicator = new TxConfidenceIndicator(); txConfidenceIndicator.setFocusTraversable(false); txConfidenceIndicator.setMaxSize(20, 20); txConfidenceIndicator.setId("funds-confidence"); txConfidenceIndicator.setLayoutY(1); txConfidenceIndicator.setProgress(0); txConfidenceIndicator.setVisible(false); AnchorPane.setRightAnchor(txConfidenceIndicator, 0.0); AnchorPane.setTopAnchor(txConfidenceIndicator, 3.0); progressIndicatorTooltip = new Tooltip("-"); txConfidenceIndicator.setTooltip(progressIndicatorTooltip); copyIcon = new Label(); copyIcon.setLayoutY(3); copyIcon.getStyleClass().addAll("icon", "highlight"); copyIcon.setTooltip(new Tooltip(Res.get("txIdTextField.copyIcon.tooltip"))); AwesomeDude.setIcon(copyIcon, AwesomeIcon.COPY); AnchorPane.setRightAnchor(copyIcon, 30.0); Tooltip tooltip = new Tooltip(Res.get("txIdTextField.blockExplorerIcon.tooltip")); blockExplorerIcon = new Label(); blockExplorerIcon.getStyleClass().addAll("icon", "highlight"); blockExplorerIcon.setTooltip(tooltip); AwesomeDude.setIcon(blockExplorerIcon, AwesomeIcon.EXTERNAL_LINK); blockExplorerIcon.setMinWidth(20); AnchorPane.setRightAnchor(blockExplorerIcon, 52.0); AnchorPane.setTopAnchor(blockExplorerIcon, 4.0); textField = new JFXTextField(); textField.setId("address-text-field"); textField.setEditable(false); textField.setTooltip(tooltip); AnchorPane.setRightAnchor(textField, 80.0); AnchorPane.setLeftAnchor(textField, 0.0); textField.focusTraversableProperty().set(focusTraversableProperty().get()); getChildren().addAll(textField, copyIcon, blockExplorerIcon, txConfidenceIndicator); }
Example 8
Source File: TextFieldWithCopyIcon.java From bisq with GNU Affero General Public License v3.0 | 5 votes |
public TextFieldWithCopyIcon(String customStyleClass) { Label copyIcon = new Label(); copyIcon.setLayoutY(3); copyIcon.getStyleClass().addAll("icon", "highlight"); copyIcon.setTooltip(new Tooltip(Res.get("shared.copyToClipboard"))); AwesomeDude.setIcon(copyIcon, AwesomeIcon.COPY); copyIcon.setOnMouseClicked(e -> { String text = getText(); if (text != null && text.length() > 0) { String copyText; if (copyWithoutCurrencyPostFix) { String[] strings = text.split(" "); if (strings.length > 1) copyText = strings[0]; // exclude the BTC postfix else copyText = text; } else { copyText = text; } Utilities.copyToClipboard(copyText); } }); textField = new JFXTextField(); textField.setEditable(false); if (customStyleClass != null) textField.getStyleClass().add(customStyleClass); textField.textProperty().bindBidirectional(text); AnchorPane.setRightAnchor(copyIcon, 5.0); AnchorPane.setRightAnchor(textField, 30.0); AnchorPane.setLeftAnchor(textField, 0.0); textField.focusTraversableProperty().set(focusTraversableProperty().get()); //TODO app wide focus //focusedProperty().addListener((ov, oldValue, newValue) -> textField.requestFocus()); getChildren().addAll(textField, copyIcon); }
Example 9
Source File: MainView.java From bisq with GNU Affero General Public License v3.0 | 5 votes |
private void updateMarketPriceLabel(Label label) { if (model.getIsPriceAvailable().get()) { if (model.getIsExternallyProvidedPrice().get()) { label.setText(Res.get("mainView.marketPriceWithProvider.label", getPriceProvider())); label.setTooltip(new Tooltip(getPriceProviderTooltipString())); } else { label.setText(Res.get("mainView.marketPrice.bisqInternalPrice")); final Tooltip tooltip = new Tooltip(Res.get("mainView.marketPrice.tooltip.bisqInternalPrice")); label.setTooltip(tooltip); } } else { label.setText(""); label.setTooltip(null); } }
Example 10
Source File: DataSetMeasurements.java From chart-fx with Apache License 2.0 | 5 votes |
protected void addParameterValueEditorItems() { if (measType.getControlParameterNames().isEmpty()) { return; } final String toolTip = "math function parameter - usually in units of the x-axis"; for (String controlParameter : measType.getControlParameterNames()) { final Label label = new Label(controlParameter + ": "); // NOPMD - done only once final CheckedNumberTextField parameterField = new CheckedNumberTextField(1.0); // NOPMD - done only once label.setTooltip(new Tooltip(toolTip)); // NOPMD - done only once GridPane.setConstraints(label, 0, lastLayoutRow); parameterField.setTooltip(new Tooltip(toolTip)); // NOPMD - done only once GridPane.setConstraints(parameterField, 1, lastLayoutRow++); this.parameterFields.add(parameterField); this.getDialogContentBox().getChildren().addAll(label, parameterField); } switch (measType) { case TRENDING_SECONDS: case TRENDING_TIMEOFDAY_UTC: case TRENDING_TIMEOFDAY_LOCAL: parameterFields.get(0).setText("600.0"); parameterFields.get(1).setText("10000"); Button resetButton = new Button("reset history"); resetButton.setTooltip(new Tooltip("press to reset trending history")); resetButton.setOnAction(evt -> this.trendingDataSet.reset()); GridPane.setConstraints(resetButton, 1, lastLayoutRow++); this.getDialogContentBox().getChildren().addAll(resetButton); break; default: break; } }
Example 11
Source File: SpectralMatchPanelFX.java From mzmine3 with GNU General Public License v2.0 | 5 votes |
private GridPane createTitlePane() { pnTitle = new GridPane(); pnTitle.setAlignment(Pos.CENTER); // create Top panel double simScore = hit.getSimilarity().getScore(); Color gradientCol = FxColorUtil.awtColorToFX(ColorScaleUtil .getColor(FxColorUtil.fxColorToAWT(MIN_COS_COLOR), FxColorUtil.fxColorToAWT(MAX_COS_COLOR), MIN_COS_COLOR_VALUE, MAX_COS_COLOR_VALUE, simScore)); pnTitle.setBackground( new Background(new BackgroundFill(gradientCol, CornerRadii.EMPTY, Insets.EMPTY))); lblHit = new Label(hit.getName()); lblHit.getStyleClass().add("white-larger-label"); lblScore = new Label(COS_FORM.format(simScore)); lblScore.getStyleClass().add("white-score-label"); lblScore .setTooltip(new Tooltip("Cosine similarity of raw data scan (top, blue) and database scan: " + COS_FORM.format(simScore))); pnTitle.add(lblHit, 0, 0); pnTitle.add(lblScore, 1, 0); ColumnConstraints ccTitle0 = new ColumnConstraints(150, -1, -1, Priority.ALWAYS, HPos.LEFT, true); ColumnConstraints ccTitle1 = new ColumnConstraints(150, 150, 150, Priority.NEVER, HPos.LEFT, false); pnTitle.getColumnConstraints().add(0, ccTitle0); pnTitle.getColumnConstraints().add(1, ccTitle1); return pnTitle; }
Example 12
Source File: NodeEditionCodeArea.java From pmd-designer with BSD 2-Clause "Simplified" License | 5 votes |
@NonNull public Label buildExpectedLabel(IntFunction<Val<Integer>> numViolationsPerLine, int idx) { Label foo = new Label(); foo.getStyleClass().addAll("num-violations-gutter-label"); Val<Integer> num = numViolationsPerLine.apply(idx + 1); foo.textProperty().bind(num.map(Object::toString)); foo.setTooltip(new Tooltip("Number of violations expected on this line")); foo.visibleProperty().bind(num.map(it -> it > 0)); return foo; }
Example 13
Source File: CObjectArrayField.java From Open-Lowcode with Eclipse Public License 2.0 | 4 votes |
@Override public Node getNode( PageActionManager actionmanager, CPageData inputdata, Window parentwindow, TabPane[] parenttabpanes, CollapsibleNode nodetocollapsewhenactiontriggered) { logger.fine("built node CObjectArrayField " + this.name); this.actionmanager = actionmanager; if (this.inlinefeeding) { inputdata.addInlineActionDataRef(this.feedinginlineactionoutputdata); } this.tooltip = new Tooltip("click to open object\nShift+click to unlink object."); HBox thispane = new HBox(); if (label != null) if (label.length() > 0) { Label thislabel = new Label(label); if (helper != null) if (helper.length() > 0) thislabel.setTooltip(new Tooltip(helper)); thislabel.setFont( Font.font(thislabel.getFont().getName(), FontPosture.ITALIC, thislabel.getFont().getSize())); thislabel.setMinWidth(120); thislabel.setWrapText(true); thislabel.setMaxWidth(120); thispane.getChildren().add(thislabel); } datapane = new FlowPane(); boolean nolabel = true; if (label != null) if (label.length() > 0) { FlowPane flowdatapane = new FlowPane(); thispane.setAlignment(Pos.TOP_LEFT); flowdatapane.setPrefWrapLength(400); // for object workflow tasks. flowdatapane.setVgap(4); flowdatapane.setHgap(8); this.datapane = flowdatapane; nolabel = false; } if (nolabel) { HBox boxdatapane = new HBox(); thispane.setAlignment(Pos.CENTER_LEFT); boxdatapane.setAlignment(Pos.CENTER_LEFT); this.datapane = boxdatapane; } // this is to keep the widget tiny when used as right of title thiselementarray = getExternalContent(inputdata, datareference); if (objectatendoffielddata != null) dataatendoffielddata = objectatendoffielddata.getNode(actionmanager, inputdata, parentwindow, parenttabpanes,nodetocollapsewhenactiontriggered); refreshDisplay(); thispane.getChildren().add(datapane); return thispane; }
Example 14
Source File: WaterfallPerformanceSample.java From chart-fx with Apache License 2.0 | 4 votes |
private ToolBar getContourToolBar(final XYChart chart, final ContourDataSetRenderer renderer) { ToolBar contourToolBar = new ToolBar(); contourType.getItems().addAll(ContourType.values()); contourType.setValue(renderer.getContourType()); contourType.valueProperty().bindBidirectional(renderer.contourTypeProperty()); contourType.valueProperty().addListener((ch, old, selection) -> chart.requestLayout()); colorGradient.setValue(renderer.getColorGradient()); colorGradient.valueProperty().bindBidirectional(renderer.colorGradientProperty()); colorGradient.valueProperty().addListener((ch, old, selection) -> chart.requestLayout()); nCountourLevelSlider.setShowTickLabels(true); nCountourLevelSlider.setShowTickMarks(true); nCountourLevelSlider.setMajorTickUnit(10); nCountourLevelSlider.setMinorTickCount(5); nCountourLevelSlider.setBlockIncrement(1); nCountourLevelSlider.setTooltip(new Tooltip("adjusts number of contour levels")); HBox.setHgrow(nCountourLevelSlider, Priority.ALWAYS); Label nContourLabel = new Label("n contours:"); nContourLabel.setTooltip(new Tooltip("adjusts number of contour levels")); final HBox hBoxContourLevelSlider = new HBox(nContourLabel, nCountourLevelSlider); nCountourLevelSlider.valueProperty().bindBidirectional(renderer.quantisationLevelsProperty()); nCountourLevelSlider.valueProperty().addListener((ch, o, n) -> chart.requestLayout()); nSegmentSlider.setShowTickLabels(true); nSegmentSlider.setShowTickMarks(true); nSegmentSlider.setMajorTickUnit(200); nSegmentSlider.setMinorTickCount(50); nSegmentSlider.setBlockIncrement(10); HBox.setHgrow(nSegmentSlider, Priority.ALWAYS); final HBox hBoxSegmentSlider = new HBox(new Label("n segments :"), nSegmentSlider); nSegmentSlider.valueProperty().bindBidirectional(renderer.maxContourSegmentsProperty()); nSegmentSlider.valueProperty().addListener((ch, o, n) -> chart.requestLayout()); minHexSizeSlider.setShowTickLabels(true); minHexSizeSlider.setShowTickMarks(true); minHexSizeSlider.setMajorTickUnit(10); minHexSizeSlider.setMinorTickCount(10); minHexSizeSlider.setBlockIncrement(1); HBox.setHgrow(minHexSizeSlider, Priority.ALWAYS); final HBox hBoxHexSizeSlider = new HBox(new Label("HexSize :"), minHexSizeSlider); minHexSizeSlider.valueProperty().bindBidirectional(renderer.minHexTileSizeProperty()); minHexSizeSlider.valueProperty().addListener((ch, o, n) -> chart.requestLayout()); localRange.setSelected(renderer.computeLocalRange()); localRange.setTooltip(new Tooltip("select for auto-adjusting the colour axis for the selected sub-range")); localRange.selectedProperty().bindBidirectional(renderer.computeLocalRangeProperty()); localRange.selectedProperty().addListener((ch, old, selection) -> chart.requestLayout()); final ToolBar standardCountourParameters = new ToolBar(contourType, colorGradient, hBoxContourLevelSlider, hBoxSegmentSlider, hBoxHexSizeSlider, localRange); dataReduction.setSelected(renderer.isReducePoints()); dataReduction.selectedProperty().bindBidirectional(renderer.pointReductionProperty()); dataReduction.selectedProperty().addListener((ch, old, selection) -> chart.requestLayout()); ChangeListener<Integer> reductionListener = (ch, o, n) -> { renderer.setReductionFactorX(reductionFactorX.getValue()); renderer.setReductionFactorY(reductionFactorY.getValue()); chart.requestLayout(); }; reductionFactorX.getValueFactory().setValue(renderer.getReductionFactorX()); reductionFactorY.getValueFactory().setValue(renderer.getReductionFactorY()); reductionFactorX.setPrefWidth(80); reductionFactorY.setPrefWidth(80); reductionFactorX.valueProperty().addListener(reductionListener); reductionFactorY.valueProperty().addListener(reductionListener); HBox.setHgrow(reductionFactorX, Priority.ALWAYS); HBox.setHgrow(reductionFactorY, Priority.ALWAYS); final HBox hBoxReductionFactorSlider = new HBox(new Label("Min Data Pixel Size X:"), reductionFactorX, new Label(" Y:"), reductionFactorY); reductionType.getItems().addAll(ReductionType.values()); reductionType.setValue(renderer.getReductionType()); reductionType.valueProperty().bindBidirectional(renderer.reductionTypeProperty()); reductionType.valueProperty().addListener((ch, old, selection) -> chart.requestLayout()); smooth.setSelected(renderer.isSmooth()); smooth.selectedProperty().bindBidirectional(renderer.smoothProperty()); smooth.selectedProperty().addListener((ch, old, selection) -> chart.requestLayout()); altImplementation.setSelected(renderer.isAltImplementation()); altImplementation.selectedProperty().bindBidirectional(renderer.altImplementationProperty()); altImplementation.selectedProperty().addListener((ch, old, selection) -> chart.requestLayout()); parallelImplementation.setSelected(renderer.isParallelImplementation()); parallelImplementation.selectedProperty().bindBidirectional(renderer.parallelImplementationProperty()); parallelImplementation.selectedProperty().addListener((ch, old, selection) -> chart.requestLayout()); final ToolBar newCountourParameters = new ToolBar(dataReduction, hBoxReductionFactorSlider, reductionType, smooth, altImplementation, parallelImplementation); contourToolBar.getItems().addAll(new VBox(standardCountourParameters, newCountourParameters)); return contourToolBar; }
Example 15
Source File: BsqAddressTextField.java From bisq with GNU Affero General Public License v3.0 | 4 votes |
public BsqAddressTextField() { TextField textField = new BisqTextField(); textField.setId("address-text-field"); textField.setEditable(false); textField.textProperty().bind(address); String tooltipText = Res.get("addressTextField.copyToClipboard"); textField.setTooltip(new Tooltip(tooltipText)); textField.setOnMousePressed(event -> wasPrimaryButtonDown = event.isPrimaryButtonDown()); textField.setOnMouseReleased(event -> { if (wasPrimaryButtonDown && address.get() != null && address.get().length() > 0) { Utilities.copyToClipboard(address.get()); Notification walletFundedNotification = new Notification() .notification(Res.get("addressTextField.addressCopiedToClipboard")) .hideCloseButton() .autoClose(); walletFundedNotification.show(); } wasPrimaryButtonDown = false; }); textField.focusTraversableProperty().set(focusTraversableProperty().get()); //TODO app wide focus //focusedProperty().addListener((ov, oldValue, newValue) -> textField.requestFocus()); Label copyIcon = new Label(); copyIcon.setLayoutY(3); copyIcon.getStyleClass().addAll("icon", "highlight"); copyIcon.setTooltip(new Tooltip(Res.get("addressTextField.copyToClipboard"))); AwesomeDude.setIcon(copyIcon, AwesomeIcon.COPY); copyIcon.setOnMouseClicked(e -> GUIUtil.showFeeInfoBeforeExecute(() -> { if (address.get() != null && address.get().length() > 0) Utilities.copyToClipboard(address.get()); })); AnchorPane.setRightAnchor(copyIcon, 5.0); AnchorPane.setRightAnchor(textField, 30.0); AnchorPane.setLeftAnchor(textField, 0.0); getChildren().addAll(textField, copyIcon); }
Example 16
Source File: AddressTextField.java From bisq with GNU Affero General Public License v3.0 | 4 votes |
public AddressTextField(String label) { JFXTextField textField = new BisqTextField(); textField.setId("address-text-field"); textField.setEditable(false); textField.setLabelFloat(true); textField.setPromptText(label); textField.textProperty().bind(address); String tooltipText = Res.get("addressTextField.openWallet"); textField.setTooltip(new Tooltip(tooltipText)); textField.setOnMousePressed(event -> wasPrimaryButtonDown = event.isPrimaryButtonDown()); textField.setOnMouseReleased(event -> { if (wasPrimaryButtonDown) GUIUtil.showFeeInfoBeforeExecute(AddressTextField.this::openWallet); wasPrimaryButtonDown = false; }); textField.focusTraversableProperty().set(focusTraversableProperty().get()); //TODO app wide focus //focusedProperty().addListener((ov, oldValue, newValue) -> textField.requestFocus()); Label extWalletIcon = new Label(); extWalletIcon.setLayoutY(3); extWalletIcon.getStyleClass().addAll("icon", "highlight"); extWalletIcon.setTooltip(new Tooltip(tooltipText)); AwesomeDude.setIcon(extWalletIcon, AwesomeIcon.SIGNIN); extWalletIcon.setOnMouseClicked(e -> GUIUtil.showFeeInfoBeforeExecute(this::openWallet)); Label copyIcon = new Label(); copyIcon.setLayoutY(3); copyIcon.getStyleClass().addAll("icon", "highlight"); Tooltip.install(copyIcon, new Tooltip(Res.get("addressTextField.copyToClipboard"))); AwesomeDude.setIcon(copyIcon, AwesomeIcon.COPY); copyIcon.setOnMouseClicked(e -> GUIUtil.showFeeInfoBeforeExecute(() -> { if (address.get() != null && address.get().length() > 0) Utilities.copyToClipboard(address.get()); })); AnchorPane.setRightAnchor(copyIcon, 30.0); AnchorPane.setRightAnchor(extWalletIcon, 5.0); AnchorPane.setRightAnchor(textField, 55.0); AnchorPane.setLeftAnchor(textField, 0.0); getChildren().addAll(textField, copyIcon, extWalletIcon); }
Example 17
Source File: SearchableTreeView.java From pmd-designer with BSD 2-Clause "Simplified" License | 4 votes |
/** * Textfield for the search query. */ private void popSearchField() { TextField textField = new TextField(); textField.setPrefWidth(150); textField.setPromptText("Search tree"); ControlUtil.makeTextFieldShowPromptEvenIfFocused(textField); Label label = new Label(); label.getStyleClass().addAll("hint-label"); label.setTooltip(new Tooltip("Go to next result with F3")); StackPane pane = new StackPane(); pane.getStyleClass().addAll("search-popup"); pane.getStylesheets().addAll(DesignerUtil.getCss("designer").toString()); StackPane.setAlignment(textField, Pos.TOP_RIGHT); StackPane.setAlignment(label, Pos.BOTTOM_RIGHT); pane.getChildren().addAll(textField, label); Val<String> query = Val.wrap(textField.textProperty()) .filter(StringUtils::isNotBlank).map(String::trim) .filter(it -> it.length() >= MIN_QUERY_LENGTH); Var<Integer> numResults = Var.newSimpleVar(0); Subscription subscription = bindSearchQuery(query.conditionOnShowing(pane), numResults, textField); label.textProperty().bind( numResults.map(n -> n == 0 ? "no match" : n == 1 ? "1 match" : n + " matches") ); label.visibleProperty().bind(query.map(Objects::nonNull)); Popup popup = new Popup(); popup.getContent().addAll(pane); popup.setAutoHide(true); popup.setHideOnEscape(true); Bounds bounds = localToScreen(getBoundsInLocal()); popup.show(this, bounds.getMaxX() - textField.getPrefWidth() - 1, bounds.getMinY()); popup.setOnHidden(e -> { openSearchField = null; subscription.unsubscribe(); }); // release resources // Hide popup when ENTER or ESCAPE is pressed EventStreams.eventsOf(popup, KeyEvent.KEY_RELEASED) .filter(it -> it.getCode() == KeyCode.ENTER || it.getCode() == KeyCode.ESCAPE) .subscribeForOne(e -> { popup.hide(); e.consume(); }); textField.requestFocus(); openSearchField = textField; }
Example 18
Source File: PropertyMapView.java From pmd-designer with BSD 2-Clause "Simplified" License | 3 votes |
@Override protected Pair<Node, Subscription> getNonEditingGraphic(Pair<PropertyDescriptorSpec, Var<String>> pair) { setEditable(true); Subscription sub = Subscription.EMPTY; Label propName = new Label(); propName.textProperty().bind(pair.getKey().nameProperty()); sub = sub.and(() -> propName.textProperty().unbind()); Label sep = new Label(" → "); Label propValue = new Label(); propValue.textProperty().bind(pair.getValue()); sub = sub.and(() -> propValue.textProperty().unbind()); Pane spacer = new Pane(); HBox.setHgrow(spacer, Priority.ALWAYS); FontIcon defaultIcon = new FontIcon("fas-map-marker"); Label defaultLabel = new Label("", defaultIcon); defaultLabel.visibleProperty().bind( pair.getValue().flatMap(it -> pair.getKey().valueProperty()) .map(it -> Objects.equals(it, pair.getValue().getValue())) ); defaultLabel.setContentDisplay(ContentDisplay.GRAPHIC_ONLY); defaultLabel.setTooltip(new Tooltip("Default value")); sub = sub.and(() -> defaultLabel.visibleProperty().unbind()); HBox box = new HBox(); box.getChildren().addAll(propName, sep, propValue, spacer, defaultLabel); sub = sub.and(ControlUtil.registerDoubleClickListener(box, this::doStartEdit)); return new Pair<>(box, sub); }