use of javafx.scene.control.SeparatorMenuItem in project blue by kunstmusik.
the class BSBEditPane method setupPopupMenus.
private void setupPopupMenus(BSBObjectEntry[] bsbObjectEntries) {
popupMenu = new ContextMenu();
EventHandler<ActionEvent> al = e -> {
MenuItem m = (MenuItem) e.getSource();
Class<? extends BSBObject> clazz = (Class<? extends BSBObject>) m.getUserData();
try {
BSBObject bsbObj = clazz.newInstance();
bsbObj.setX(addX);
bsbObj.setY(addY);
currentBSBGroup.addBSBObject(bsbObj);
} catch (InstantiationException | IllegalAccessException ex) {
Exceptions.printStackTrace(ex);
}
};
for (BSBObjectEntry entry : bsbObjectEntries) {
MenuItem m = new MenuItem("Add " + entry.label);
m.setUserData(entry.bsbObjectClass);
m.setOnAction(al);
popupMenu.getItems().add(m);
}
MenuItem paste = new MenuItem("Paste");
paste.setOnAction(ae -> paste(addX, addY));
paste.disableProperty().bind(Bindings.createBooleanBinding(() -> selection.copyBufferProperty().size() == 0, selection.copyBufferProperty()));
popupMenu.getItems().addAll(new SeparatorMenuItem(), paste);
nonEditPopupMenu = new ContextMenu();
MenuItem randomize = new MenuItem("Randomize");
randomize.setOnAction(ae -> {
if (bsbInterface != null) {
bsbInterface.getRootGroup().randomize();
}
});
nonEditPopupMenu.getItems().add(randomize);
}
use of javafx.scene.control.SeparatorMenuItem in project org.csstudio.display.builder by kasemir.
the class ScriptsDialog method createScriptsTable.
/**
* @return Node for UI elements that edit the scripts
*/
private Region createScriptsTable() {
scripts_icon_col = new TableColumn<>();
scripts_icon_col.setCellValueFactory(cdf -> new SimpleObjectProperty<ImageView>(getScriptImage(cdf.getValue())) {
{
bind(Bindings.createObjectBinding(() -> getScriptImage(cdf.getValue()), cdf.getValue().fileProperty()));
}
});
scripts_icon_col.setCellFactory(col -> new TableCell<ScriptItem, ImageView>() {
/* Instance initializer. */
{
setAlignment(Pos.CENTER_LEFT);
}
@Override
protected void updateItem(final ImageView item, final boolean empty) {
super.updateItem(item, empty);
super.setGraphic(item);
}
});
scripts_icon_col.setEditable(false);
scripts_icon_col.setSortable(false);
scripts_icon_col.setMaxWidth(25);
scripts_icon_col.setMinWidth(25);
// Create table with editable script 'file' column
scripts_name_col = new TableColumn<>(Messages.ScriptsDialog_ColScript);
scripts_name_col.setCellValueFactory(new PropertyValueFactory<ScriptItem, String>("file"));
scripts_name_col.setCellFactory(col -> new TextFieldTableCell<ScriptItem, String>(new DefaultStringConverter()) {
private final ChangeListener<? super Boolean> focusedListener = (ob, o, n) -> {
if (!n)
cancelEdit();
};
@Override
public void cancelEdit() {
((TextField) getGraphic()).focusedProperty().removeListener(focusedListener);
super.cancelEdit();
}
@Override
public void startEdit() {
super.startEdit();
((TextField) getGraphic()).focusedProperty().addListener(focusedListener);
}
@Override
public void commitEdit(final String newValue) {
((TextField) getGraphic()).focusedProperty().removeListener(focusedListener);
super.commitEdit(newValue);
Platform.runLater(() -> btn_pv_add.requestFocus());
}
});
scripts_name_col.setOnEditCommit(event -> {
final int row = event.getTablePosition().getRow();
script_items.get(row).file.set(event.getNewValue());
fixupScripts(row);
});
scripts_table = new TableView<>(script_items);
scripts_table.getColumns().add(scripts_icon_col);
scripts_table.getColumns().add(scripts_name_col);
scripts_table.setEditable(true);
scripts_table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
scripts_table.setTooltip(new Tooltip(Messages.ScriptsDialog_ScriptsTT));
scripts_table.setPlaceholder(new Label(Messages.ScriptsDialog_NoScripts));
// Buttons
addMenuButton = new MenuButton(Messages.Add, JFXUtil.getIcon("add.png"), new MenuItem(Messages.AddPythonFile, JFXUtil.getIcon("file-python.png")) {
{
setOnAction(e -> addPythonFile());
}
}, new MenuItem(Messages.AddJavaScriptFile, JFXUtil.getIcon("file-javascript.png")) {
{
setOnAction(e -> addJavaScriptFile());
}
}, new SeparatorMenuItem(), new MenuItem(Messages.AddEmbeddedPython, JFXUtil.getIcon("python.png")) {
{
setOnAction(e -> addEmbeddedJython());
}
}, new MenuItem(Messages.AddEmbeddedJavaScript, JFXUtil.getIcon("javascript.png")) {
{
setOnAction(e -> addEmbeddedJavaScript());
}
});
addMenuButton.setMaxWidth(Double.MAX_VALUE);
addMenuButton.setAlignment(Pos.CENTER_LEFT);
btn_script_remove = new Button(Messages.Remove, JFXUtil.getIcon("delete.png"));
btn_script_remove.setMaxWidth(Double.MAX_VALUE);
btn_script_remove.setAlignment(Pos.CENTER_LEFT);
btn_script_remove.setDisable(true);
btn_script_remove.setOnAction(event -> {
final int sel = scripts_table.getSelectionModel().getSelectedIndex();
if (sel >= 0) {
script_items.remove(sel);
fixupScripts(sel);
}
});
btn_edit = new SplitMenuButton(convertToFileMenuItem, new SeparatorMenuItem(), convertToEmbeddedPythonMenuItem, convertToEmbeddedJavaScriptMenuItem);
btn_edit.setText(Messages.Select);
btn_edit.setGraphic(JFXUtil.getIcon("select-file.png"));
btn_edit.setMaxWidth(Double.MAX_VALUE);
btn_edit.setMinWidth(120);
btn_edit.setAlignment(Pos.CENTER_LEFT);
btn_edit.setDisable(true);
btn_edit.setOnAction(e -> editOrSelect());
final VBox buttons = new VBox(10, addMenuButton, btn_script_remove, btn_edit);
final HBox content = new HBox(10, scripts_table, buttons);
HBox.setHgrow(scripts_table, Priority.ALWAYS);
HBox.setHgrow(buttons, Priority.NEVER);
return content;
}
use of javafx.scene.control.SeparatorMenuItem in project pmd by pmd.
the class PropertyTableView method initialize.
private void initialize() {
this.getColumns().add(propertyNameColumn);
this.getColumns().add(propertyTypeColumn);
this.getColumns().add(propertyValueColumn);
this.setColumnResizePolicy(CONSTRAINED_RESIZE_POLICY);
this.setTableMenuButtonVisible(true);
ObservableList<PropertyTypeId> availableBuilders = FXCollections.observableArrayList(PropertyTypeId.typeIdsToConstants().values());
Collections.sort(availableBuilders);
StringConverter<PropertyTypeId> converter = DesignerUtil.stringConverter(PropertyTypeId::getStringId, PropertyTypeId::lookupMnemonic);
propertyTypeColumn.setCellFactory(ChoiceBoxTableCell.forTableColumn(converter, availableBuilders));
propertyNameColumn.setCellValueFactory(new PropertyValueFactory<>("name"));
propertyValueColumn.setCellValueFactory(new PropertyValueFactory<>("value"));
propertyTypeColumn.setCellValueFactory(new PropertyValueFactory<>("typeId"));
this.setPlaceholder(new Label("Right-click to add properties"));
MenuItem editItem = new MenuItem("Edit...");
editItem.setOnAction(e -> {
PropertyDescriptorSpec spec = this.getSelectionModel().getSelectedItem();
if (spec != null) {
popEditPropertyDialog(spec);
}
});
MenuItem removeItem = new MenuItem("Remove");
removeItem.setOnAction(e -> {
PropertyDescriptorSpec selected = this.getSelectionModel().getSelectedItem();
if (selected != null) {
this.getItems().remove(selected);
}
});
MenuItem addItem = new MenuItem("Add property...");
addItem.setOnAction(e -> onAddPropertyClicked());
ContextMenu fullMenu = new ContextMenu();
fullMenu.getItems().addAll(editItem, removeItem, new SeparatorMenuItem(), addItem);
// Reduced context menu, for when there are no properties or none is selected
MenuItem addItem2 = new MenuItem("Add property...");
addItem2.setOnAction(e -> onAddPropertyClicked());
ContextMenu smallMenu = new ContextMenu();
smallMenu.getItems().add(addItem2);
this.addEventHandler(MouseEvent.MOUSE_CLICKED, t -> {
if (t.getButton() == MouseButton.SECONDARY || t.getButton() == MouseButton.PRIMARY && t.getClickCount() > 1) {
if (this.getSelectionModel().getSelectedItem() != null) {
fullMenu.show(this, t.getScreenX(), t.getScreenY());
} else {
smallMenu.show(this, t.getScreenX(), t.getScreenY());
}
}
});
propertyNameColumn.setCellFactory(TextFieldTableCell.forTableColumn());
propertyValueColumn.setCellFactory(TextFieldTableCell.forTableColumn());
this.setEditable(false);
}
use of javafx.scene.control.SeparatorMenuItem in project jvarkit by lindenb.
the class IndexCovJfx method doWork.
@Override
public int doWork(final Stage primaryStage, final List<String> args) {
final Rectangle2D screen = Screen.getPrimary().getVisualBounds();
final Pattern tab = Pattern.compile("[\t]");
BufferedReader r = null;
try {
final File inputFile;
if (args.isEmpty()) {
// open gui
final FileChooser fc = new FileChooser();
inputFile = fc.showOpenDialog(null);
if (inputFile == null) {
return 0;
}
} else if (args.size() == 1) {
inputFile = new File(args.get(0));
} else {
LOG.error("Illegal Number of arguments: " + args);
return -1;
}
r = IOUtils.openFileForBufferedReading(inputFile);
String line = r.readLine();
if (line == null) {
new Alert(AlertType.ERROR, "Cannot read first line of " + inputFile, ButtonType.OK).showAndWait();
return -1;
}
String[] tokens = tab.split(line);
if (tokens.length < 4 || !tokens[0].equals("#chrom") || !tokens[1].equals("start") || !tokens[2].equals("end")) {
new Alert(AlertType.ERROR, "bad first line " + line + " in " + inputFile, ButtonType.OK).showAndWait();
return -1;
}
this.sampleNames.addAll(Arrays.asList(tokens).subList(3, tokens.length).stream().map(S -> new Sample(S)).collect(Collectors.toList()));
this.sampleListView = new ListView<>(this.sampleNames);
final MultipleSelectionModel<Sample> sampleSelectionModel = this.sampleListView.getSelectionModel();
sampleSelectionModel.setSelectionMode(SelectionMode.MULTIPLE);
// this.sampleListView.setPrefWidth(200);
final SmartComparator smartCmp = new SmartComparator();
this.orignalndexCovRows.addAll(r.lines().filter(L -> !StringUtil.isBlank(L)).map(L -> Arrays.asList(tab.split(L))).map(T -> new IndexCovRow(T)).sorted((A, B) -> {
int i = smartCmp.compare(A.getContig(), B.getContig());
if (i != 0)
return i;
return A.getStart() - B.getStart();
}).collect(Collectors.toList()));
this.visibleIndexCovRows.addAll(orignalndexCovRows);
String lastContig = null;
for (final IndexCovRow row : this.visibleIndexCovRows) {
if (lastContig == null || !lastContig.equals(row.getContig())) {
this.contig2color.put(row.getContig(), this.contig2color.size() % 2 == 0 ? gray(0.96) : gray(0.98));
lastContig = row.getContig();
}
}
this.canvas = new Canvas(screen.getWidth() - 400, screen.getHeight() - 200);
this.canvasSrollPane = new ScrollPane(canvas);
this.canvasSrollPane.setFitToHeight(true);
this.canvasSrollPane.setFitToWidth(true);
this.canvasSrollPane.setHbarPolicy(ScrollBarPolicy.ALWAYS);
this.canvasSrollPane.setHmin(0);
// NOT HERE: see adjustScollPane();
// this.canvasSrollPane.setHmax(this.visibleIndexCovRows.size()*CHUNK_WIDTH);
// this.canvasSrollPane.setHvalue(0);
this.canvasSrollPane.hvalueProperty().addListener(E -> repaintCanvas());
final VBox root = new VBox();
final MenuBar menuBar = new MenuBar();
Menu menu = new Menu("Tools");
MenuItem item = new MenuItem("Goto");
item.setOnAction(AE -> askGoto());
item.setAccelerator(new KeyCodeCombination(KeyCode.G, KeyCombination.CONTROL_DOWN));
menu.getItems().add(item);
menu.getItems().add(new SeparatorMenuItem());
//
item = new MenuItem("Cleanup: remove data > DEL && data < DUP");
item.setOnAction(AE -> askCleanup());
menu.getItems().add(item);
//
item = new MenuItem("Cleanup: remove ALL samples <= DEL or ALL samples >= DUP");
item.setOnAction(AE -> askEveryWhere());
menu.getItems().add(item);
//
item = new MenuItem("Cleanup: keep selected samples having <= DEL or ALL samples >= DUP");
item.setOnAction(AE -> filterForSampleSet(false));
menu.getItems().add(item);
//
item = new MenuItem("Cleanup: keep selected samples having <= DEL or ALL samples >= DUP and only those samples.");
item.setOnAction(AE -> filterForSampleSet(true));
menu.getItems().add(item);
//
item = new MenuItem("Filter: Keep data overlapping BED file");
item.setOnAction(AE -> filterBed(false));
menu.getItems().add(item);
//
item = new MenuItem("Filter: Keep data NOT overlapping BED file");
item.setOnAction(AE -> filterBed(true));
menu.getItems().add(item);
//
item = new MenuItem("Revert: Restore original data");
item.setOnAction(AE -> doRestoreOriginalData());
item.setAccelerator(new KeyCodeCombination(KeyCode.R, KeyCombination.CONTROL_DOWN));
menu.getItems().add(item);
menu.getItems().add(new SeparatorMenuItem());
item = new MenuItem("Next Interesting");
item.setOnAction(AE -> goToNextInteresting(1));
item.setAccelerator(new KeyCodeCombination(KeyCode.N, KeyCombination.CONTROL_DOWN));
menu.getItems().add(item);
item = new MenuItem("Previous Interesting");
item.setOnAction(AE -> goToNextInteresting(-1));
item.setAccelerator(new KeyCodeCombination(KeyCode.P, KeyCombination.CONTROL_DOWN));
menu.getItems().add(item);
menu.getItems().add(new SeparatorMenuItem());
item = new MenuItem("Quit");
menu.getItems().add(item);
item.setOnAction(AE -> {
Platform.exit();
});
menuBar.getMenus().add(menu);
root.getChildren().add(menuBar);
final HBox toolboxPane = new HBox();
Label label = new Label("DEL when \u2264 :");
toolboxPane.getChildren().add(label);
this.deletionSpinner = new Spinner<>(0.0, 0.9, DEFAULT_deletionTreshold, 0.05);
label.setLabelFor(this.deletionSpinner);
this.deletionSpinner.valueProperty().addListener((a, b, c) -> repaintCanvas());
toolboxPane.getChildren().add(this.deletionSpinner);
label = new Label("DUP when \u2265 :");
toolboxPane.getChildren().add(label);
this.duplicationSpinner = new Spinner<>(1.1, 10.0, DEFAULT_duplicationTreshold, 0.05);
this.duplicationSpinner.valueProperty().addListener((a, b, c) -> repaintCanvas());
label.setLabelFor(this.duplicationSpinner);
toolboxPane.getChildren().add(this.duplicationSpinner);
label = new Label(" Jump to :");
toolboxPane.getChildren().add(label);
final TextField jumpToTextField = new TextField();
jumpToTextField.setPromptText("chrom:pos");
jumpToTextField.setPrefColumnCount(15);
toolboxPane.getChildren().add(jumpToTextField);
label.setLabelFor(jumpToTextField);
jumpToTextField.setOnAction(AE -> askGoto(jumpToTextField.getText()));
final Button goButton = new Button("Go");
toolboxPane.getChildren().add(goButton);
goButton.setOnAction(AE -> askGoto(jumpToTextField.getText()));
root.getChildren().add(toolboxPane);
// HBox hbox = new HBox(sampleListView,this.canvasSrollPane);
final GridPane grid = new GridPane();
grid.setHgap(10);
grid.setVgap(10);
grid.setPadding(new Insets(5, 5, 5, 5));
grid.add(this.sampleListView, 0, 0, 1, 1);
grid.add(this.canvasSrollPane, 1, 0, 9, 1);
// final StackPane root = new StackPane();
root.getChildren().add(grid);
final Scene scene = new Scene(root);
primaryStage.setTitle(IndexCovJfx.class.getSimpleName() + " " + this.sampleNames.size() + " Sample(s) " + this.visibleIndexCovRows.size() + " Point(s).");
primaryStage.setOnShown(E -> {
adjustScollPane();
this.canvasSrollPane.requestFocus();
repaintCanvas();
if (this.isUnitText()) {
Platform.exit();
}
});
this.canvasSrollPane.setOnKeyPressed(e -> {
if (e.getCode() == KeyCode.LEFT) {
canvasSrollPane.setHvalue(Math.max(canvasSrollPane.getHmin(), canvasSrollPane.getHvalue() - CHUNK_WIDTH));
}
if (e.getCode() == KeyCode.RIGHT) {
canvasSrollPane.setHvalue(Math.min(canvasSrollPane.getHmax(), canvasSrollPane.getHvalue() + CHUNK_WIDTH));
}
});
primaryStage.setScene(scene);
primaryStage.show();
/*sampleSelectionModel.selectedItemProperty().addListener(E->{
repaintCanvas();
});
sampleSelectionModel.selectedItemProperty().addListener(E->repaintCanvas());*/
sampleSelectionModel.getSelectedIndices().addListener(new ListChangeListener<Integer>() {
@Override
public void onChanged(Change<? extends Integer> c) {
repaintCanvas();
}
});
} catch (final Exception err) {
LOG.error(err);
new Alert(AlertType.ERROR, "Error " + err, ButtonType.OK).showAndWait();
return -1;
} finally {
CloserUtil.close(r);
}
return 0;
}
use of javafx.scene.control.SeparatorMenuItem in project jvarkit by lindenb.
the class VcfStage method createJavascriptSnippetMenu.
@Override
protected Menu createJavascriptSnippetMenu() {
final Menu menu = super.createJavascriptSnippetMenu();
menu.getItems().add(new SeparatorMenuItem());
MenuItem item = new MenuItem("Insert Samples' name as Array");
menu.getItems().add(item);
item.setOnAction(AE -> {
final int caret = super.javascriptArea.getCaretPosition();
final StringBuilder sb = new StringBuilder("var sampleNames=[").append(getVcfFile().getHeader().getSampleNamesInOrder().stream().map(S -> "\"" + S + "\"").collect(Collectors.joining(","))).append("];\n");
super.javascriptArea.insertText(caret, sb.toString());
});
return menu;
}
Aggregations