forked from j62/ctbrec
1
0
Fork 0

Add "Follow" to the context menu of the recorded models tab

This commit is contained in:
0xboobface 2018-12-04 17:09:19 +01:00
parent 1f6e03979e
commit 9791427aeb
1 changed files with 23 additions and 10 deletions

View File

@ -3,6 +3,7 @@ package ctbrec.ui;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@ -296,13 +297,13 @@ public class RecordedModelsTab extends Tab implements TabSelectionListener {
massEdit(models, action);
}
private void massEdit(List<Model> models, Consumer<Model> action) {
getTabPane().setCursor(Cursor.WAIT);
private void massEdit(List<? extends Model> models, Consumer<Model> action) {
table.setCursor(Cursor.WAIT);
threadPool.submit(() -> {
for (Model model : models) {
action.accept(model);
}
Platform.runLater(() -> getTabPane().setCursor(Cursor.DEFAULT));
Platform.runLater(() -> table.setCursor(Cursor.DEFAULT));
});
}
@ -443,6 +444,8 @@ public class RecordedModelsTab extends Tab implements TabSelectionListener {
openInPlayer.setOnAction((e) -> openInPlayer(selectedModels.get(0)));
MenuItem switchStreamSource = new MenuItem("Switch resolution");
switchStreamSource.setOnAction((e) -> switchStreamSource(selectedModels.get(0)));
MenuItem follow = new MenuItem("Follow");
follow.setOnAction((e) -> follow(selectedModels));
ContextMenu menu = new ContextMenu(stop);
if (selectedModels.size() == 1) {
@ -450,7 +453,7 @@ public class RecordedModelsTab extends Tab implements TabSelectionListener {
} else {
menu.getItems().addAll(resumeRecording, pauseRecording);
}
menu.getItems().addAll(copyUrl, openInPlayer, openInBrowser, switchStreamSource);
menu.getItems().addAll(copyUrl, openInPlayer, openInBrowser, switchStreamSource, follow);
if (selectedModels.size() > 1) {
copyUrl.setDisable(true);
@ -462,6 +465,19 @@ public class RecordedModelsTab extends Tab implements TabSelectionListener {
return menu;
}
private void follow(ObservableList<JavaFxModel> selectedModels) {
Consumer<Model> action = (m) -> {
try {
m.follow();
} catch(Throwable e) {
LOG.error("Couldn't follow model {}", m, e);
Platform.runLater(() ->
showErrorDialog(e, "Couldn't follow model", "Following " + m.getName() + " failed: " + e.getMessage()));
}
};
massEdit(new ArrayList<JavaFxModel>(selectedModels), action);
}
private void openInPlayer(JavaFxModel selectedModel) {
table.setCursor(Cursor.WAIT);
new Thread(() -> {
@ -533,8 +549,7 @@ public class RecordedModelsTab extends Tab implements TabSelectionListener {
showErrorDialog(e, "Couldn't stop recording", "Stopping recording of " + m.getName() + " failed"));
}
};
List<Model> models = selectedModels.stream().map(jfxm -> jfxm.getDelegate()).collect(Collectors.toList());
massEdit(models, action);
massEdit(new ArrayList<JavaFxModel>(selectedModels), action);
};
private void pauseRecording(List<JavaFxModel> selectedModels) {
@ -547,8 +562,7 @@ public class RecordedModelsTab extends Tab implements TabSelectionListener {
showErrorDialog(e, "Couldn't pause recording of model", "Pausing recording of " + m.getName() + " failed"));
}
};
List<Model> models = selectedModels.stream().map(jfxm -> jfxm.getDelegate()).collect(Collectors.toList());
massEdit(models, action);
massEdit(new ArrayList<JavaFxModel>(selectedModels), action);
};
private void resumeRecording(List<JavaFxModel> selectedModels) {
@ -561,8 +575,7 @@ public class RecordedModelsTab extends Tab implements TabSelectionListener {
showErrorDialog(e, "Couldn't resume recording of model", "Resuming recording of " + m.getName() + " failed"));
}
};
List<Model> models = selectedModels.stream().map(jfxm -> jfxm.getDelegate()).collect(Collectors.toList());
massEdit(models, action);
massEdit(new ArrayList<JavaFxModel>(selectedModels), action);
}
public void saveState() {