use of javafx.scene.control.ColorPicker in project org.csstudio.display.builder by kasemir.
the class ColorMapDialog method createColorPicker.
/**
* @param section Segment of the color map
* @return ColorPicker that updates this segment in #color_sections
*/
private ColorPicker createColorPicker(final ColorSection section) {
final Color color = section.color;
final int index = color_sections.indexOf(section);
if (index < 0)
throw new IllegalArgumentException("Cannot locate color section " + section);
final ColorPicker picker = new ColorPicker(color);
picker.setOnAction(event -> {
color_sections.set(index, new ColorSection(section.value, picker.getValue()));
updateMapFromSections();
});
return picker;
}
use of javafx.scene.control.ColorPicker in project RichTextFX by FXMisc.
the class RichText method start.
@Override
public void start(Stage primaryStage) {
mainStage = primaryStage;
Button loadBtn = createButton("loadfile", this::loadDocument, "Load document.\n\n" + "Note: the demo will load only previously-saved \"" + RTFX_FILE_EXTENSION + "\" files. " + "This file format is abitrary and may change across versions.");
Button saveBtn = createButton("savefile", this::saveDocument, "Save document.\n\n" + "Note: the demo will save the area's content to a \"" + RTFX_FILE_EXTENSION + "\" file. " + "This file format is abitrary and may change across versions.");
CheckBox wrapToggle = new CheckBox("Wrap");
wrapToggle.setSelected(true);
area.wrapTextProperty().bind(wrapToggle.selectedProperty());
Button undoBtn = createButton("undo", area::undo, "Undo");
Button redoBtn = createButton("redo", area::redo, "Redo");
Button cutBtn = createButton("cut", area::cut, "Cut");
Button copyBtn = createButton("copy", area::copy, "Copy");
Button pasteBtn = createButton("paste", area::paste, "Paste");
Button boldBtn = createButton("bold", this::toggleBold, "Bold");
Button italicBtn = createButton("italic", this::toggleItalic, "Italic");
Button underlineBtn = createButton("underline", this::toggleUnderline, "Underline");
Button strikeBtn = createButton("strikethrough", this::toggleStrikethrough, "Strike Trough");
Button insertImageBtn = createButton("insertimage", this::insertImage, "Insert Image");
ToggleGroup alignmentGrp = new ToggleGroup();
ToggleButton alignLeftBtn = createToggleButton(alignmentGrp, "align-left", this::alignLeft, "Align left");
ToggleButton alignCenterBtn = createToggleButton(alignmentGrp, "align-center", this::alignCenter, "Align center");
ToggleButton alignRightBtn = createToggleButton(alignmentGrp, "align-right", this::alignRight, "Align right");
ToggleButton alignJustifyBtn = createToggleButton(alignmentGrp, "align-justify", this::alignJustify, "Justify");
ColorPicker paragraphBackgroundPicker = new ColorPicker();
ComboBox<Integer> sizeCombo = new ComboBox<>(FXCollections.observableArrayList(5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 18, 20, 22, 24, 28, 32, 36, 40, 48, 56, 64, 72));
sizeCombo.getSelectionModel().select(Integer.valueOf(12));
sizeCombo.setTooltip(new Tooltip("Font size"));
ComboBox<String> familyCombo = new ComboBox<>(FXCollections.observableList(Font.getFamilies()));
familyCombo.getSelectionModel().select("Serif");
familyCombo.setTooltip(new Tooltip("Font family"));
ColorPicker textColorPicker = new ColorPicker(Color.BLACK);
ColorPicker backgroundColorPicker = new ColorPicker();
paragraphBackgroundPicker.setTooltip(new Tooltip("Paragraph background"));
textColorPicker.setTooltip(new Tooltip("Text color"));
backgroundColorPicker.setTooltip(new Tooltip("Text background"));
paragraphBackgroundPicker.valueProperty().addListener((o, old, color) -> updateParagraphBackground(color));
sizeCombo.setOnAction(evt -> updateFontSize(sizeCombo.getValue()));
familyCombo.setOnAction(evt -> updateFontFamily(familyCombo.getValue()));
textColorPicker.valueProperty().addListener((o, old, color) -> updateTextColor(color));
backgroundColorPicker.valueProperty().addListener((o, old, color) -> updateBackgroundColor(color));
undoBtn.disableProperty().bind(area.undoAvailableProperty().map(x -> !x));
redoBtn.disableProperty().bind(area.redoAvailableProperty().map(x -> !x));
BooleanBinding selectionEmpty = new BooleanBinding() {
{
bind(area.selectionProperty());
}
@Override
protected boolean computeValue() {
return area.getSelection().getLength() == 0;
}
};
cutBtn.disableProperty().bind(selectionEmpty);
copyBtn.disableProperty().bind(selectionEmpty);
area.beingUpdatedProperty().addListener((o, old, beingUpdated) -> {
if (!beingUpdated) {
boolean bold, italic, underline, strike;
Integer fontSize;
String fontFamily;
Color textColor;
Color backgroundColor;
IndexRange selection = area.getSelection();
if (selection.getLength() != 0) {
StyleSpans<TextStyle> styles = area.getStyleSpans(selection);
bold = styles.styleStream().anyMatch(s -> s.bold.orElse(false));
italic = styles.styleStream().anyMatch(s -> s.italic.orElse(false));
underline = styles.styleStream().anyMatch(s -> s.underline.orElse(false));
strike = styles.styleStream().anyMatch(s -> s.strikethrough.orElse(false));
int[] sizes = styles.styleStream().mapToInt(s -> s.fontSize.orElse(-1)).distinct().toArray();
fontSize = sizes.length == 1 ? sizes[0] : -1;
String[] families = styles.styleStream().map(s -> s.fontFamily.orElse(null)).distinct().toArray(String[]::new);
fontFamily = families.length == 1 ? families[0] : null;
Color[] colors = styles.styleStream().map(s -> s.textColor.orElse(null)).distinct().toArray(Color[]::new);
textColor = colors.length == 1 ? colors[0] : null;
Color[] backgrounds = styles.styleStream().map(s -> s.backgroundColor.orElse(null)).distinct().toArray(i -> new Color[i]);
backgroundColor = backgrounds.length == 1 ? backgrounds[0] : null;
} else {
int p = area.getCurrentParagraph();
int col = area.getCaretColumn();
TextStyle style = area.getStyleAtPosition(p, col);
bold = style.bold.orElse(false);
italic = style.italic.orElse(false);
underline = style.underline.orElse(false);
strike = style.strikethrough.orElse(false);
fontSize = style.fontSize.orElse(-1);
fontFamily = style.fontFamily.orElse(null);
textColor = style.textColor.orElse(null);
backgroundColor = style.backgroundColor.orElse(null);
}
int startPar = area.offsetToPosition(selection.getStart(), Forward).getMajor();
int endPar = area.offsetToPosition(selection.getEnd(), Backward).getMajor();
List<Paragraph<ParStyle, Either<String, LinkedImage>, TextStyle>> pars = area.getParagraphs().subList(startPar, endPar + 1);
@SuppressWarnings("unchecked") Optional<TextAlignment>[] alignments = pars.stream().map(p -> p.getParagraphStyle().alignment).distinct().toArray(Optional[]::new);
Optional<TextAlignment> alignment = alignments.length == 1 ? alignments[0] : Optional.empty();
@SuppressWarnings("unchecked") Optional<Color>[] paragraphBackgrounds = pars.stream().map(p -> p.getParagraphStyle().backgroundColor).distinct().toArray(Optional[]::new);
Optional<Color> paragraphBackground = paragraphBackgrounds.length == 1 ? paragraphBackgrounds[0] : Optional.empty();
updatingToolbar.suspendWhile(() -> {
if (bold) {
if (!boldBtn.getStyleClass().contains("pressed")) {
boldBtn.getStyleClass().add("pressed");
}
} else {
boldBtn.getStyleClass().remove("pressed");
}
if (italic) {
if (!italicBtn.getStyleClass().contains("pressed")) {
italicBtn.getStyleClass().add("pressed");
}
} else {
italicBtn.getStyleClass().remove("pressed");
}
if (underline) {
if (!underlineBtn.getStyleClass().contains("pressed")) {
underlineBtn.getStyleClass().add("pressed");
}
} else {
underlineBtn.getStyleClass().remove("pressed");
}
if (strike) {
if (!strikeBtn.getStyleClass().contains("pressed")) {
strikeBtn.getStyleClass().add("pressed");
}
} else {
strikeBtn.getStyleClass().remove("pressed");
}
if (alignment.isPresent()) {
TextAlignment al = alignment.get();
switch(al) {
case LEFT:
alignmentGrp.selectToggle(alignLeftBtn);
break;
case CENTER:
alignmentGrp.selectToggle(alignCenterBtn);
break;
case RIGHT:
alignmentGrp.selectToggle(alignRightBtn);
break;
case JUSTIFY:
alignmentGrp.selectToggle(alignJustifyBtn);
break;
}
} else {
alignmentGrp.selectToggle(null);
}
paragraphBackgroundPicker.setValue(paragraphBackground.orElse(null));
if (fontSize != -1) {
sizeCombo.getSelectionModel().select(fontSize);
} else {
sizeCombo.getSelectionModel().clearSelection();
}
if (fontFamily != null) {
familyCombo.getSelectionModel().select(fontFamily);
} else {
familyCombo.getSelectionModel().clearSelection();
}
if (textColor != null) {
textColorPicker.setValue(textColor);
}
backgroundColorPicker.setValue(backgroundColor);
});
}
});
ToolBar toolBar1 = new ToolBar(loadBtn, saveBtn, new Separator(Orientation.VERTICAL), wrapToggle, new Separator(Orientation.VERTICAL), undoBtn, redoBtn, new Separator(Orientation.VERTICAL), cutBtn, copyBtn, pasteBtn, new Separator(Orientation.VERTICAL), boldBtn, italicBtn, underlineBtn, strikeBtn, new Separator(Orientation.VERTICAL), alignLeftBtn, alignCenterBtn, alignRightBtn, alignJustifyBtn, new Separator(Orientation.VERTICAL), insertImageBtn, new Separator(Orientation.VERTICAL), paragraphBackgroundPicker);
ToolBar toolBar2 = new ToolBar(sizeCombo, familyCombo, textColorPicker, backgroundColorPicker);
VirtualizedScrollPane<GenericStyledArea<ParStyle, Either<String, LinkedImage>, TextStyle>> vsPane = new VirtualizedScrollPane<>(area);
VBox vbox = new VBox();
VBox.setVgrow(vsPane, Priority.ALWAYS);
vbox.getChildren().addAll(toolBar1, toolBar2, vsPane);
Scene scene = new Scene(vbox, 600, 400);
scene.getStylesheets().add(RichText.class.getResource("rich-text.css").toExternalForm());
primaryStage.setScene(scene);
area.requestFocus();
primaryStage.setTitle("Rich Text Demo");
primaryStage.show();
}
use of javafx.scene.control.ColorPicker in project KNOBS by ESSICS.
the class StopListEditorController method getNewStop.
private Stop getNewStop(Stop previous) {
Dialog<Stop> dialog = new Dialog<>();
dialog.setTitle("Stop Editor");
dialog.setHeaderText(previous == null ? "Define a new Stop" : "Edit the selected Stop");
dialog.getDialogPane().getButtonTypes().addAll(OK, CANCEL);
Spinner<Double> offsetSpinner = new Spinner<>(0.0, 1.0, previous == null ? 0.0 : previous.getOffset(), 0.01);
ColorPicker colorPicker = new ColorPicker(previous == null ? Color.GOLDENROD : previous.getColor());
GridPane grid = new GridPane();
offsetSpinner.setEditable(true);
offsetSpinner.setPrefWidth(USE_COMPUTED_SIZE);
colorPicker.setPrefWidth(USE_COMPUTED_SIZE);
grid.setHgap(6);
grid.setVgap(12);
grid.setPadding(new Insets(12, 12, 12, 12));
grid.getColumnConstraints().add(0, new ColumnConstraints(USE_COMPUTED_SIZE, USE_COMPUTED_SIZE, USE_COMPUTED_SIZE, Priority.ALWAYS, HPos.RIGHT, true));
grid.getColumnConstraints().add(1, new ColumnConstraints(USE_COMPUTED_SIZE, USE_COMPUTED_SIZE, USE_COMPUTED_SIZE, Priority.ALWAYS, HPos.LEFT, true));
grid.add(new Label("Offset:"), 0, 0);
grid.add(offsetSpinner, 1, 0);
grid.add(new Label("Color:"), 0, 1);
grid.add(colorPicker, 1, 1);
dialog.initOwner(stopsTable.getScene().getWindow());
dialog.getDialogPane().getScene().getStylesheets().add("/styles/dark-style.css");
dialog.getDialogPane().setContent(grid);
dialog.setResultConverter(b -> {
if (b == OK) {
return new Stop(offsetSpinner.getValue(), colorPicker.getValue());
} else {
return null;
}
});
Platform.runLater(() -> offsetSpinner.requestFocus());
return dialog.showAndWait().orElse(null);
}
use of javafx.scene.control.ColorPicker in project Gargoyle by callakrsos.
the class ColorAnalysisExam method start.
/*
* (non-Javadoc)
*
* @see javafx.application.Application#start(javafx.stage.Stage)
*/
@Override
public void start(Stage primaryStage) throws Exception {
BorderPane root = new BorderPane();
ColorPicker value = new ColorPicker();
root.setTop(value);
List<Label> arrayList = new ArrayList<>();
for (int i = 0; i < 7; i++) {
Label region = new Label();
region.setPrefWidth(100);
region.setPrefHeight(100);
String text = "";
switch(i) {
case 0:
text = "Default";
break;
case 1:
text = "Brigher";
break;
case 2:
text = "darker";
break;
case 3:
text = "desaturate";
break;
case 4:
text = "grayscale";
break;
case 5:
text = "invert";
break;
case 6:
text = "saturate";
break;
}
region.setText(text);
arrayList.add(region);
}
Region region2 = new Region();
region2.setPrefWidth(100);
region2.setPrefHeight(100);
value.valueProperty().addListener((oba, o, n) -> {
arrayList.get(0).setBackground(new Background(new BackgroundFill(n, CornerRadii.EMPTY, new Insets(0))));
arrayList.get(1).setBackground(new Background(new BackgroundFill(n.brighter(), CornerRadii.EMPTY, new Insets(0))));
arrayList.get(2).setBackground(new Background(new BackgroundFill(n.darker(), CornerRadii.EMPTY, new Insets(0))));
arrayList.get(3).setBackground(new Background(new BackgroundFill(n.desaturate(), CornerRadii.EMPTY, new Insets(0))));
arrayList.get(4).setBackground(new Background(new BackgroundFill(n.grayscale(), CornerRadii.EMPTY, new Insets(0))));
arrayList.get(5).setBackground(new Background(new BackgroundFill(n.invert(), CornerRadii.EMPTY, new Insets(0))));
arrayList.get(6).setBackground(new Background(new BackgroundFill(n.saturate(), CornerRadii.EMPTY, new Insets(0))));
});
HBox value2 = new HBox();
value2.getChildren().addAll(arrayList);
root.setCenter(value2);
primaryStage.setScene(new Scene(root));
primaryStage.show();
}
use of javafx.scene.control.ColorPicker in project org.csstudio.display.builder by kasemir.
the class ColorMapDialog method createContent.
private Node createContent() {
// Table for selecting a predefined color map
predefined_table = new TableView<>();
final TableColumn<PredefinedColorMaps.Predefined, String> name_column = new TableColumn<>(Messages.ColorMapDialog_PredefinedMap);
name_column.setCellValueFactory(param -> new SimpleStringProperty(param.getValue().getDescription()));
predefined_table.getColumns().add(name_column);
predefined_table.getItems().addAll(PredefinedColorMaps.PREDEFINED);
predefined_table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
// Table for viewing/editing color sections
sections_table = new TableView<>();
// Value of color section
final TableColumn<ColorSection, String> value_column = new TableColumn<>(Messages.ColorMapDialog_Value);
value_column.setCellValueFactory(param -> new SimpleStringProperty(Integer.toString(param.getValue().value)));
value_column.setCellFactory(TextFieldTableCell.forTableColumn());
value_column.setOnEditCommit(event -> {
final int index = event.getTablePosition().getRow();
try {
final int value = Math.max(0, Math.min(255, Integer.parseInt(event.getNewValue().trim())));
color_sections.set(index, new ColorSection(value, color_sections.get(index).color));
color_sections.sort((sec1, sec2) -> sec1.value - sec2.value);
updateMapFromSections();
} catch (NumberFormatException ex) {
// Ignore, field will reset to original value
}
});
// Color of color section
final TableColumn<ColorSection, ColorPicker> color_column = new TableColumn<>(Messages.ColorMapDialog_Color);
color_column.setCellValueFactory(param -> {
final ColorSection segment = param.getValue();
return new SimpleObjectProperty<ColorPicker>(createColorPicker(segment));
});
color_column.setCellFactory(column -> new ColorTableCell());
sections_table.getColumns().add(value_column);
sections_table.getColumns().add(color_column);
sections_table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
sections_table.setItems(color_sections);
sections_table.setEditable(true);
add = new Button(Messages.ColorMapDialog_Add, JFXUtil.getIcon("add.png"));
add.setMaxWidth(Double.MAX_VALUE);
remove = new Button(Messages.ColorMapDialog_Remove, JFXUtil.getIcon("delete.png"));
remove.setMaxWidth(Double.MAX_VALUE);
final VBox buttons = new VBox(10, add, remove);
// Upper section with tables
final HBox tables_and_buttons = new HBox(10, predefined_table, sections_table, buttons);
HBox.setHgrow(predefined_table, Priority.ALWAYS);
HBox.setHgrow(sections_table, Priority.ALWAYS);
// Lower section with resulting color map
final Region fill1 = new Region(), fill2 = new Region(), fill3 = new Region();
HBox.setHgrow(fill1, Priority.ALWAYS);
HBox.setHgrow(fill2, Priority.ALWAYS);
HBox.setHgrow(fill3, Priority.ALWAYS);
final HBox color_title = new HBox(fill1, new Label(Messages.ColorMapDialog_Result), fill2);
color_bar = new Region();
color_bar.setMinHeight(COLOR_BAR_HEIGHT);
color_bar.setMaxHeight(COLOR_BAR_HEIGHT);
color_bar.setPrefHeight(COLOR_BAR_HEIGHT);
final HBox color_legend = new HBox(new Label("0"), fill3, new Label("255"));
final VBox box = new VBox(10, tables_and_buttons, new Separator(), color_title, color_bar, color_legend);
VBox.setVgrow(tables_and_buttons, Priority.ALWAYS);
return box;
}
Aggregations