From fc42b21a709fa209834c8eb152819c1854aaac09 Mon Sep 17 00:00:00 2001 From: 0xboobface <0xboobface@gmail.com> Date: Fri, 27 Dec 2019 19:34:35 +0100 Subject: [PATCH] Code cleanup --- .../java/ctbrec/ui/RecordedModelsTab.java | 140 ++++++++---------- 1 file changed, 58 insertions(+), 82 deletions(-) diff --git a/client/src/main/java/ctbrec/ui/RecordedModelsTab.java b/client/src/main/java/ctbrec/ui/RecordedModelsTab.java index 31f51a1a..c797ef06 100644 --- a/client/src/main/java/ctbrec/ui/RecordedModelsTab.java +++ b/client/src/main/java/ctbrec/ui/RecordedModelsTab.java @@ -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> updateService; @@ -83,7 +83,7 @@ public class RecordedModelsTab extends Tab implements TabSelectionListener { FlowPane grid = new FlowPane(); ScrollPane scrollPane = new ScrollPane(); - TableView table = new TableView(); + TableView table = new TableView<>(); ObservableList observableModels = FXCollections.observableArrayList(); ObservableList 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 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 pausedModels = selectedModels.stream().filter(m -> m.isSuspended()).collect(Collectors.toList()); + List pausedModels = selectedModels.stream().filter(JavaFxModel::isSuspended).collect(Collectors.toList()); List 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> createTask() { return new Task>() { @Override - public List call() throws InvalidKeyException, NoSuchAlgorithmException, IllegalStateException, IOException { + public List call() throws InvalidKeyException, NoSuchAlgorithmException, IOException { LOG.trace("Updating recorded models"); List recordings = recorder.getRecordings(); List 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) { - Thread t = new Thread(r); - t.setDaemon(true); - t.setName("RecordedModelsTab UpdateService"); - return t; - } + 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 onSuccess = (m) -> { + Function 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 onFail = (t) -> { - LOG.error("Error while switching stream resolution", t); + Function 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 selectedModels) { - List models = selectedModels.stream().map(jfxm -> jfxm.getDelegate()).collect(Collectors.toList()); - new StopRecordingAction(getTabPane(), models, recorder).execute((m) -> { - Platform.runLater(() -> { - table.getSelectionModel().clearSelection(table.getItems().indexOf(m)); - table.getItems().remove(m); - }); - }); - }; + List 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 selectedModels) { - List models = selectedModels.stream().map(jfxm -> jfxm.getDelegate()).collect(Collectors.toList()); + List models = selectedModels.stream().map(JavaFxModel::getDelegate).collect(Collectors.toList()); new PauseAction(getTabPane(), models, recorder).execute(); - }; + } private void resumeRecording(List selectedModels) { - List models = selectedModels.stream().map(jfxm -> jfxm.getDelegate()).collect(Collectors.toList()); + List 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;