Use ModelMenuContributor for context menu on the RecentlyWatchedTab
This commit is contained in:
parent
a5ca45940d
commit
08115fabea
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue