@Override public List<CssMetaData<? extends Styleable, ?>> getControlCssMetaData() { return getClassCssMetaData(); } public static List<CssMetaData<? extends Styleable, ?>> getClassCssMetaData() {
public DisplayMessageOverlayLabel(String text, TextSizingUtility sizeing) { this.text.setValue(text); this.sizeing = sizeing; getStylesheets().add(this.getClass().getResource("DisplayMessageOverlayLabel.css").toExternalForm()); getStyleClass().addAll("display-message"); }
public DisplayMessageOverlayLabelSkin(DisplayMessageOverlayLabel control, TextSizingUtility sizing) { super(control); textLength.set(sizing.calculate(control.getText(), control.getFont()).getWidth()); control.fontProperty().addListener((observable, oldFont, newFont) -> textLength.set(sizing.calculate(control.getText(), newFont).getWidth())); control.textProperty().addListener((observable, oldText, newText) -> textLength.set(sizing.calculate(newText, control.getFont()).getWidth())); InputStream is = getClass().getResourceAsStream("waxButton-middle.png"); waxBtnMiddle = new Image(is); StackPane middleSection = new StackPane(); HBox waxButon = new HBox(); Label label = new Label(control.getText()); label.getStyleClass().add("display-message-label"); if (control.isLinkText()) { label.getStyleClass().add("display-message-link"); control.linkTextProperty().addListener((observable, oldFlag, newFlag) -> { if (newFlag && oldFlag != newFlag) { label.getStyleClass().add("display-message-link"); label.textProperty().bind(control.textProperty()); int nbSegments = (int)Math.ceil(textLength.getValue()/middleSectionWidth); for (int i=0; i<nbSegments; i++) {
private EventHandler<MouseEvent> getDisplaMessageMouseEnterFocusEventHandler(DecoratedText text, String message) { return event -> { final Group viewContainer = (Group) ((StackPane)text.getScene().getRoot()).getChildren().get(1); DisplayMessageOverlayLabel label = new DisplayMessageOverlayLabel(message, sizeing); double y = event.getSceneY(); label.setLayoutY(y); label.setLayoutX(350); // todo: andi 3/8/15: Use some kind of constant. Also consider that the width of the control board may be scalable at one time in the future viewContainer.getChildren().add(label); // Add it to the scene and not the scroll pane and adjust the location }; } private EventHandler<MouseEvent> getDisplayMessageMouseExitFocusEventHandler(DecoratedText text){
DisplayMessageOverlayLabel label = new DisplayMessageOverlayLabel(translatedMessage, sizeing); if (message instanceof DisplayTemplateMessage) { label.setLinkText(true); EventHandler<MouseEvent> openDialogEvenHandler = createEventHandlerFromRunnable(eventHandlerFactory.getViewChangeActionRunnable(((DisplayTemplateMessage)message).getDialogTemplate())); label.setOnMouseReleased(openDialogEvenHandler); } else if (message instanceof DisplayStateMessage) { label.setLinkText(true); EventHandler<MouseEvent> openDialogEvenHandler = createEventHandlerFromRunnable(eventHandlerFactory.getViewChangeActionRunnable(((DisplayStateMessage)message).getState())); label.setOnMouseReleased(openDialogEvenHandler);