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