Search in sources :

Example 16 with Tooltip

use of javafx.scene.control.Tooltip in project JFoenix by jfoenixadmin.

the class JFXListCell method updateItem.

/**
	 * {@inheritDoc}
	 */
@Override
public void updateItem(T item, boolean empty) {
    super.updateItem(item, empty);
    if (empty) {
        setText(null);
        setGraphic(null);
        // remove empty (Trailing cells)
        setMouseTransparent(true);
        setStyle("-fx-background-color:TRANSPARENT;");
    } else {
        if (item != null) {
            // if cell is not a trailing cell then show it
            setStyle(null);
            setMouseTransparent(false);
            Node currentNode = getGraphic();
            Node newNode;
            if ((item instanceof Region || item instanceof Control))
                newNode = (Node) item;
            else
                newNode = new Label(item.toString());
            boolean isJFXListView = getListView() instanceof JFXListView;
            // show cell tooltip if its toggled in JFXListView
            if (isJFXListView && ((JFXListView<?>) getListView()).isShowTooltip() && newNode instanceof Label) {
                setTooltip(new Tooltip(((Label) newNode).getText()));
            }
            if (currentNode == null || !currentNode.equals(newNode)) {
                // clear nodes
                cellContent = newNode;
                cellRippler.rippler.cacheRippleClip(false);
                // RIPPLER ITEM : in case if the list item has its own rippler bind the list rippler and item rippler properties
                if (newNode instanceof JFXRippler) {
                    // build cell container from exisiting rippler
                    cellRippler.ripplerFillProperty().bind(((JFXRippler) newNode).ripplerFillProperty());
                    cellRippler.maskTypeProperty().bind(((JFXRippler) newNode).maskTypeProperty());
                    cellRippler.positionProperty().bind(((JFXRippler) newNode).positionProperty());
                    cellContent = ((JFXRippler) newNode).getControl();
                } else // SUBLIST ITEM : build the Cell node as sublist the sublist
                if (newNode instanceof JFXListView<?>) {
                    // add the sublist to the parent and style the cell as sublist item
                    ((JFXListView<?>) getListView()).addSublist((JFXListView<?>) newNode, this.getIndex());
                    this.getStyleClass().add("sublist-item");
                    if (this.getPadding() != null)
                        this.setPadding(new Insets(this.getPadding().getTop(), 0, this.getPadding().getBottom(), 0));
                    // First build the group item used to expand / hide the sublist
                    StackPane groupNode = new StackPane();
                    groupNode.getStyleClass().add("sublist-header");
                    SVGGlyph dropIcon = new SVGGlyph(0, "ANGLE_RIGHT", "M340 548.571q0 7.429-5.714 13.143l-266.286 266.286q-5.714 5.714-13.143 5.714t-13.143-5.714l-28.571-28.571q-5.714-5.714-5.714-13.143t5.714-13.143l224.571-224.571-224.571-224.571q-5.714-5.714-5.714-13.143t5.714-13.143l28.571-28.571q5.714-5.714 13.143-5.714t13.143 5.714l266.286 266.286q5.714 5.714 5.714 13.143z", Color.BLACK);
                    dropIcon.setStyle("-fx-min-width:0.4em;-fx-max-width:0.4em;-fx-min-height:0.6em;-fx-max-height:0.6em;");
                    dropIcon.getStyleClass().add("drop-icon");
                    /*
						 *  alignment of the group node can be changed using the following css selector
						 *  .jfx-list-view .sublist-header{ }
						 */
                    groupNode.getChildren().setAll(((JFXListView<?>) newNode).getGroupnode(), dropIcon);
                    // the margin is needed when rotating the angle
                    StackPane.setMargin(dropIcon, new Insets(0, 19, 0, 0));
                    StackPane.setAlignment(dropIcon, Pos.CENTER_RIGHT);
                    // Second build the sublist container
                    StackPane sublistContainer = new StackPane();
                    sublistContainer.setMinHeight(0);
                    sublistContainer.setMaxHeight(0);
                    sublistContainer.getChildren().setAll(newNode);
                    sublistContainer.setTranslateY(this.snappedBottomInset());
                    sublistContainer.setOpacity(0);
                    StackPane.setMargin(newNode, new Insets(-1, -1, 0, -1));
                    //						sublistContainer.heightProperty().addListener((o,oldVal,newVal)->{
                    //							// store the hieght of the sublist and resize it to 0 to make it hidden
                    //							if(subListHeight == -1){
                    //								subListHeight = newVal.doubleValue() + this.snappedBottomInset()/2;
                    //								//								totalSubListsHeight += subListHeight;
                    //								// set the parent list 
                    //								Platform.runLater(()->{
                    //									sublistContainer.setMinHeight(0);
                    //									sublistContainer.setPrefHeight(0);
                    //									sublistContainer.setMaxHeight(0);
                    //									//									double currentHeight = ((JFXListView<T>)getListView()).getHeight();
                    //									// FIXME : THIS SHOULD ONLY CALLED ONCE ( NOW ITS BEING CALLED FOR EVERY SUBLIST)
                    //									//									updateListViewHeight(currentHeight - totalSubListsHeight);
                    //								});	
                    //							}
                    //						});
                    // Third, create container of group title and the sublist
                    VBox contentHolder = new VBox();
                    contentHolder.getChildren().setAll(groupNode, sublistContainer);
                    contentHolder.getStyleClass().add("sublist-container");
                    VBox.setVgrow(groupNode, Priority.ALWAYS);
                    cellContent = contentHolder;
                    cellRippler.ripplerPane.addEventHandler(MouseEvent.ANY, (e) -> e.consume());
                    contentHolder.addEventHandler(MouseEvent.ANY, (e) -> {
                        if (!e.isConsumed()) {
                            cellRippler.ripplerPane.fireEvent(e);
                            e.consume();
                        }
                    });
                    cellRippler.ripplerPane.addEventHandler(MouseEvent.MOUSE_CLICKED, (e) -> {
                        if (!e.isConsumed()) {
                            e.consume();
                            contentHolder.fireEvent(e);
                        }
                    });
                    // cache rippler clip in subnodes						
                    cellRippler.rippler.cacheRippleClip(true);
                    this.setOnMouseClicked((e) -> e.consume());
                    // Finally, add sublist animation						
                    contentHolder.setOnMouseClicked((click) -> {
                        click.consume();
                        // stop the animation or change the list height 
                        if (expandAnimation != null && expandAnimation.getStatus().equals(Status.RUNNING))
                            expandAnimation.stop();
                        // invert the expand property 
                        expandedProperty.set(!expandedProperty.get());
                        double newAnimatedHeight = ((Region) newNode).prefHeight(-1) * (expandedProperty.get() ? 1 : -1);
                        double newHeight = expandedProperty.get() ? this.getHeight() + newAnimatedHeight : this.prefHeight(-1);
                        // animate showing/hiding the sublist
                        double contentHeight = expandedProperty.get() ? newAnimatedHeight : 0;
                        if (expandedProperty.get()) {
                            updateClipHeight(newHeight);
                            getListView().setPrefHeight(getListView().getHeight() + newAnimatedHeight + animatedHeight);
                        }
                        // update the animated height
                        animatedHeight = newAnimatedHeight;
                        int opacity = expandedProperty.get() ? 1 : 0;
                        expandAnimation = new Timeline(new KeyFrame(Duration.millis(320), new KeyValue(sublistContainer.minHeightProperty(), contentHeight, Interpolator.EASE_BOTH), new KeyValue(sublistContainer.maxHeightProperty(), contentHeight, Interpolator.EASE_BOTH), new KeyValue(sublistContainer.opacityProperty(), opacity, Interpolator.EASE_BOTH)));
                        if (!expandedProperty.get()) {
                            expandAnimation.setOnFinished((finish) -> {
                                updateClipHeight(newHeight);
                                getListView().setPrefHeight(getListView().getHeight() + newAnimatedHeight);
                                animatedHeight = 0;
                            });
                        }
                        expandAnimation.play();
                    });
                    // animate arrow
                    expandedProperty.addListener((o, oldVal, newVal) -> {
                        if (newVal)
                            new Timeline(new KeyFrame(Duration.millis(160), new KeyValue(dropIcon.rotateProperty(), 90, Interpolator.EASE_BOTH))).play();
                        else
                            new Timeline(new KeyFrame(Duration.millis(160), new KeyValue(dropIcon.rotateProperty(), 0, Interpolator.EASE_BOTH))).play();
                    });
                }
                ((Region) cellContent).setMaxHeight(((Region) cellContent).prefHeight(-1));
                setGraphic(cellContent);
                setText(null);
            }
        }
    }
}
Also used : Pos(javafx.geometry.Pos) ListCell(javafx.scene.control.ListCell) Control(javafx.scene.control.Control) MouseEvent(javafx.scene.input.MouseEvent) StackPane(javafx.scene.layout.StackPane) VBox(javafx.scene.layout.VBox) Insets(javafx.geometry.Insets) KeyValue(javafx.animation.KeyValue) Tooltip(javafx.scene.control.Tooltip) Color(javafx.scene.paint.Color) KeyFrame(javafx.animation.KeyFrame) Label(javafx.scene.control.Label) Status(javafx.animation.Animation.Status) Node(javafx.scene.Node) Timeline(javafx.animation.Timeline) Rectangle(javafx.scene.shape.Rectangle) SVGGlyph(com.jfoenix.svg.SVGGlyph) Platform(javafx.application.Platform) Priority(javafx.scene.layout.Priority) BooleanProperty(javafx.beans.property.BooleanProperty) Duration(javafx.util.Duration) SimpleBooleanProperty(javafx.beans.property.SimpleBooleanProperty) Region(javafx.scene.layout.Region) Interpolator(javafx.animation.Interpolator) Shape(javafx.scene.shape.Shape) Insets(javafx.geometry.Insets) KeyValue(javafx.animation.KeyValue) Node(javafx.scene.Node) Tooltip(javafx.scene.control.Tooltip) Label(javafx.scene.control.Label) Control(javafx.scene.control.Control) Timeline(javafx.animation.Timeline) SVGGlyph(com.jfoenix.svg.SVGGlyph) Region(javafx.scene.layout.Region) KeyFrame(javafx.animation.KeyFrame) VBox(javafx.scene.layout.VBox) StackPane(javafx.scene.layout.StackPane)

Example 17 with Tooltip

use of javafx.scene.control.Tooltip in project JFoenix by jfoenixadmin.

the class NodesListDemo method start.

@Override
public void start(Stage primaryStage) throws Exception {
    try {
        JFXButton ssbutton1 = new JFXButton();
        Label sslabel = new Label("R1");
        sslabel.setStyle("-fx-text-fill:WHITE");
        ssbutton1.setGraphic(sslabel);
        ssbutton1.setButtonType(ButtonType.RAISED);
        ssbutton1.getStyleClass().addAll("animated-option-button", "animated-option-sub-button2");
        JFXButton ssbutton2 = new JFXButton("R2");
        ssbutton2.setTooltip(new Tooltip("Button 2"));
        ssbutton2.setButtonType(ButtonType.RAISED);
        ssbutton2.getStyleClass().addAll("animated-option-button", "animated-option-sub-button2");
        JFXButton ssbutton3 = new JFXButton("R3");
        ssbutton3.setButtonType(ButtonType.RAISED);
        ssbutton3.getStyleClass().addAll("animated-option-button", "animated-option-sub-button2");
        JFXNodesList nodesList3 = new JFXNodesList();
        nodesList3.setSpacing(10);
        // init nodes
        nodesList3.addAnimatedNode(ssbutton1, (expanded) -> {
            return new ArrayList<KeyValue>() {

                {
                    add(new KeyValue(sslabel.rotateProperty(), expanded ? 360 : 0, Interpolator.EASE_BOTH));
                }
            };
        });
        nodesList3.addAnimatedNode(ssbutton2);
        nodesList3.addAnimatedNode(ssbutton3);
        JFXButton sbutton1 = new JFXButton();
        Label slabel = new Label("B1");
        slabel.setStyle("-fx-text-fill:WHITE");
        sbutton1.setGraphic(slabel);
        sbutton1.setButtonType(ButtonType.RAISED);
        sbutton1.getStyleClass().addAll("animated-option-button", "animated-option-sub-button");
        JFXButton sbutton2 = new JFXButton("B2");
        sbutton2.setTooltip(new Tooltip("Button 2"));
        sbutton2.setButtonType(ButtonType.RAISED);
        sbutton2.getStyleClass().addAll("animated-option-button", "animated-option-sub-button");
        JFXButton sbutton3 = new JFXButton("B3");
        sbutton3.setButtonType(ButtonType.RAISED);
        sbutton3.getStyleClass().addAll("animated-option-button", "animated-option-sub-button");
        JFXNodesList nodesList2 = new JFXNodesList();
        nodesList2.setSpacing(10);
        // init nodes
        nodesList2.addAnimatedNode(sbutton1, (expanded) -> {
            return new ArrayList<KeyValue>() {

                {
                    add(new KeyValue(slabel.rotateProperty(), expanded ? 360 : 0, Interpolator.EASE_BOTH));
                }
            };
        });
        nodesList2.addAnimatedNode(nodesList3);
        nodesList2.addAnimatedNode(sbutton2);
        nodesList2.addAnimatedNode(sbutton3);
        nodesList2.setRotate(90);
        JFXButton button1 = new JFXButton();
        Label label = new Label("G1");
        button1.setGraphic(label);
        label.setStyle("-fx-text-fill:WHITE");
        button1.setButtonType(ButtonType.RAISED);
        button1.getStyleClass().add("animated-option-button");
        JFXButton button2 = new JFXButton("G2");
        button2.setTooltip(new Tooltip("Button 2"));
        button2.setButtonType(ButtonType.RAISED);
        button2.getStyleClass().add("animated-option-button");
        JFXButton button3 = new JFXButton("G3");
        button3.setButtonType(ButtonType.RAISED);
        button3.getStyleClass().add("animated-option-button");
        JFXNodesList nodesList = new JFXNodesList();
        nodesList.setSpacing(10);
        nodesList.addAnimatedNode(button1, (expanded) -> {
            return new ArrayList<KeyValue>() {

                {
                    add(new KeyValue(label.rotateProperty(), expanded ? 360 : 0, Interpolator.EASE_BOTH));
                }
            };
        });
        nodesList.addAnimatedNode(button2);
        nodesList.addAnimatedNode(nodesList2);
        nodesList.addAnimatedNode(button3);
        nodesList.setRotate(180);
        StackPane main = new StackPane();
        main.setPadding(new Insets(10));
        JFXButton e = new JFXButton("Click Me");
        e.setTranslateY(-50);
        e.setTranslateX(-100);
        main.getChildren().add(e);
        main.getChildren().add(nodesList);
        Scene scene = new Scene(main, 600, 600);
        scene.getStylesheets().add(NodesListDemo.class.getResource("/resources/css/jfoenix-components.css").toExternalForm());
        primaryStage.setScene(scene);
        primaryStage.show();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
Also used : KeyValue(javafx.animation.KeyValue) Insets(javafx.geometry.Insets) Tooltip(javafx.scene.control.Tooltip) Label(javafx.scene.control.Label) ArrayList(java.util.ArrayList) JFXButton(com.jfoenix.controls.JFXButton) JFXNodesList(com.jfoenix.controls.JFXNodesList) Scene(javafx.scene.Scene) StackPane(javafx.scene.layout.StackPane)

Example 18 with Tooltip

use of javafx.scene.control.Tooltip in project JFoenix by jfoenixadmin.

the class ValidatorBase method onEval.

/**
	 *	this method will update the source control after evaluating the validation condition 
	 */
protected void onEval() {
    Node control = getSrcControl();
    if (hasErrors.get()) {
        /*
			 * TODO
			 * NOTE: NEED TO FIX adding error style class to text area 
			 * is causing the caret to disappear
			 */
        if (!control.getStyleClass().contains(errorStyleClass.get()))
            control.getStyleClass().add(errorStyleClass.get());
        control.pseudoClassStateChanged(PSEUDO_CLASS_ERROR, true);
        if (control instanceof Control) {
            Tooltip controlTooltip = ((Control) control).getTooltip();
            if (controlTooltip != null && !controlTooltip.getStyleClass().contains("error-tooltip")) {
                tooltip = ((Control) control).getTooltip();
            }
            Tooltip errorTooltip = new Tooltip();
            errorTooltip.getStyleClass().add("error-tooltip");
            errorTooltip.setText(getMessage());
            ((Control) control).setTooltip(errorTooltip);
        }
    } else {
        if (control instanceof Control) {
            Tooltip controlTooltip = ((Control) control).getTooltip();
            if ((controlTooltip != null && controlTooltip.getStyleClass().contains("error-tooltip")) || (controlTooltip == null && tooltip != null)) {
                ((Control) control).setTooltip(tooltip);
            }
            tooltip = null;
        }
        control.pseudoClassStateChanged(PSEUDO_CLASS_ERROR, false);
        control.getStyleClass().remove(errorStyleClass.get());
    }
}
Also used : Control(javafx.scene.control.Control) Node(javafx.scene.Node) Tooltip(javafx.scene.control.Tooltip)

Example 19 with Tooltip

use of javafx.scene.control.Tooltip in project jabref by JabRef.

the class ViewModelListCellFactory method call.

@Override
public ListCell<T> call(ListView<T> param) {
    return new ListCell<T>() {

        @Override
        protected void updateItem(T item, boolean empty) {
            super.updateItem(item, empty);
            T viewModel = getItem();
            if (empty || viewModel == null) {
                setText(null);
                setGraphic(null);
                setOnMouseClicked(null);
                setTooltip(null);
            } else {
                if (toText != null) {
                    setText(toText.call(viewModel));
                }
                if (toGraphic != null) {
                    setGraphic(toGraphic.call(viewModel));
                }
                if (toOnMouseClickedEvent != null) {
                    setOnMouseClicked(toOnMouseClickedEvent.call(viewModel));
                }
                if (toStyleClass != null) {
                    getStyleClass().setAll(toStyleClass.call(viewModel));
                }
                if (toTooltip != null) {
                    String tooltipText = toTooltip.call(viewModel);
                    if (StringUtil.isNotBlank(tooltipText)) {
                        setTooltip(new Tooltip(tooltipText));
                    }
                }
            }
            getListView().refresh();
        }
    };
}
Also used : ListCell(javafx.scene.control.ListCell) Tooltip(javafx.scene.control.Tooltip)

Example 20 with Tooltip

use of javafx.scene.control.Tooltip in project intellij-plugins by StepicOrg.

the class AuthDialog method makeExitButton.

@NotNull
private Button makeExitButton() {
    Button button = createButtonWithImage(AllIcons.Actions.Exit);
    button.setTooltip(new Tooltip("Login to another account"));
    button.setOnAction(event -> Platform.runLater(() -> {
        initCookieManager(true);
        engine.load(url);
    }));
    return button;
}
Also used : Button(javafx.scene.control.Button) Tooltip(javafx.scene.control.Tooltip) NotNull(org.jetbrains.annotations.NotNull)

Aggregations

Tooltip (javafx.scene.control.Tooltip)34 Button (javafx.scene.control.Button)12 Label (javafx.scene.control.Label)9 Node (javafx.scene.Node)5 IOException (java.io.IOException)4 Account (jgnash.engine.Account)4 DockTab (com.kyj.fx.voeditor.visual.component.dock.tab.DockTab)3 GargoyleException (com.kyj.fx.voeditor.visual.exceptions.GargoyleException)3 Contract (io.bitsquare.trade.Contract)3 BigDecimal (java.math.BigDecimal)3 Insets (javafx.geometry.Insets)3 Scene (javafx.scene.Scene)3 PieChart (javafx.scene.chart.PieChart)3 TextField (javafx.scene.control.TextField)3 NotNull (org.jetbrains.annotations.NotNull)3 BusyAnimation (io.bitsquare.gui.components.BusyAnimation)2 TextFieldWithCopyIcon (io.bitsquare.gui.components.TextFieldWithCopyIcon)2 PaymentAccountContractData (io.bitsquare.payment.PaymentAccountContractData)2 Offer (io.bitsquare.trade.offer.Offer)2 NumberFormat (java.text.NumberFormat)2