private void addState(State<?,?> state, HBox line, Color color, int stateIndex, String stateDescription) { final Rectangle rectangle = new Rectangle(WIDTH, WIDTH, color); rectangle.setArcHeight(WIDTH); rectangle.setArcWidth(WIDTH); rectangle.setUserData(state); Label text = new Label(computeStateLabel(stateIndex)); text.setTextOverrun(OverrunStyle.ELLIPSIS); text.setAlignment(Pos.CENTER); text.setMouseTransparent(true); text.setTextFill(Color.WHITE); text.setFont(STATE_FONT); text.setMaxWidth(WIDTH); final Tooltip tooltip = new Tooltip(stateDescription); Tooltip.install(rectangle, tooltip); StackPane layout = new StackPane(); StackPane.setMargin(rectangle, MARGIN_INSETS); layout.getChildren().addAll(rectangle, text); line.getChildren().add(layout); }
private Pane paneFor(Component component) { if (panes.containsKey(component)) { return panes.get(component); } BorderPane pane = new BorderPane(component.getView()); ActionList.registerSupplier(pane, () -> actionsForComponent(component)); pane.getStyleClass().add("layout-stack"); EditableLabel label = new EditableLabel(component.titleProperty()); label.getStyleClass().add("layout-label"); ((Label) label.lookup(".label")).setTextOverrun(OverrunStyle.LEADING_ELLIPSIS); BorderPane.setAlignment(label, Pos.TOP_LEFT); pane.setBottom(label); panes.put(component, pane); return pane; }
@Override protected void initGraphics() { super.initGraphics(); final ZonedDateTime TIME = tile.getTime(); titleText = new Text(DAY_FORMATTER.format(TIME)); titleText.setFill(tile.getTitleColor()); description = new Label(Integer.toString(TIME.getDayOfMonth())); description.setAlignment(Pos.CENTER); description.setTextAlignment(TextAlignment.CENTER); description.setWrapText(true); description.setTextOverrun(OverrunStyle.WORD_ELLIPSIS); description.setTextFill(tile.getTextColor()); description.setPrefSize(PREFERRED_WIDTH * 0.9, PREFERRED_HEIGHT * 0.72); description.setFont(Fonts.latoLight(PREFERRED_HEIGHT * 0.65)); text = new Text(MONTH_YEAR_FORMATTER.format(TIME)); text.setFill(tile.getTextColor()); getPane().getChildren().addAll(titleText, text, description); }
@Override protected void initGraphics() { super.initGraphics(); titleText = new Text(); titleText.setFill(tile.getTitleColor()); Helper.enableNode(titleText, !tile.getTitle().isEmpty()); description = new Label(tile.getDescription()); description.setAlignment(tile.getDescriptionAlignment()); description.setTextAlignment(TextAlignment.RIGHT); description.setWrapText(true); description.setTextOverrun(OverrunStyle.WORD_ELLIPSIS); description.setTextFill(tile.getTextColor()); description.setPrefSize(PREFERRED_WIDTH * 0.9, PREFERRED_HEIGHT * 0.795); Helper.enableNode(description, tile.isTextVisible()); text = new Text(tile.getText()); text.setFill(tile.getUnitColor()); Helper.enableNode(text, tile.isTextVisible()); getPane().getChildren().addAll(titleText, text, description); }
@Override protected void initGraphics() { super.initGraphics(); titleText = new Text(); titleText.setFill(tile.getTitleColor()); Helper.enableNode(titleText, !tile.getTitle().isEmpty()); description = new Label(tile.getDescription()); description.setAlignment(Pos.CENTER); description.setTextAlignment(TextAlignment.CENTER); description.setWrapText(true); description.setTextOverrun(OverrunStyle.WORD_ELLIPSIS); description.setTextFill(tile.getTextColor()); description.setPrefSize(PREFERRED_WIDTH * 0.9, PREFERRED_HEIGHT * 0.795); Helper.enableNode(description, tile.isTextVisible()); text = new Text(tile.getText()); text.setFill(tile.getUnitColor()); Helper.enableNode(text, tile.isTextVisible()); getPane().getChildren().addAll(titleText, text, description); }
public static String toValue(OverrunStyle s) { switch(s) { case CENTER_ELLIPSIS: return "center-ellipsis"; case CENTER_WORD_ELLIPSIS: return "center-word-ellipsis"; case CLIP: return "clip"; case ELLIPSIS: return "ellipsis"; case LEADING_ELLIPSIS: return "leading-ellipsis"; case LEADING_WORD_ELLIPSIS: return "leading-word-ellipsis"; case WORD_ELLIPSIS: return "word-ellipsis"; } throw new Error("?" + s); }
private Pane createTraceWidget(ITraceExtractor<Step<?>, State<?,?>, TracedObject<?>, Dimension<?>, Value<?>> extractor, String label, ReadOnlyDoubleProperty width) { final Pane pane = new Pane(); pane.setBackground(TRANSPARENT_BACKGROUND); final Rectangle rectangle = new Rectangle(0, 0, 0, 12); rectangle.setFill(Color.LIGHTGRAY); rectangle.widthProperty().bind(width.subtract(10)); rectangle.setArcHeight(12); rectangle.setArcWidth(12); Label text = new Label(label); text.setTextOverrun(OverrunStyle.ELLIPSIS); text.setAlignment(Pos.CENTER); text.setMouseTransparent(true); text.setTextFill(Color.WHITE); text.setFont(FONT); text.setMaxWidth(0); text.maxWidthProperty().bind(rectangle.widthProperty()); StackPane layout = new StackPane(); layout.getChildren().addAll(rectangle, text); pane.getChildren().add(layout); layout.setTranslateY(13); layout.setTranslateX(5); pane.setPrefHeight(25); pane.setMinHeight(25); pane.setMaxHeight(25); final Shape arrow1 = createCursor(); final Shape arrow2 = createCursor(); arrow1.setTranslateX(5); arrow1.setTranslateY(4); arrow2.translateXProperty().bind(rectangle.widthProperty().add(5)); arrow2.setTranslateY(4); pane.getChildren().add(arrow1); pane.getChildren().add(arrow2); return pane; }
@FXML private void btnOverRunAction() { overrunStyleDeque.add(overrunStyle); // Recycle the last overrunStyle. overrunStyle = overrunStyleDeque.pop(); // propertyList.forEach(prop -> prop.setValue(overrunStyle)); if(overrunStyle == OverrunStyle.ELLIPSIS) btnOverRun.setText("...<<"); else if(overrunStyle == OverrunStyle.CENTER_ELLIPSIS) btnOverRun.setText(">>..."); else btnOverRun.setText(">...<"); }
/** * Creates an empty tile. The content and size must be set with {@link #setContent(T)} and * {@link #setSize(TileSize)}. */ protected Tile() { try { FXMLLoader loader = new FXMLLoader(Tile.class.getResource("Tile.fxml")); loader.setRoot(this); loader.load(); } catch (IOException e) { throw new RuntimeException("Could not load the widget tile FXML", e); } getStyleClass().addAll("tile", "card"); PropertyUtils.bindWithConverter(idProperty(), contentProperty(), w -> "tile[" + w + "]"); EditableLabel editableLabel = (EditableLabel) lookup("#titleLabel"); editableLabel.textProperty().bindBidirectional(contentTitle); ((Label) lookup("#titleLabel").lookup(".label")).setTextOverrun(OverrunStyle.LEADING_ELLIPSIS); contentView.addListener((__, oldContent, newContent) -> { getContentPane() .map(Pane::getChildren) .ifPresent(c -> { if (newContent == null) { c.clear(); } else { c.setAll(newContent); } }); }); contentTitle.addListener((__, prev, cur) -> editableLabel.setText(cur)); }
public TimeScaleViewSkin(T view) { super(view); LocalTime time = LocalTime.of(1, 0); for (int i = 1; i < 24; i++) { Label label = new Label(time.format(formatter)); label.setManaged(false); label.setMaxWidth(Double.MAX_VALUE); label.setAlignment(Pos.CENTER_RIGHT); label.getStyleClass().add("time-label"); //$NON-NLS-1$ label.setTextOverrun(OverrunStyle.CLIP); labels.add(label); getChildren().add(label); time = time.plusHours(1); } currentTimeLabel = new Label(); currentTimeLabel.getStyleClass().add("current-time-label"); //$NON-NLS-1$ currentTimeLabel.setManaged(false); currentTimeLabel.setMaxWidth(Double.MAX_VALUE); currentTimeLabel.setAlignment(Pos.CENTER_RIGHT); currentTimeLabel.setOpacity(0); currentTimeLabel.setTextOverrun(OverrunStyle.CLIP); currentTimeLabel.visibleProperty().bind(view.enableCurrentTimeMarkerProperty()); getChildren().add(currentTimeLabel); updateCurrentTimeMarkerVisibility(); view.showCurrentTimeMarkerProperty().addListener( it -> updateCurrentTimeMarkerVisibility()); setupCurrentTimeMarkerSupport(); updateShowMarkers(); }
protected Node createLeftHandSide() { DayPage dayPage = getSkinnable(); // today label todayLabel = new Label(); todayLabel.getStyleClass().add("today-label"); //$NON-NLS-1$ todayLabel.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE); todayLabel.setAlignment(Pos.TOP_LEFT); todayLabel.setTextOverrun(OverrunStyle.CLIP); todayLabel.setMinWidth(Region.USE_PREF_SIZE); HBox.setHgrow(todayLabel, Priority.ALWAYS); // year month view yearMonthView = dayPage.getYearMonthView(); yearMonthView.setSelectionMode(SelectionMode.SINGLE); yearMonthView.setShowMonth(false); yearMonthView.setShowYear(false); yearMonthView.setShowTodayButton(false); HBox.setHgrow(yearMonthView, Priority.NEVER); getSkinnable().bind(yearMonthView, true); HBox header = new HBox(10); header.setFillHeight(true); header.getChildren().addAll(todayLabel, yearMonthView); header.getStyleClass().add("header"); AgendaView agendaView = dayPage.getAgendaView(); getSkinnable().bind(agendaView, true); HBox.setMargin(agendaView, new Insets(10, 0, 0, 0)); BorderPane leftHandSide = new BorderPane(); leftHandSide.getStyleClass().add("left-side"); leftHandSide.setTop(header); leftHandSide.setCenter(agendaView); HBox.setHgrow(leftHandSide, Priority.ALWAYS); return leftHandSide; }
protected void addTextAlignment(List<Change<Labeled>> list, final Utils.LayoutSize layout, final boolean wrapped, final String text) { for (final OverrunStyle overrun : OverrunStyle.values()) { list.add(new Change<Labeled>(overrun.toString()) { public void apply(Labeled labeled) { layout.apply(labeled); labeled.setText(text); labeled.setTextOverrun(overrun); labeled.setWrapText(wrapped); if (labeled.getTextOverrun() != overrun) { reportGetterFailure("labeled.overrun()"); } } }); } }
@ScreenshotCheck @Test(timeout=300000) public void textOverrun() throws Throwable { for (OverrunStyle display : OverrunStyle.values()) { textOverrun.as(Selectable.class).selector().select(display); show.mouse().move(); checkScreenshot("Tooltip-text-overrun-" + display, testPane); } throwScreenshotError(); }
private void setColumnCellFactories() { columnMsgText.setCellValueFactory(new PropertyValueFactory<PacketTypeToMatch, String>("messageText")); columnMsgOutputMethod.setCellValueFactory(new PropertyValueFactory<PacketTypeToMatch, String>("messageOutputMethod")); columnPacketDirection.setCellValueFactory(new PropertyValueFactory<PacketTypeToMatch, String>("packetDirection")); columnIP.setCellValueFactory(new PropertyValueFactory<PacketTypeToMatch, String>("ipAddress")); columnProtocol.setCellValueFactory(new PropertyValueFactory<>("protocol")); columnSrcPort.setCellValueFactory(new PropertyValueFactory<PacketTypeToMatch, String>("srcPort")); columnDstPort.setCellValueFactory(new PropertyValueFactory<PacketTypeToMatch, String>("dstPort")); columnPacketSize.setCellValueFactory(new PropertyValueFactory<PacketTypeToMatch, String>("packetSize")); columnIP.setCellFactory(new Callback<TableColumn<PacketTypeToMatch, String>, TableCell<PacketTypeToMatch, String>>() { @Override public TableCell<PacketTypeToMatch, String> call(TableColumn<PacketTypeToMatch, String> param) { return new TableCell<PacketTypeToMatch, String>() { @Override protected void updateItem(String item, boolean empty) { super.updateItem(item, empty); setText(item); setTextOverrun(OverrunStyle.CENTER_ELLIPSIS); } }; } }); }
protected void setLabel(ITask task, Rectangle backgroundRectangle) { // Вешаем лэйбл с наименованием задачи Label taskLabel = new Label(task.getName()); taskLabel.setTextOverrun(OverrunStyle.CLIP); taskLabel.setTextFill(Color.WHITE); taskLabel.setLayoutY(6); taskLabel.prefWidthProperty().bind(backgroundRectangle.widthProperty()); taskLabel.onMousePressedProperty().bind(backgroundRectangle.onMousePressedProperty()); taskLabel.onMouseDraggedProperty().bind(backgroundRectangle.onMouseDraggedProperty()); this.getChildren().add(taskLabel); }
/** * Этот метод создает лейбл с заданными параметрами * * @param multiplier Множитель для ширины "столбца" * @param dateFormatter Формат даты * @return Лейбл **/ private Label createDateLabel(int multiplier, String dateFormatter) { Label dateLabel = new Label(dateFormatter); //фигачим лейбл с датой на борту dateLabel.setTextOverrun(OverrunStyle.CLIP); dateLabel.setPrefWidth(controller.getZoomMultiplier() * multiplier); dateLabel.setMinHeight(24); dateLabel.getStylesheets().add(this.getClass().getResource("/css/header.css").toExternalForm()); // делаем красиво dateLabel.setAlignment(Pos.CENTER); return dateLabel; }
private Pane createTraceWidget(ITraceExtractor extractor, String label, ReadOnlyDoubleProperty width) { final Pane pane = new Pane(); pane.setBackground(TRANSPARENT_BACKGROUND); final Rectangle rectangle = new Rectangle(0, 0, 0, 12); rectangle.setFill(Color.LIGHTGRAY); rectangle.widthProperty().bind(width.subtract(10)); rectangle.setArcHeight(12); rectangle.setArcWidth(12); Label text = new Label(label); text.setTextOverrun(OverrunStyle.ELLIPSIS); text.setAlignment(Pos.CENTER); text.setMouseTransparent(true); text.setTextFill(Color.WHITE); text.setFont(FONT); text.setMaxWidth(0); text.maxWidthProperty().bind(rectangle.widthProperty()); StackPane layout = new StackPane(); layout.getChildren().addAll(rectangle, text); pane.getChildren().add(layout); layout.setTranslateY(13); layout.setTranslateX(5); pane.setPrefHeight(25); pane.setMinHeight(25); pane.setMaxHeight(25); final Group group1 = new Group(); final Label label1 = new Label(); final Shape arrow1 = createCursor(); final Group group2 = new Group(); final Shape arrow2 = createCursor(); arrow1.setTranslateX(5); arrow1.setTranslateY(4); arrow2.translateXProperty().bind(rectangle.widthProperty().add(5)); arrow2.setTranslateY(4); pane.getChildren().add(arrow1); pane.getChildren().add(arrow2); return pane; }
public BaselineLeftCenterOverrunTableCell(String ellipsisString) { super(); setTextOverrun(OverrunStyle.CENTER_ELLIPSIS); if (ellipsisString != null && !"".equals(ellipsisString)) { setEllipsisString(ellipsisString); } }
public CenteredOverrunTableCell(String ellipsisString) { super(); setTextOverrun(OverrunStyle.CENTER_WORD_ELLIPSIS); if (ellipsisString != null) { setEllipsisString(ellipsisString); } }
private Node prepareTimeGrahLabelsContents(Collection<StateRectangle> stateRectangles, TimeRange windowRange) { double minX = getWidget().timestampToPaneXPos(windowRange.getStartTime()); final String ellipsisStr = DebugOptions.ELLIPSIS_STRING; final double ellipsisWidth = getWidget().getDebugOptions().getEllipsisWidth(); final Font textFont = getWidget().getDebugOptions().stateLabelFont.get(); final OverrunStyle overrunStyle = OverrunStyle.ELLIPSIS; final Color textColor = Color.WHITE; /* Requires a ~2 pixels adjustment to be centered on the states */ final double yOffset = TimeGraphWidget.ENTRY_HEIGHT / 2.0 + 2.0; Collection<Node> texts = stateRectangles.stream() /* Only try to annotate rectangles that are large enough */ .filter(stateRect -> stateRect.getWidth() > ellipsisWidth) .filter(stateRect -> stateRect.getStateInterval().getLabel() != null) .map(stateRect -> { String labelText = requireNonNull(stateRect.getStateInterval().getLabel()); /* A small offset looks better here */ double textX = Math.max(minX, stateRect.getX()) + 4.0; double textY = stateRect.getY() + yOffset; double rectEndX = stateRect.getX() + stateRect.getWidth(); double minWidth = rectEndX - textX; String ellipsedText = JfxUtils.computeClippedText(textFont, labelText, minWidth, overrunStyle, ellipsisStr); if (ellipsedText.equals(ellipsisStr)) { return null; } Text text = new Text(textX, textY, ellipsedText); text.setFont(textFont); text.setFill(textColor); return text; }) .filter(Objects::nonNull) .collect(Collectors.toList()); return new Group(texts); }
public VertexView(final int stateIndex, StateVertex vertex) { circle = new Circle(RADIUS); circle.setFill(Color.SLATEBLUE); this.stateIndex = stateIndex; final String s = vertex.getTooltip(); final Tooltip t = new Tooltip(s); Tooltip.install(this, t); vertex.setOnTooltipUpdateCommand(text -> Platform.runLater(() -> t.setText(text))); label = new Label(computeStateLabel(this.stateIndex)); label.setTextOverrun(OverrunStyle.ELLIPSIS); label.setAlignment(Pos.CENTER); label.setMouseTransparent(true); label.setTextFill(Color.WHITE); label.setFont(STATE_INDEX_FONT); label.setMaxWidth(RADIUS * 2); StackPane layout = new StackPane(); layout.getChildren().addAll(circle, label); layout.setTranslateX(-RADIUS); layout.setTranslateY(-RADIUS); getChildren().add(layout); setOnMousePressed(event -> { circle.setCursor(Cursor.MOVE); mouseX = event.getX(); mouseY = event.getY(); event.consume(); }); setOnMouseReleased(event -> { setCursor(Cursor.DEFAULT); }); setOnMouseDragged(event -> { double deltaX = event.getX() - mouseX; double deltaY = event.getY() - mouseY; setTranslateX(getTranslateX() + deltaX); setTranslateY(getTranslateY() + deltaY); event.consume(); }); setOnMouseEntered(event -> circle.setEffect(GLOW)); setOnMouseExited(event -> circle.setEffect(null)); }
public MainDisplay() { overrunStyleDeque.add(OverrunStyle.LEADING_ELLIPSIS); overrunStyleDeque.add(OverrunStyle.CENTER_ELLIPSIS); }
public FileTableCellFactory(Callback<Pair<ObservableList<Integer>, Boolean>, Void> callback, List<ObjectProperty<OverrunStyle>> list) { this.callback = callback; this.propertyList = list; }
public StepPane(RaxDrawingController controller, Step step) { this.controller = controller; this.step = step; translateXProperty().addListener((oba, o, n) -> { centerX.set(n.doubleValue() + (this.getPrefWidth() / 2)); }); translateYProperty().addListener((oba, o, n) -> { centerY.set(n.doubleValue() + (this.getPrefHeight() / 2)); }); setMouseTransparent(false); setPickOnBounds(true); setBackground(new Background(new BackgroundFill(Color.web("31AA6B"), CornerRadii.EMPTY, Insets.EMPTY))); // BorderStroke borderStroke = new BorderStroke(Color.web("29AA6B"), // Color.web("29AA6B"), Color.web("29AA6B"), Color.web("29AA6B"), // BorderStrokeStyle.DASHED, BorderStrokeStyle.DASHED, // BorderStrokeStyle.DASHED, BorderStrokeStyle.DASHED, // new CornerRadii(10d), new BorderWidths(5d), new Insets(10d)); Rectangle rectangle = new Rectangle(); rectangle.setStrokeWidth(1d); rectangle.setStroke(Color.web("29AA6B")); setPrefSize(Double.parseDouble(this.step.getRectangleW()), Double.parseDouble(this.step.getRectangleH())); setMaxSize(Double.parseDouble(this.step.getRectangleW()), Double.parseDouble(this.step.getRectangleH())); // rectangle.setBorder(new Border(borderStroke)); getChildren().add(rectangle); label = new Label(); /* set Text */ if (ViewType.ID == controller.getViewType()) onChangeViewTypeName(); else if (ViewType.DESC == controller.getViewType()) onChangeViewTypeDesc(); label.setTextOverrun(OverrunStyle.LEADING_WORD_ELLIPSIS); label.setWrapText(true); getChildren().add(label); // AnchorPane anchorPane = new AnchorPane(); // anchorPane.setMouseTransparent(true); // anchorPane.setPickOnBounds(false); // getChildren().add(anchorPane); // Label lblDesc = new Label(this.step.getDescription()); // lblDesc.setFont(Font.font(9d)); // lblDesc.setMouseTransparent(true); // lblDesc.setPickOnBounds(false); // lblDesc.setBackground(new Background(new // BackgroundFill(Color.web("31AA6B"), CornerRadii.EMPTY, // Insets.EMPTY))); // anchorPane.getChildren().add(lblDesc); // // Platform.runLater(() -> { // AnchorPane.setRightAnchor(lblDesc, lblDesc.getLayoutX() - // lblDesc.getWidth() - 50d); // }); setTranslateX(Double.parseDouble(this.step.getRectangleX())); setTranslateY(Double.parseDouble(this.step.getRectangleY())); // setLayoutX(Double.parseDouble(this.step.getRectangleX())); // setLayoutY(Double.parseDouble(this.step.getRectangleY())); }
/** creates a label */ public static Label label(Object ... attrs) { Label n = new Label(); for(Object a: attrs) { if(a == null) { // ignore } else if(a instanceof CssStyle) { n.getStyleClass().add(((CssStyle)a).getName()); } else if(a instanceof CssID) { n.setId(((CssID)a).getID()); } else if(a instanceof FxCtl) { switch((FxCtl)a) { case BOLD: n.getStyleClass().add(CssTools.BOLD.getName()); break; case FOCUSABLE: n.setFocusTraversable(true); break; case FORCE_MAX_WIDTH: n.setMaxWidth(Double.MAX_VALUE); break; case FORCE_MIN_HEIGHT: n.setMinHeight(Control.USE_PREF_SIZE); break; case FORCE_MIN_WIDTH: n.setMinWidth(Control.USE_PREF_SIZE); break; case NON_FOCUSABLE: n.setFocusTraversable(false); break; case WRAP_TEXT: n.setWrapText(true); break; default: throw new Error("?" + a); } } else if(a instanceof Insets) { n.setPadding((Insets)a); } else if(a instanceof OverrunStyle) { n.setTextOverrun((OverrunStyle)a); } else if(a instanceof Pos) { n.setAlignment((Pos)a); } else if(a instanceof String) { n.setText((String)a); } else if(a instanceof TextAlignment) { n.setTextAlignment((TextAlignment)a); } else if(a instanceof Color) { n.setTextFill((Color)a); } else { throw new Error("?" + a); } } return n; }
/** creates a label */ public static Label label(Object ... attrs) { Label n = new Label(); for(Object a: attrs) { if(a == null) { // ignore } else if(a instanceof CssStyle) { n.getStyleClass().add(((CssStyle)a).getName()); } else if(a instanceof CssID) { n.setId(((CssID)a).getID()); } else if(a instanceof FxCtl) { switch((FxCtl)a) { case BOLD: n.getStyleClass().add(CssTools.BOLD.getName()); break; case FOCUSABLE: n.setFocusTraversable(true); break; case FORCE_MIN_HEIGHT: n.setMinHeight(Control.USE_PREF_SIZE); break; case FORCE_MIN_WIDTH: n.setMinWidth(Control.USE_PREF_SIZE); break; case NON_FOCUSABLE: n.setFocusTraversable(false); break; case WRAP_TEXT: n.setWrapText(true); break; default: throw new Error("?" + a); } } else if(a instanceof Insets) { n.setPadding((Insets)a); } else if(a instanceof OverrunStyle) { n.setTextOverrun((OverrunStyle)a); } else if(a instanceof Pos) { n.setAlignment((Pos)a); } else if(a instanceof String) { n.setText((String)a); } else if(a instanceof TextAlignment) { n.setTextAlignment((TextAlignment)a); } else if(a instanceof Color) { n.setTextFill((Color)a); } else { throw new Error("?" + a); } } return n; }
/** * Instantiates a new FileNameCell Cell. Sets the default values. */ public FileNameCell() { setMaxHeight(getHeight()); setGraphicTextGap(6.0); setTextOverrun(OverrunStyle.LEADING_ELLIPSIS); }
public InfoDisplay() { icon.setId("non-clickable-icon"); icon.visibleProperty().bind(visibleProperty()); GridPane.setValignment(icon, VPos.TOP); GridPane.setMargin(icon, new Insets(-2, 0, 0, 0)); GridPane.setRowSpan(icon, 2); label = new AutoTooltipLabel(); label.textProperty().bind(text); label.setTextOverrun(OverrunStyle.WORD_ELLIPSIS); // width is set a frame later so we hide it first label.setVisible(false); link = new Hyperlink(Res.get("shared.readMore")); link.setPadding(new Insets(0, 0, 0, -2)); // We need that to know if we have a wrapping or not. // Did not find a way to get that from the API. Label testLabel = new AutoTooltipLabel(); testLabel.textProperty().bind(text); textFlow = new TextFlow(); textFlow.visibleProperty().bind(visibleProperty()); textFlow.getChildren().addAll(testLabel); testLabel.widthProperty().addListener((ov, o, n) -> { useReadMore = (double) n > textFlow.getWidth(); link.setText(Res.get(useReadMore ? "shared.readMore" : "shared.openHelp")); UserThread.execute(() -> textFlow.getChildren().setAll(label, link)); }); // update the width when the window gets resized ChangeListener<Number> listener = (ov2, oldValue2, windowWidth) -> { if (label.prefWidthProperty().isBound()) label.prefWidthProperty().unbind(); label.setPrefWidth((double) windowWidth - localToScene(0, 0).getX() - 35); }; // when clicking "Read more..." we expand and change the link to the Help link.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent actionEvent) { if (useReadMore) { label.setWrapText(true); link.setText(Res.get("shared.openHelp")); getScene().getWindow().widthProperty().removeListener(listener); if (label.prefWidthProperty().isBound()) label.prefWidthProperty().unbind(); label.prefWidthProperty().bind(textFlow.widthProperty()); link.setVisited(false); // focus border is a bit confusing here so we remove it link.getStyleClass().add("hide-focus"); link.setOnAction(onAction.get()); getParent().layout(); } else { onAction.get().handle(actionEvent); } } }); sceneProperty().addListener((ov, oldValue, newValue) -> { if (oldValue == null && newValue != null && newValue.getWindow() != null) { newValue.getWindow().widthProperty().addListener(listener); // localToScene does deliver 0 instead of the correct x position when scene property gets set, // so we delay for 1 render cycle UserThread.execute(() -> { label.setVisible(true); label.prefWidthProperty().unbind(); label.setPrefWidth(newValue.getWindow().getWidth() - localToScene(0, 0).getX() - 35); }); } }); }
public StatusDisplay(StringExpression statusProperty) { Label statusText = new Label(); statusText.setTextOverrun(OverrunStyle.ELLIPSIS); statusText.textProperty().bind(statusProperty); getStyleClass().add("status-background"); setVisible(true); //statusText.textProperty().addListener((observableValue, oldValue, newValue) -> //setVisible(newValue != null && !newValue.equals("")) //); getChildren().addAll(statusText, progressHolder); }
public OperatorTagPane(Core core, String tag, final WikiBrowser outer) { super(); this.outer = outer; autosize(); setPadding(new Insets(4,4,4,4)); Label label = new Label(tag); label.setFont(label.getFont().font( Font.getDefault().getSize() * 1.4f )); label.setTextOverrun(OverrunStyle.CLIP); setTop(label); final ToggleGroup gk = new ToggleGroup(); ToggleButton k1 = new ToggleButton("Learn"); k1.setToggleGroup(gk); ToggleButton k2 = new ToggleButton("Do"); k2.setToggleGroup(gk); ToggleButton k3 = new ToggleButton("Teach"); k3.setToggleGroup(gk); TilePane k = new TilePane(k1,k2,k3); final ToggleGroup gn = new ToggleGroup(); ToggleButton n1 = new ToggleButton("Can"); n1.setToggleGroup(gn); ToggleButton n2 = new ToggleButton("Need"); n2.setToggleGroup(gn); ToggleButton n3 = new ToggleButton("Not"); n3.setToggleGroup(gn); TilePane n = new TilePane(n1,n2,n3); VBox c = new VBox(k, n); c.setAlignment(Pos.CENTER); c.setPadding(new Insets(4,4,8,4)); setCenter(c); setBottom(new SaveObjectPane(core) { @Override public void onCancel() { onFinished(false, null, null); } @Override public void onSave(Scope scope, NObject subject) { List<String> tags = new ArrayList(); ToggleButton selectedK = (ToggleButton)gk.getSelectedToggle(); ToggleButton selectedN = (ToggleButton)gn.getSelectedToggle(); if (selectedK!=null) tags.add(selectedK.getText()); if (selectedN!=null) tags.add(selectedN.getText()); onFinished(true, subject, tags); } }); }
/** * Accessor for the * com.sun.javafx.scene.control.skin.Utils.computeClippedText() method. * * This method implements the logic to clip Label strings. It can be useful * for other types, like Text. Unfortunately it is not public, but this * accessor allows calling it through reflection. It makes use of * {@link MethodHandle#invokeExact}, which should be close to just as fast * as a standard compiled method call. * * @param font * The font of the text that will be used * @param text * The string to clip * @param width * The maximum width we want to limit the string to * @param type * The {@link OverrunStyle} * @param ellipsisString * The string to use as ellipsis * @return The clipped string, or "ERROR" if an error happened. * Unfortunately we lose the exception typing due to the reflection * call, so we do not want to throw "Throwable" here. */ public static String computeClippedText(Font font, String text, double width, OverrunStyle type, String ellipsisString) { try { String str = (String) COMPUTE_CLIPPED_TEXT_HANDLE.invokeExact(font, text, width, type, ellipsisString); return requireNonNull(str); } catch (Throwable e) { return "ERROR"; //$NON-NLS-1$ } }
public void init(int card_length, int card_breadth, String label, String icon_path) { super.setPrefSize(card_length, card_breadth); super.getStyleClass().addAll("custom_card"); card_label = new Label( label ); card_image = new Image( icon_path ); card_label.setTextOverrun(OverrunStyle.CENTER_ELLIPSIS); card_image_veiw = new ImageView(); card_image_veiw.setImage( card_image ); set_image_dim(90, 90); show_image(true); card_image_veiw.setPreserveRatio(true); card_image_veiw.setSmooth(true); // what does this actually do? /* Add custom classes for CSS */ card_image_veiw.getStyleClass().addAll("custom_card_image"); card_label.getStyleClass().addAll("custom_card_label"); /* Set alignment */ StackPane.setAlignment(card_image_veiw, Pos.TOP_CENTER); StackPane.setAlignment(card_label, Pos.BOTTOM_CENTER); /* Adding to card */ super.getChildren().addAll(card_image_veiw); super.getChildren().addAll(card_label); }
public static FxCssProp textOverrun(OverrunStyle x) { return new FxCssProp("-fx-text-overrun", CssTools.toColor(x)); }