private ErrorTooltipManager(String message) { require(isNotBlank(message), "Tooltip message cannot be blank"); this.tooltip = new Tooltip(message); this.tooltip.getStyleClass().add(ERROR_TOOLTIP_CLASS); hideTimer.getKeyFrames().add(new KeyFrame(new Duration(5000))); hideTimer.setOnFinished(e -> { tooltip.hide(); ErrorTooltipManager.this.active = false; }); activationTimer.getKeyFrames().add(new KeyFrame(new Duration(250))); activationTimer.setOnFinished(e -> { if (!ErrorTooltipManager.this.active) { Scene scene = getScene(); if (scene != null) { Window owner = scene.getWindow(); if (owner != null && owner.isShowing() && ValidableTextField.this.isVisible()) { Point2D where = getDisplayCoordiantes(owner, scene); tooltip.show(ValidableTextField.this, where.getX(), where.getY()); ErrorTooltipManager.this.active = true; hideTimer.playFromStart(); } } } }); }
private void initTooltipMouseEvents() { setOnMouseEntered(e -> { if (customTooltip != null) { Point2D p = localToScreen(getLayoutBounds().getMaxX(), getLayoutBounds().getMaxY()); customTooltip.show(this, p.getX(), p.getY()); } }); setOnMouseExited(e -> { if (customTooltip != null) { customTooltip.hide(); } }); }
/** * Sets the error message as tooltip for the matching control. * * @param below * The control needed for positioning the tooltip. * @param reference * The control which gets the tooltip. */ protected void toggleTooltip(Node reference, Control below) { String fieldTooltip = field.getTooltip(); if ((reference.isFocused() || reference.isHover()) && (!fieldTooltip.equals("") || field.getErrorMessages().size() > 0)) { tooltip.setText((!fieldTooltip.equals("") ? fieldTooltip + "\n" : "") + String.join("\n", field.getErrorMessages())); if (tooltip.isShowing()) { return; } Point2D p = below.localToScene(0.0, 0.0); tooltip.show( getScene().getWindow(), p.getX() + getScene().getX() + getScene().getWindow().getX(), p.getY() + getScene().getY() + getScene().getWindow().getY() + below.getHeight() + 5 ); } else { tooltip.hide(); } }