forked from j62/ctbrec
1
0
Fork 0

Code cleanup

This commit is contained in:
0xboobface 2019-12-27 19:34:35 +01:00
parent 87943fac95
commit fc42b21a70
1 changed files with 58 additions and 82 deletions

View File

@ -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;