forked from j62/ctbrec
Add stop, pause and follow actions to context menu
This commit is contained in:
parent
3db5d16bb5
commit
69e13a7f37
|
@ -23,11 +23,13 @@ import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.locks.Lock;
|
import java.util.concurrent.locks.Lock;
|
||||||
import java.util.concurrent.locks.ReentrantLock;
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import ctbrec.Config;
|
import ctbrec.Config;
|
||||||
|
import ctbrec.Model;
|
||||||
import ctbrec.Recording;
|
import ctbrec.Recording;
|
||||||
import ctbrec.Recording.State;
|
import ctbrec.Recording.State;
|
||||||
import ctbrec.StringUtil;
|
import ctbrec.StringUtil;
|
||||||
|
@ -45,6 +47,9 @@ import ctbrec.ui.DesktopIntegration;
|
||||||
import ctbrec.ui.FileDownload;
|
import ctbrec.ui.FileDownload;
|
||||||
import ctbrec.ui.JavaFxRecording;
|
import ctbrec.ui.JavaFxRecording;
|
||||||
import ctbrec.ui.Player;
|
import ctbrec.ui.Player;
|
||||||
|
import ctbrec.ui.action.FollowAction;
|
||||||
|
import ctbrec.ui.action.PauseAction;
|
||||||
|
import ctbrec.ui.action.StopRecordingAction;
|
||||||
import ctbrec.ui.controls.DateTimeCellFactory;
|
import ctbrec.ui.controls.DateTimeCellFactory;
|
||||||
import ctbrec.ui.controls.Dialogs;
|
import ctbrec.ui.controls.Dialogs;
|
||||||
import ctbrec.ui.controls.Toast;
|
import ctbrec.ui.controls.Toast;
|
||||||
|
@ -191,9 +196,7 @@ public class RecordingsTab extends Tab implements TabSelectionListener {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isDownloadRunning() {
|
public boolean isDownloadRunning() {
|
||||||
return observableRecordings.stream()
|
return observableRecordings.stream().map(Recording::getStatus).anyMatch(s -> s == DOWNLOADING);
|
||||||
.map(Recording::getStatus)
|
|
||||||
.anyMatch(s -> s == DOWNLOADING);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private TableCell<JavaFxRecording, Number> createSizeCell() {
|
private TableCell<JavaFxRecording, Number> createSizeCell() {
|
||||||
|
@ -397,19 +400,17 @@ public class RecordingsTab extends Tab implements TabSelectionListener {
|
||||||
openContactSheet.setDisable(first.getContactSheet().isEmpty());
|
openContactSheet.setDisable(first.getContactSheet().isEmpty());
|
||||||
contextMenu.getItems().add(openContactSheet);
|
contextMenu.getItems().add(openContactSheet);
|
||||||
|
|
||||||
// TODO find a way to reenable this
|
MenuItem stopRecording = new MenuItem("Stop Recording");
|
||||||
// MenuItem stopRecording = new MenuItem("Stop recording");
|
stopRecording.setOnAction(e -> stopRecording(recordings.stream().map(r -> r.getModel()).collect(Collectors.toList())));
|
||||||
// stopRecording.setOnAction((e) -> {
|
if (recordings.stream().anyMatch(r -> r.getStatus() == RECORDING)) {
|
||||||
// Model m = site.createModel(recording.getModelName());
|
contextMenu.getItems().add(stopRecording);
|
||||||
// try {
|
}
|
||||||
// recorder.stopRecording(m);
|
|
||||||
// } catch (Exception e1) {
|
MenuItem pauseRecording = new MenuItem("Pause Recording");
|
||||||
// showErrorDialog("Stop recording", "Couldn't stop recording of model " + m.getName(), e1);
|
pauseRecording.setOnAction(e -> pauseRecording(recordings.stream().map(r -> r.getModel()).collect(Collectors.toList())));
|
||||||
// }
|
if (recordings.stream().anyMatch(r -> r.getStatus() == RECORDING)) {
|
||||||
// });
|
contextMenu.getItems().add(pauseRecording);
|
||||||
// if(recording.getStatus() == STATUS.RECORDING) {
|
}
|
||||||
// contextMenu.getItems().add(stopRecording);
|
|
||||||
// }
|
|
||||||
|
|
||||||
MenuItem deleteRecording = new MenuItem("Delete");
|
MenuItem deleteRecording = new MenuItem("Delete");
|
||||||
deleteRecording.setOnAction(e -> delete(recordings));
|
deleteRecording.setOnAction(e -> delete(recordings));
|
||||||
|
@ -418,6 +419,11 @@ public class RecordingsTab extends Tab implements TabSelectionListener {
|
||||||
deleteRecording.setDisable(recordings.stream().allMatch(Recording::isPinned));
|
deleteRecording.setDisable(recordings.stream().allMatch(Recording::isPinned));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MenuItem followModels = new MenuItem("Follow Model");
|
||||||
|
followModels.setOnAction(e -> follow(recordings.stream().map(r -> r.getModel()).collect(Collectors.toList())));
|
||||||
|
followModels.setDisable(!recordings.stream().map(r -> r.getModel()).allMatch(m -> m.getSite().supportsFollow() && m.getSite().credentialsAvailable()));
|
||||||
|
contextMenu.getItems().add(followModels);
|
||||||
|
|
||||||
MenuItem openDir = new MenuItem("Open directory");
|
MenuItem openDir = new MenuItem("Open directory");
|
||||||
openDir.setOnAction(e -> onOpenDirectory(first));
|
openDir.setOnAction(e -> onOpenDirectory(first));
|
||||||
if (Config.getInstance().getSettings().localRecording) {
|
if (Config.getInstance().getSettings().localRecording) {
|
||||||
|
@ -457,6 +463,18 @@ public class RecordingsTab extends Tab implements TabSelectionListener {
|
||||||
return contextMenu;
|
return contextMenu;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void follow(List<Model> selectedModels) {
|
||||||
|
new FollowAction(getTabPane(), selectedModels).execute();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void stopRecording(List<Model> selectedModels) {
|
||||||
|
new StopRecordingAction(getTabPane(), selectedModels, recorder).execute();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void pauseRecording(List<Model> selectedModels) {
|
||||||
|
new PauseAction(getTabPane(), selectedModels, recorder).execute();
|
||||||
|
}
|
||||||
|
|
||||||
private void openContactSheet(JavaFxRecording recording) {
|
private void openContactSheet(JavaFxRecording recording) {
|
||||||
if (config.getSettings().localRecording) {
|
if (config.getSettings().localRecording) {
|
||||||
recording.getContactSheet().ifPresent(f -> new Thread(() -> DesktopIntegration.open(f)).start());
|
recording.getContactSheet().ifPresent(f -> new Thread(() -> DesktopIntegration.open(f)).start());
|
||||||
|
@ -665,7 +683,8 @@ public class RecordingsTab extends Tab implements TabSelectionListener {
|
||||||
Platform.runLater(() -> {
|
Platform.runLater(() -> {
|
||||||
recording.setStatus(FINISHED);
|
recording.setStatus(FINISHED);
|
||||||
recording.setProgress(-1);
|
recording.setProgress(-1);
|
||||||
RecordingStateChangedEvent evt = new RecordingStateChangedEvent(target, recording.getStatus(), recording.getModel(), recording.getStartDate());
|
RecordingStateChangedEvent evt = new RecordingStateChangedEvent(target, recording.getStatus(), recording.getModel(),
|
||||||
|
recording.getStartDate());
|
||||||
EventBusHolder.BUS.post(evt);
|
EventBusHolder.BUS.post(evt);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue