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
|
4.4.2
|
||||||
========================
|
========================
|
||||||
* Fixed memory leak caused by minimizing to tray
|
* Fixed memory leak caused by minimizing to tray
|
||||||
|
|
|
@ -43,7 +43,7 @@ public class MyFreeCamsTabProvider implements TabProvider {
|
||||||
updateService = new NewModelService();
|
updateService = new NewModelService();
|
||||||
tabs.add(createTab("New", updateService));
|
tabs.add(createTab("New", updateService));
|
||||||
|
|
||||||
tabs.add(new MyFreeCamsTableTab(myFreeCams));
|
tabs.add(new MyFreeCamsTableTab(myFreeCams, recorder));
|
||||||
|
|
||||||
return tabs;
|
return tabs;
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,17 +36,15 @@ import ctbrec.Config;
|
||||||
import ctbrec.GlobalThreadPool;
|
import ctbrec.GlobalThreadPool;
|
||||||
import ctbrec.Model;
|
import ctbrec.Model;
|
||||||
import ctbrec.StringUtil;
|
import ctbrec.StringUtil;
|
||||||
|
import ctbrec.recorder.Recorder;
|
||||||
import ctbrec.recorder.download.StreamSource;
|
import ctbrec.recorder.download.StreamSource;
|
||||||
import ctbrec.sites.mfc.MyFreeCams;
|
import ctbrec.sites.mfc.MyFreeCams;
|
||||||
import ctbrec.sites.mfc.MyFreeCamsModel;
|
import ctbrec.sites.mfc.MyFreeCamsModel;
|
||||||
import ctbrec.sites.mfc.SessionState;
|
import ctbrec.sites.mfc.SessionState;
|
||||||
import ctbrec.sites.mfc.User;
|
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.CustomMouseBehaviorContextMenu;
|
||||||
import ctbrec.ui.controls.SearchBox;
|
import ctbrec.ui.controls.SearchBox;
|
||||||
|
import ctbrec.ui.menu.ModelMenuContributor;
|
||||||
import ctbrec.ui.tabs.TabSelectionListener;
|
import ctbrec.ui.tabs.TabSelectionListener;
|
||||||
import javafx.beans.property.BooleanProperty;
|
import javafx.beans.property.BooleanProperty;
|
||||||
import javafx.beans.property.DoubleProperty;
|
import javafx.beans.property.DoubleProperty;
|
||||||
|
@ -66,6 +64,7 @@ import javafx.event.ActionEvent;
|
||||||
import javafx.geometry.Insets;
|
import javafx.geometry.Insets;
|
||||||
import javafx.geometry.Point2D;
|
import javafx.geometry.Point2D;
|
||||||
import javafx.geometry.Pos;
|
import javafx.geometry.Pos;
|
||||||
|
import javafx.scene.Cursor;
|
||||||
import javafx.scene.control.Button;
|
import javafx.scene.control.Button;
|
||||||
import javafx.scene.control.CheckMenuItem;
|
import javafx.scene.control.CheckMenuItem;
|
||||||
import javafx.scene.control.ContextMenu;
|
import javafx.scene.control.ContextMenu;
|
||||||
|
@ -73,13 +72,12 @@ import javafx.scene.control.Label;
|
||||||
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.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.control.Tooltip;
|
import javafx.scene.control.Tooltip;
|
||||||
import javafx.scene.input.Clipboard;
|
|
||||||
import javafx.scene.input.ClipboardContent;
|
|
||||||
import javafx.scene.input.ContextMenuEvent;
|
import javafx.scene.input.ContextMenuEvent;
|
||||||
import javafx.scene.input.MouseEvent;
|
import javafx.scene.input.MouseEvent;
|
||||||
import javafx.scene.layout.BorderPane;
|
import javafx.scene.layout.BorderPane;
|
||||||
|
@ -102,9 +100,11 @@ public class MyFreeCamsTableTab extends Tab implements TabSelectionListener {
|
||||||
private List<TableColumn<ModelTableRow, ?>> columns = new ArrayList<>();
|
private List<TableColumn<ModelTableRow, ?>> columns = new ArrayList<>();
|
||||||
private ContextMenu popup;
|
private ContextMenu popup;
|
||||||
private long lastJsonWrite = 0;
|
private long lastJsonWrite = 0;
|
||||||
|
private Recorder recorder;
|
||||||
|
|
||||||
public MyFreeCamsTableTab(MyFreeCams mfc) {
|
public MyFreeCamsTableTab(MyFreeCams mfc, Recorder recorder) {
|
||||||
this.mfc = mfc;
|
this.mfc = mfc;
|
||||||
|
this.recorder = recorder;
|
||||||
setText("Tabular");
|
setText("Tabular");
|
||||||
setClosable(false);
|
setClosable(false);
|
||||||
createGui();
|
createGui();
|
||||||
|
@ -306,26 +306,12 @@ public class MyFreeCamsTableTab extends Tab implements TabSelectionListener {
|
||||||
return null;
|
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();
|
ContextMenu menu = new CustomMouseBehaviorContextMenu();
|
||||||
menu.getItems().addAll(startRecording, copyUrl, openInPlayer, openInBrowser, follow);
|
|
||||||
|
|
||||||
if (selectedModels.size() > 1) {
|
ModelMenuContributor.newContributor(getTabPane(), Config.getInstance(), recorder) //
|
||||||
copyUrl.setDisable(true);
|
.withStartStopCallback(m -> getTabPane().setCursor(Cursor.DEFAULT)) //
|
||||||
openInPlayer.setDisable(true);
|
.afterwards(table::refresh)
|
||||||
openInBrowser.setDisable(true);
|
.contributeToMenu(selectedModels, menu);
|
||||||
}
|
|
||||||
|
|
||||||
addDebuggingInDevMode(menu, selectedModels);
|
addDebuggingInDevMode(menu, selectedModels);
|
||||||
|
|
||||||
|
@ -333,6 +319,7 @@ public class MyFreeCamsTableTab extends Tab implements TabSelectionListener {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addDebuggingInDevMode(ContextMenu menu, List<Model> selectedModels) {
|
private void addDebuggingInDevMode(ContextMenu menu, List<Model> selectedModels) {
|
||||||
|
menu.getItems().add(new SeparatorMenuItem());
|
||||||
if (Objects.equals(System.getenv("CTBREC_DEV"), "1")) {
|
if (Objects.equals(System.getenv("CTBREC_DEV"), "1")) {
|
||||||
var debug = new MenuItem("debug");
|
var debug = new MenuItem("debug");
|
||||||
debug.setOnAction(e -> GlobalThreadPool.submit(() -> {
|
debug.setOnAction(e -> GlobalThreadPool.submit(() -> {
|
||||||
|
@ -365,21 +352,6 @@ public class MyFreeCamsTableTab extends Tab implements TabSelectionListener {
|
||||||
return selectedModels;
|
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) {
|
private void addTableColumnIfEnabled(TableColumn<ModelTableRow, ?> tc) {
|
||||||
if(isColumnEnabled(tc)) {
|
if(isColumnEnabled(tc)) {
|
||||||
table.getColumns().add(tc);
|
table.getColumns().add(tc);
|
||||||
|
|
Loading…
Reference in New Issue