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