forked from j62/ctbrec
Code cleanup
This commit is contained in:
parent
87943fac95
commit
fc42b21a70
|
@ -11,7 +11,6 @@ import java.util.Objects;
|
|||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ThreadFactory;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
import java.util.function.Function;
|
||||
|
@ -33,6 +32,7 @@ import ctbrec.ui.action.PlayAction;
|
|||
import ctbrec.ui.action.ResumeAction;
|
||||
import ctbrec.ui.action.StopRecordingAction;
|
||||
import ctbrec.ui.controls.AutoFillTextField;
|
||||
import ctbrec.ui.controls.Dialogs;
|
||||
import ctbrec.ui.controls.SearchBox;
|
||||
import javafx.application.Platform;
|
||||
import javafx.beans.property.SimpleStringProperty;
|
||||
|
@ -74,7 +74,7 @@ import javafx.scene.layout.Priority;
|
|||
import javafx.util.Duration;
|
||||
|
||||
public class RecordedModelsTab extends Tab implements TabSelectionListener {
|
||||
private static final transient Logger LOG = LoggerFactory.getLogger(RecordedModelsTab.class);
|
||||
private static final Logger LOG = LoggerFactory.getLogger(RecordedModelsTab.class);
|
||||
|
||||
private ReentrantLock lock = new ReentrantLock();
|
||||
private ScheduledService<List<JavaFxModel>> updateService;
|
||||
|
@ -83,7 +83,7 @@ public class RecordedModelsTab extends Tab implements TabSelectionListener {
|
|||
|
||||
FlowPane grid = new FlowPane();
|
||||
ScrollPane scrollPane = new ScrollPane();
|
||||
TableView<JavaFxModel> table = new TableView<JavaFxModel>();
|
||||
TableView<JavaFxModel> table = new TableView<>();
|
||||
ObservableList<JavaFxModel> observableModels = FXCollections.observableArrayList();
|
||||
ObservableList<JavaFxModel> filteredModels = FXCollections.observableArrayList();
|
||||
ContextMenu popup;
|
||||
|
@ -119,7 +119,7 @@ public class RecordedModelsTab extends Tab implements TabSelectionListener {
|
|||
table.setEditable(true);
|
||||
table.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
|
||||
PreviewPopupHandler previewPopupHandler = new PreviewPopupHandler(table);
|
||||
table.setRowFactory((tableview) -> {
|
||||
table.setRowFactory(tableview -> {
|
||||
TableRow<JavaFxModel> row = new TableRow<>();
|
||||
row.addEventHandler(MouseEvent.ANY, previewPopupHandler);
|
||||
return row;
|
||||
|
@ -167,7 +167,7 @@ public class RecordedModelsTab extends Tab implements TabSelectionListener {
|
|||
@Override
|
||||
public Object getBean() {
|
||||
return null;
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public String get() {
|
||||
|
@ -189,9 +189,9 @@ public class RecordedModelsTab extends Tab implements TabSelectionListener {
|
|||
});
|
||||
table.addEventHandler(MouseEvent.MOUSE_CLICKED, event -> {
|
||||
if (event.getButton() == MouseButton.PRIMARY && event.getClickCount() == 2) {
|
||||
JavaFxModel model = table.getSelectionModel().getSelectedItem();
|
||||
if(model != null) {
|
||||
new PlayAction(table, model).execute();
|
||||
JavaFxModel selectedModel = table.getSelectionModel().getSelectedItem();
|
||||
if(selectedModel != null) {
|
||||
new PlayAction(table, selectedModel).execute();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -205,7 +205,7 @@ public class RecordedModelsTab extends Tab implements TabSelectionListener {
|
|||
if (event.getCode() == KeyCode.DELETE) {
|
||||
stopAction(selectedModels);
|
||||
} else if (event.getCode() == KeyCode.P) {
|
||||
List<JavaFxModel> pausedModels = selectedModels.stream().filter(m -> m.isSuspended()).collect(Collectors.toList());
|
||||
List<JavaFxModel> pausedModels = selectedModels.stream().filter(JavaFxModel::isSuspended).collect(Collectors.toList());
|
||||
List<JavaFxModel> runningModels = selectedModels.stream().filter(m -> !m.isSuspended()).collect(Collectors.toList());
|
||||
resumeRecording(pausedModels);
|
||||
pauseRecording(runningModels);
|
||||
|
@ -274,40 +274,29 @@ public class RecordedModelsTab extends Tab implements TabSelectionListener {
|
|||
} else {
|
||||
addModelByName(input);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private void addModelByUrl(String url) {
|
||||
for (Site site : sites) {
|
||||
Model model = site.createModelFromUrl(url);
|
||||
if (model != null) {
|
||||
Model newModel = site.createModelFromUrl(url);
|
||||
if (newModel != null) {
|
||||
try {
|
||||
recorder.startRecording(model);
|
||||
recorder.startRecording(newModel);
|
||||
} catch (IOException | InvalidKeyException | NoSuchAlgorithmException | IllegalStateException e1) {
|
||||
Alert alert = new AutosizeAlert(Alert.AlertType.ERROR, getTabPane().getScene());
|
||||
alert.setTitle("Error");
|
||||
alert.setHeaderText("Couldn't add model");
|
||||
alert.setContentText("The model " + model.getName() + " could not be added: " + e1.getLocalizedMessage());
|
||||
alert.showAndWait();
|
||||
Dialogs.showError(getTabPane().getScene(), "Couldn't add model", "The model " + newModel.getName() + " could not be added: ", e1);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Alert alert = new AutosizeAlert(Alert.AlertType.ERROR, getTabPane().getScene());
|
||||
alert.setTitle("Unknown URL format");
|
||||
alert.setHeaderText("Couldn't add model");
|
||||
alert.setContentText("The URL you entered has an unknown format or the function does not support this site, yet");
|
||||
alert.showAndWait();
|
||||
Dialogs.showError(getTabPane().getScene(), "Unknown URL format",
|
||||
"The URL you entered has an unknown format or the function does not support this site, yet", null);
|
||||
}
|
||||
|
||||
private void addModelByName(String siteModelCombo) {
|
||||
String[] parts = model.getText().trim().split(":");
|
||||
String[] parts = siteModelCombo.trim().split(":");
|
||||
if (parts.length != 2) {
|
||||
Alert alert = new AutosizeAlert(Alert.AlertType.ERROR, getTabPane().getScene());
|
||||
alert.setTitle("Wrong format");
|
||||
alert.setHeaderText("Couldn't add model");
|
||||
alert.setContentText("Use something like \"MyFreeCams:ModelName\"");
|
||||
alert.showAndWait();
|
||||
Dialogs.showError(getTabPane().getScene(), "Wrong input format", "Use something like \"MyFreeCams:ModelName\"", null);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -319,11 +308,7 @@ public class RecordedModelsTab extends Tab implements TabSelectionListener {
|
|||
Model m = site.createModel(modelName);
|
||||
recorder.startRecording(m);
|
||||
} catch (IOException | InvalidKeyException | NoSuchAlgorithmException | IllegalStateException e1) {
|
||||
Alert alert = new AutosizeAlert(Alert.AlertType.ERROR, getTabPane().getScene());
|
||||
alert.setTitle("Error");
|
||||
alert.setHeaderText("Couldn't add model");
|
||||
alert.setContentText("The model " + modelName + " could not be added: " + e1.getLocalizedMessage());
|
||||
alert.showAndWait();
|
||||
Dialogs.showError(getTabPane().getScene(), "Couldn't add model", "The model " + modelName + " could not be added:", e1);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
@ -360,7 +345,7 @@ public class RecordedModelsTab extends Tab implements TabSelectionListener {
|
|||
if (index == -1) {
|
||||
observableModels.add(updatedModel);
|
||||
updatedModel.getPausedProperty().addListener((obs, oldV, newV) -> {
|
||||
if (newV) {
|
||||
if (newV.booleanValue()) {
|
||||
if(!recorder.isSuspended(updatedModel)) {
|
||||
pauseRecording(Collections.singletonList(updatedModel));
|
||||
}
|
||||
|
@ -393,9 +378,7 @@ public class RecordedModelsTab extends Tab implements TabSelectionListener {
|
|||
filter(filter.getText());
|
||||
table.sort();
|
||||
});
|
||||
updateService.setOnFailed((event) -> {
|
||||
LOG.info("Couldn't get list of models from recorder", event.getSource().getException());
|
||||
});
|
||||
updateService.setOnFailed(event -> LOG.info("Couldn't get list of models from recorder", event.getSource().getException()));
|
||||
}
|
||||
|
||||
private void filter(String filter) {
|
||||
|
@ -445,13 +428,13 @@ public class RecordedModelsTab extends Tab implements TabSelectionListener {
|
|||
protected Task<List<JavaFxModel>> createTask() {
|
||||
return new Task<List<JavaFxModel>>() {
|
||||
@Override
|
||||
public List<JavaFxModel> call() throws InvalidKeyException, NoSuchAlgorithmException, IllegalStateException, IOException {
|
||||
public List<JavaFxModel> call() throws InvalidKeyException, NoSuchAlgorithmException, IOException {
|
||||
LOG.trace("Updating recorded models");
|
||||
List<Recording> recordings = recorder.getRecordings();
|
||||
List<Model> onlineModels = recorder.getOnlineModels();
|
||||
return recorder.getModels()
|
||||
.stream()
|
||||
.map(m -> new JavaFxModel(m))
|
||||
.map(JavaFxModel::new)
|
||||
.peek(fxm -> {
|
||||
for (Recording recording : recordings) {
|
||||
if(recording.getStatus() == Recording.State.RECORDING &&
|
||||
|
@ -474,14 +457,11 @@ public class RecordedModelsTab extends Tab implements TabSelectionListener {
|
|||
};
|
||||
}
|
||||
};
|
||||
ExecutorService executor = Executors.newSingleThreadExecutor(new ThreadFactory() {
|
||||
@Override
|
||||
public Thread newThread(Runnable r) {
|
||||
ExecutorService executor = Executors.newSingleThreadExecutor(r -> {
|
||||
Thread t = new Thread(r);
|
||||
t.setDaemon(true);
|
||||
t.setName("RecordedModelsTab UpdateService");
|
||||
return t;
|
||||
}
|
||||
});
|
||||
updateService.setExecutor(executor);
|
||||
return updateService;
|
||||
|
@ -520,19 +500,19 @@ public class RecordedModelsTab extends Tab implements TabSelectionListener {
|
|||
});
|
||||
|
||||
MenuItem pauseRecording = new MenuItem("Pause Recording");
|
||||
pauseRecording.setOnAction((e) -> pauseRecording(selectedModels));
|
||||
pauseRecording.setOnAction(e -> pauseRecording(selectedModels));
|
||||
MenuItem resumeRecording = new MenuItem("Resume Recording");
|
||||
resumeRecording.setOnAction((e) -> resumeRecording(selectedModels));
|
||||
resumeRecording.setOnAction(e -> resumeRecording(selectedModels));
|
||||
MenuItem openInBrowser = new MenuItem("Open in Browser");
|
||||
openInBrowser.setOnAction((e) -> DesktopIntegration.open(selectedModels.get(0).getUrl()));
|
||||
openInBrowser.setOnAction(e -> DesktopIntegration.open(selectedModels.get(0).getUrl()));
|
||||
MenuItem openInPlayer = new MenuItem("Open in Player");
|
||||
openInPlayer.setOnAction((e) -> openInPlayer(selectedModels.get(0)));
|
||||
openInPlayer.setOnAction(e -> openInPlayer(selectedModels.get(0)));
|
||||
MenuItem switchStreamSource = new MenuItem("Switch resolution");
|
||||
switchStreamSource.setOnAction((e) -> switchStreamSource(selectedModels.get(0)));
|
||||
switchStreamSource.setOnAction(e -> switchStreamSource(selectedModels.get(0)));
|
||||
MenuItem follow = new MenuItem("Follow");
|
||||
follow.setOnAction((e) -> follow(selectedModels));
|
||||
follow.setOnAction(e -> follow(selectedModels));
|
||||
MenuItem notes = new MenuItem("Notes");
|
||||
notes.setOnAction((e) -> notes(selectedModels));
|
||||
notes.setOnAction(e -> notes(selectedModels));
|
||||
|
||||
ContextMenu menu = new ContextMenu(stop);
|
||||
if (selectedModels.size() == 1) {
|
||||
|
@ -566,35 +546,33 @@ public class RecordedModelsTab extends Tab implements TabSelectionListener {
|
|||
}
|
||||
|
||||
private void switchStreamSource(JavaFxModel fxModel) {
|
||||
String couldntSwitchHeaderText = "Couldn't switch stream resolution";
|
||||
|
||||
try {
|
||||
if (!fxModel.isOnline(true)) {
|
||||
Alert alert = new AutosizeAlert(Alert.AlertType.INFORMATION, getTabPane().getScene());
|
||||
alert.setTitle("Switch resolution");
|
||||
alert.setHeaderText("Couldn't switch stream resolution");
|
||||
alert.setContentText("The resolution can only be changed, when the model is online");
|
||||
alert.showAndWait();
|
||||
Dialogs.showError(getTabPane().getScene(), couldntSwitchHeaderText, "The resolution can only be changed, when the model is online", null);
|
||||
return;
|
||||
}
|
||||
} catch (IOException | ExecutionException | InterruptedException e1) {
|
||||
Alert alert = new AutosizeAlert(Alert.AlertType.INFORMATION, getTabPane().getScene());
|
||||
alert.setTitle("Switch resolution");
|
||||
alert.setHeaderText("Couldn't switch stream resolution");
|
||||
alert.setContentText("An error occured while checking, if the model is online");
|
||||
alert.showAndWait();
|
||||
} catch (InterruptedException e1) {
|
||||
Thread.currentThread().interrupt();
|
||||
Dialogs.showError(getTabPane().getScene(), couldntSwitchHeaderText, "An error occured while checking, if the model is online", null);
|
||||
return;
|
||||
} catch (IOException | ExecutionException e1) {
|
||||
Dialogs.showError(getTabPane().getScene(), couldntSwitchHeaderText, "An error occured while checking, if the model is online", null);
|
||||
return;
|
||||
}
|
||||
|
||||
Function<Model, Void> onSuccess = (m) -> {
|
||||
Function<Model, Void> onSuccess = m -> {
|
||||
try {
|
||||
recorder.switchStreamSource(m);
|
||||
} catch (InvalidKeyException | NoSuchAlgorithmException | IllegalStateException | IOException e) {
|
||||
LOG.error("Error while switching stream resolution", e);
|
||||
LOG.error(couldntSwitchHeaderText, e);
|
||||
showStreamSwitchErrorDialog(e);
|
||||
}
|
||||
return null;
|
||||
};
|
||||
Function<Throwable, Void> onFail = (t) -> {
|
||||
LOG.error("Error while switching stream resolution", t);
|
||||
Function<Throwable, Void> onFail = t -> {
|
||||
LOG.error(couldntSwitchHeaderText, t);
|
||||
showStreamSwitchErrorDialog(t);
|
||||
return null;
|
||||
};
|
||||
|
@ -614,22 +592,20 @@ public class RecordedModelsTab extends Tab implements TabSelectionListener {
|
|||
}
|
||||
|
||||
private void stopAction(List<JavaFxModel> selectedModels) {
|
||||
List<Model> models = selectedModels.stream().map(jfxm -> jfxm.getDelegate()).collect(Collectors.toList());
|
||||
new StopRecordingAction(getTabPane(), models, recorder).execute((m) -> {
|
||||
Platform.runLater(() -> {
|
||||
List<Model> models = selectedModels.stream().map(JavaFxModel::getDelegate).collect(Collectors.toList());
|
||||
new StopRecordingAction(getTabPane(), models, recorder).execute(m -> Platform.runLater(() -> {
|
||||
table.getSelectionModel().clearSelection(table.getItems().indexOf(m));
|
||||
table.getItems().remove(m);
|
||||
});
|
||||
});
|
||||
};
|
||||
}));
|
||||
}
|
||||
|
||||
private void pauseRecording(List<JavaFxModel> selectedModels) {
|
||||
List<Model> models = selectedModels.stream().map(jfxm -> jfxm.getDelegate()).collect(Collectors.toList());
|
||||
List<Model> models = selectedModels.stream().map(JavaFxModel::getDelegate).collect(Collectors.toList());
|
||||
new PauseAction(getTabPane(), models, recorder).execute();
|
||||
};
|
||||
}
|
||||
|
||||
private void resumeRecording(List<JavaFxModel> selectedModels) {
|
||||
List<Model> models = selectedModels.stream().map(jfxm -> jfxm.getDelegate()).collect(Collectors.toList());
|
||||
List<Model> models = selectedModels.stream().map(JavaFxModel::getDelegate).collect(Collectors.toList());
|
||||
new ResumeAction(getTabPane(), models, recorder).execute();
|
||||
}
|
||||
|
||||
|
@ -644,7 +620,7 @@ public class RecordedModelsTab extends Tab implements TabSelectionListener {
|
|||
columnWidths[i] = table.getColumns().get(i).getWidth();
|
||||
}
|
||||
Config.getInstance().getSettings().recordedModelsColumnWidths = columnWidths;
|
||||
};
|
||||
}
|
||||
|
||||
private void restoreState() {
|
||||
String sortCol = Config.getInstance().getSettings().recordedModelsSortColumn;
|
||||
|
|
Loading…
Reference in New Issue