Use ModelMenuContributor for context menu on the MyFreeCamsTableTab
This commit is contained in:
parent
e1dbdb00f9
commit
73631fb5c0
|
@ -1,3 +1,8 @@
|
|||
4.4.3
|
||||
========================
|
||||
* Changed Camsoda audio codec back to AAC. Sound should be back for recordings
|
||||
* Unified all model related context menus
|
||||
|
||||
4.4.2
|
||||
========================
|
||||
* Fixed memory leak caused by minimizing to tray
|
||||
|
|
|
@ -43,7 +43,7 @@ public class MyFreeCamsTabProvider implements TabProvider {
|
|||
updateService = new NewModelService();
|
||||
tabs.add(createTab("New", updateService));
|
||||
|
||||
tabs.add(new MyFreeCamsTableTab(myFreeCams));
|
||||
tabs.add(new MyFreeCamsTableTab(myFreeCams, recorder));
|
||||
|
||||
return tabs;
|
||||
}
|
||||
|
|
|
@ -36,17 +36,15 @@ import ctbrec.Config;
|
|||
import ctbrec.GlobalThreadPool;
|
||||
import ctbrec.Model;
|
||||
import ctbrec.StringUtil;
|
||||
import ctbrec.recorder.Recorder;
|
||||
import ctbrec.recorder.download.StreamSource;
|
||||
import ctbrec.sites.mfc.MyFreeCams;
|
||||
import ctbrec.sites.mfc.MyFreeCamsModel;
|
||||
import ctbrec.sites.mfc.SessionState;
|
||||
import ctbrec.sites.mfc.User;
|
||||
import ctbrec.ui.DesktopIntegration;
|
||||
import ctbrec.ui.action.FollowAction;
|
||||
import ctbrec.ui.action.PlayAction;
|
||||
import ctbrec.ui.action.StartRecordingAction;
|
||||
import ctbrec.ui.controls.CustomMouseBehaviorContextMenu;
|
||||
import ctbrec.ui.controls.SearchBox;
|
||||
import ctbrec.ui.menu.ModelMenuContributor;
|
||||
import ctbrec.ui.tabs.TabSelectionListener;
|
||||
import javafx.beans.property.BooleanProperty;
|
||||
import javafx.beans.property.DoubleProperty;
|
||||
|
@ -66,6 +64,7 @@ import javafx.event.ActionEvent;
|
|||
import javafx.geometry.Insets;
|
||||
import javafx.geometry.Point2D;
|
||||
import javafx.geometry.Pos;
|
||||
import javafx.scene.Cursor;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.control.CheckMenuItem;
|
||||
import javafx.scene.control.ContextMenu;
|
||||
|
@ -73,13 +72,12 @@ import javafx.scene.control.Label;
|
|||
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.TableColumn;
|
||||
import javafx.scene.control.TableColumn.SortType;
|
||||
import javafx.scene.control.TableView;
|
||||
import javafx.scene.control.Tooltip;
|
||||
import javafx.scene.input.Clipboard;
|
||||
import javafx.scene.input.ClipboardContent;
|
||||
import javafx.scene.input.ContextMenuEvent;
|
||||
import javafx.scene.input.MouseEvent;
|
||||
import javafx.scene.layout.BorderPane;
|
||||
|
@ -102,9 +100,11 @@ public class MyFreeCamsTableTab extends Tab implements TabSelectionListener {
|
|||
private List<TableColumn<ModelTableRow, ?>> columns = new ArrayList<>();
|
||||
private ContextMenu popup;
|
||||
private long lastJsonWrite = 0;
|
||||
private Recorder recorder;
|
||||
|
||||
public MyFreeCamsTableTab(MyFreeCams mfc) {
|
||||
public MyFreeCamsTableTab(MyFreeCams mfc, Recorder recorder) {
|
||||
this.mfc = mfc;
|
||||
this.recorder = recorder;
|
||||
setText("Tabular");
|
||||
setClosable(false);
|
||||
createGui();
|
||||
|
@ -306,26 +306,12 @@ public class MyFreeCamsTableTab extends Tab implements TabSelectionListener {
|
|||
return null;
|
||||
}
|
||||
|
||||
var copyUrl = new MenuItem("Copy URL");
|
||||
copyUrl.setOnAction(e -> copyUrl(selectedModels.get(0)));
|
||||
|
||||
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());
|
||||
|
||||
ContextMenu menu = new CustomMouseBehaviorContextMenu();
|
||||
menu.getItems().addAll(startRecording, copyUrl, openInPlayer, openInBrowser, follow);
|
||||
|
||||
if (selectedModels.size() > 1) {
|
||||
copyUrl.setDisable(true);
|
||||
openInPlayer.setDisable(true);
|
||||
openInBrowser.setDisable(true);
|
||||
}
|
||||
ModelMenuContributor.newContributor(getTabPane(), Config.getInstance(), recorder) //
|
||||
.withStartStopCallback(m -> getTabPane().setCursor(Cursor.DEFAULT)) //
|
||||
.afterwards(table::refresh)
|
||||
.contributeToMenu(selectedModels, menu);
|
||||
|
||||
addDebuggingInDevMode(menu, selectedModels);
|
||||
|
||||
|
@ -333,6 +319,7 @@ public class MyFreeCamsTableTab extends Tab implements TabSelectionListener {
|
|||
}
|
||||
|
||||
private void addDebuggingInDevMode(ContextMenu menu, List<Model> selectedModels) {
|
||||
menu.getItems().add(new SeparatorMenuItem());
|
||||
if (Objects.equals(System.getenv("CTBREC_DEV"), "1")) {
|
||||
var debug = new MenuItem("debug");
|
||||
debug.setOnAction(e -> GlobalThreadPool.submit(() -> {
|
||||
|
@ -365,21 +352,6 @@ public class MyFreeCamsTableTab extends Tab implements TabSelectionListener {
|
|||
return selectedModels;
|
||||
}
|
||||
|
||||
private void copyUrl(Model selected) {
|
||||
final var content = new ClipboardContent();
|
||||
content.putString(selected.getUrl());
|
||||
Clipboard.getSystemClipboard().setContent(content);
|
||||
}
|
||||
|
||||
|
||||
private void startRecording(List<Model> selectedModels) {
|
||||
new StartRecordingAction(getTabPane(), selectedModels, mfc.getRecorder()).execute();
|
||||
}
|
||||
|
||||
private void openInPlayer(Model selectedModel) {
|
||||
new PlayAction(getTabPane(), selectedModel).execute();
|
||||
}
|
||||
|
||||
private void addTableColumnIfEnabled(TableColumn<ModelTableRow, ?> tc) {
|
||||
if(isColumnEnabled(tc)) {
|
||||
table.getColumns().add(tc);
|
||||
|
|
Loading…
Reference in New Issue