Use ModelMenuContributor to add a model sub menu on the RecordingsTab

This commit is contained in:
0xb00bface 2021-07-18 15:22:05 +02:00
parent 08115fabea
commit e1dbdb00f9
1 changed files with 10 additions and 9 deletions

View File

@ -48,7 +48,6 @@ import ctbrec.ui.FileDownload;
import ctbrec.ui.JavaFxRecording;
import ctbrec.ui.Player;
import ctbrec.ui.ShutdownListener;
import ctbrec.ui.action.FollowAction;
import ctbrec.ui.action.PauseAction;
import ctbrec.ui.action.PlayAction;
import ctbrec.ui.action.StopRecordingAction;
@ -56,6 +55,7 @@ import ctbrec.ui.controls.CustomMouseBehaviorContextMenu;
import ctbrec.ui.controls.DateTimeCellFactory;
import ctbrec.ui.controls.Dialogs;
import ctbrec.ui.controls.Toast;
import ctbrec.ui.menu.ModelMenuContributor;
import ctbrec.ui.tabs.recorded.RecordedModelsTab.ModelName;
import javafx.application.Platform;
import javafx.beans.property.SimpleObjectProperty;
@ -70,6 +70,7 @@ import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.ButtonType;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.Label;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuItem;
import javafx.scene.control.ProgressBar;
import javafx.scene.control.ScrollPane;
@ -435,10 +436,14 @@ public class RecordingsTab extends Tab implements TabSelectionListener, Shutdown
deleteRecording.setDisable(recordings.stream().allMatch(Recording::isPinned));
}
var followModels = new MenuItem("Follow Model");
followModels.setOnAction(e -> follow(recordings.stream().map(JavaFxRecording::getModel).collect(Collectors.toList())));
followModels.setDisable(!recordings.stream().map(JavaFxRecording::getModel).allMatch(m -> m.getSite().supportsFollow() && m.getSite().credentialsAvailable()));
contextMenu.getItems().add(followModels);
var tmp = new CustomMouseBehaviorContextMenu();
ModelMenuContributor.newContributor(getTabPane(), Config.getInstance(), recorder) //
.withStartStopCallback(m -> getTabPane().setCursor(Cursor.DEFAULT)) //
.afterwards(table::refresh)
.contributeToMenu(List.of(recordings.get(0).getModel()), tmp);
var modelSubMenu = new Menu("Model");
modelSubMenu.getItems().addAll(tmp.getItems());
contextMenu.getItems().add(modelSubMenu);
var openDir = new MenuItem("Open directory");
openDir.setOnAction(e -> onOpenDirectory(first));
@ -479,10 +484,6 @@ public class RecordingsTab extends Tab implements TabSelectionListener, Shutdown
return contextMenu;
}
private void follow(List<Model> selectedModels) {
new FollowAction(getTabPane(), selectedModels).execute();
}
private void stopRecording(List<Model> selectedModels) {
var confirmed = true;
if (Config.getInstance().getSettings().confirmationForDangerousActions) {