Add context menu to search popup
This commit is contained in:
parent
4ac1bd4571
commit
d9742f5962
|
@ -32,16 +32,19 @@
|
||||||
package ctbrec.ui.controls;
|
package ctbrec.ui.controls;
|
||||||
|
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import ctbrec.Config;
|
||||||
import ctbrec.GlobalThreadPool;
|
import ctbrec.GlobalThreadPool;
|
||||||
import ctbrec.Model;
|
import ctbrec.Model;
|
||||||
import ctbrec.recorder.Recorder;
|
import ctbrec.recorder.Recorder;
|
||||||
import ctbrec.ui.action.PlayAction;
|
import ctbrec.ui.action.PlayAction;
|
||||||
|
import ctbrec.ui.menu.ModelMenuContributor;
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
import javafx.concurrent.Task;
|
import javafx.concurrent.Task;
|
||||||
import javafx.event.EventHandler;
|
import javafx.event.EventHandler;
|
||||||
|
@ -49,12 +52,15 @@ import javafx.geometry.Insets;
|
||||||
import javafx.scene.Cursor;
|
import javafx.scene.Cursor;
|
||||||
import javafx.scene.Node;
|
import javafx.scene.Node;
|
||||||
import javafx.scene.control.Button;
|
import javafx.scene.control.Button;
|
||||||
|
import javafx.scene.control.ContextMenu;
|
||||||
import javafx.scene.control.Label;
|
import javafx.scene.control.Label;
|
||||||
import javafx.scene.control.ListCell;
|
import javafx.scene.control.ListCell;
|
||||||
import javafx.scene.control.ListView;
|
import javafx.scene.control.ListView;
|
||||||
import javafx.scene.control.Skin;
|
import javafx.scene.control.Skin;
|
||||||
import javafx.scene.image.Image;
|
import javafx.scene.image.Image;
|
||||||
import javafx.scene.image.ImageView;
|
import javafx.scene.image.ImageView;
|
||||||
|
import javafx.scene.input.ContextMenuEvent;
|
||||||
|
import javafx.scene.input.MouseButton;
|
||||||
import javafx.scene.input.MouseEvent;
|
import javafx.scene.input.MouseEvent;
|
||||||
import javafx.scene.shape.Rectangle;
|
import javafx.scene.shape.Rectangle;
|
||||||
|
|
||||||
|
@ -68,6 +74,8 @@ public class SearchPopoverTreeList extends PopoverTreeList<Model> implements Pop
|
||||||
|
|
||||||
private Recorder recorder;
|
private Recorder recorder;
|
||||||
|
|
||||||
|
ContextMenu popup;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ListCell<Model> call(ListView<Model> p) {
|
public ListCell<Model> call(ListView<Model> p) {
|
||||||
return new SearchItemListCell();
|
return new SearchItemListCell();
|
||||||
|
@ -150,11 +158,22 @@ public class SearchPopoverTreeList extends PopoverTreeList<Model> implements Pop
|
||||||
setOnMouseClicked(this);
|
setOnMouseClicked(this);
|
||||||
setOnMouseEntered(evt -> {
|
setOnMouseEntered(evt -> {
|
||||||
getStyleClass().add(highlightClass);
|
getStyleClass().add(highlightClass);
|
||||||
title.getStyleClass().add(highlightClass);
|
|
||||||
});
|
});
|
||||||
setOnMouseExited(evt -> {
|
setOnMouseExited(evt -> {
|
||||||
getStyleClass().remove(highlightClass);
|
getStyleClass().remove(highlightClass);
|
||||||
title.getStyleClass().remove(highlightClass);
|
});
|
||||||
|
addEventHandler(ContextMenuEvent.CONTEXT_MENU_REQUESTED, event -> {
|
||||||
|
popup = new CustomMouseBehaviorContextMenu();
|
||||||
|
ModelMenuContributor.newContributor(this, Config.getInstance(), recorder) //
|
||||||
|
.withStartStopCallback(m -> setCursor(Cursor.DEFAULT)) //
|
||||||
|
.contributeToMenu(List.of(model), popup);
|
||||||
|
popup.show(this, event.getScreenX(), event.getScreenY());
|
||||||
|
event.consume();
|
||||||
|
});
|
||||||
|
addEventHandler(MouseEvent.MOUSE_PRESSED, event -> {
|
||||||
|
if (popup != null) {
|
||||||
|
popup.hide();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Rectangle clip = new Rectangle(thumbSize, thumbSize);
|
Rectangle clip = new Rectangle(thumbSize, thumbSize);
|
||||||
|
@ -210,7 +229,9 @@ public class SearchPopoverTreeList extends PopoverTreeList<Model> implements Pop
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(MouseEvent t) {
|
public void handle(MouseEvent t) {
|
||||||
itemClicked(getItem());
|
if (t.getButton() == MouseButton.PRIMARY && t.getClickCount() == 2) {
|
||||||
|
itemClicked(getItem());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in New Issue