Use ModelMenuContributor for context menu on the RecentlyWatchedTab

This commit is contained in:
0xb00bface 2021-07-18 15:01:58 +02:00
parent a5ca45940d
commit 08115fabea
1 changed files with 12 additions and 39 deletions

View File

@ -29,31 +29,29 @@ import ctbrec.io.InstantJsonAdapter;
import ctbrec.io.ModelJsonAdapter;
import ctbrec.recorder.Recorder;
import ctbrec.sites.Site;
import ctbrec.ui.DesktopIntegration;
import ctbrec.ui.ShutdownListener;
import ctbrec.ui.action.FollowAction;
import ctbrec.ui.action.PlayAction;
import ctbrec.ui.action.StartRecordingAction;
import ctbrec.ui.controls.CustomMouseBehaviorContextMenu;
import ctbrec.ui.controls.DateTimeCellFactory;
import ctbrec.ui.controls.SearchBox;
import ctbrec.ui.event.PlayerStartedEvent;
import ctbrec.ui.menu.ModelMenuContributor;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.scene.Cursor;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.MenuItem;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.SelectionMode;
import javafx.scene.control.SeparatorMenuItem;
import javafx.scene.control.Tab;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableColumn.SortType;
import javafx.scene.control.TableView;
import javafx.scene.input.Clipboard;
import javafx.scene.input.ClipboardContent;
import javafx.scene.input.ContextMenuEvent;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
@ -215,37 +213,20 @@ public class RecentlyWatchedTab extends Tab implements ShutdownListener {
return null;
}
List<Model> selectedModels = selectedRows.stream().map(PlayerStartedEvent::getModel).collect(Collectors.toList());
var copyUrl = new MenuItem("Copy URL");
copyUrl.setOnAction(e -> {
var selected = selectedModels.get(0);
final var content = new ClipboardContent();
content.putString(selected.getUrl());
Clipboard.getSystemClipboard().setContent(content);
});
List<Model> selectedModels = table.getSelectionModel().getSelectedItems().stream().map(PlayerStartedEvent::getModel).collect(Collectors.toList());
ContextMenu menu = new CustomMouseBehaviorContextMenu();
var startRecording = new MenuItem("Start Recording");
startRecording.setOnAction(e -> startRecording(selectedModels));
var openInBrowser = new MenuItem("Open in Browser");
openInBrowser.setOnAction(e -> DesktopIntegration.open(selectedModels.get(0).getUrl()));
var openInPlayer = new MenuItem("Open in Player");
openInPlayer.setOnAction(e -> openInPlayer(selectedModels.get(0)));
var follow = new MenuItem("Follow");
follow.setOnAction(e -> new FollowAction(getTabPane(), selectedModels).execute());
ModelMenuContributor.newContributor(getTabPane(), Config.getInstance(), recorder) //
.withStartStopCallback(m -> getTabPane().setCursor(Cursor.DEFAULT)) //
.afterwards(table::refresh)
.contributeToMenu(selectedModels, menu);
menu.getItems().add(new SeparatorMenuItem());
var delete = new MenuItem("Delete");
delete.setOnAction(e -> delete(selectedRows));
var clearHistory = new MenuItem("Clear history");
clearHistory.setOnAction(e -> clearHistory());
ContextMenu menu = new CustomMouseBehaviorContextMenu();
menu.getItems().addAll(startRecording, copyUrl, openInPlayer, openInBrowser, follow, delete, clearHistory);
if (selectedModels.size() > 1) {
copyUrl.setDisable(true);
openInPlayer.setDisable(true);
openInBrowser.setDisable(true);
}
menu.getItems().addAll(delete, clearHistory);
return menu;
}
@ -259,14 +240,6 @@ public class RecentlyWatchedTab extends Tab implements ShutdownListener {
observableModels.removeAll(selectedRows);
}
private void startRecording(List<Model> selectedModels) {
new StartRecordingAction(getTabPane(), selectedModels, recorder).execute();
}
private void openInPlayer(Model selectedModel) {
new PlayAction(getTabPane(), selectedModel).execute();
}
private void subscribeToPlayerEvents() {
EventBusHolder.BUS.register(new Object() {
@Subscribe