diff --git a/client/.classpath b/client/.classpath
index 34bb78b4..d8ababe6 100644
--- a/client/.classpath
+++ b/client/.classpath
@@ -11,11 +11,7 @@
-
-
-
-
-
+
diff --git a/client/.settings/org.eclipse.jdt.core.prefs b/client/.settings/org.eclipse.jdt.core.prefs
index 3b784bcd..9729e145 100644
--- a/client/.settings/org.eclipse.jdt.core.prefs
+++ b/client/.settings/org.eclipse.jdt.core.prefs
@@ -12,5 +12,5 @@ org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
-org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.release=enabled
org.eclipse.jdt.core.compiler.source=15
diff --git a/client/src/main/java/ctbrec/docs/AbstractDocServlet.java b/client/src/main/java/ctbrec/docs/AbstractDocServlet.java
index 5dd00904..d02ae95f 100644
--- a/client/src/main/java/ctbrec/docs/AbstractDocServlet.java
+++ b/client/src/main/java/ctbrec/docs/AbstractDocServlet.java
@@ -1,5 +1,7 @@
package ctbrec.docs;
+import static java.nio.charset.StandardCharsets.*;
+
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
@@ -7,7 +9,6 @@ import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLDecoder;
-import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -32,13 +33,13 @@ public abstract class AbstractDocServlet extends HttpServlet {
if(resourceAsStream == null) {
throw new FileNotFoundException();
}
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- int length = 0;
- byte[] buffer = new byte[1024];
+ var out = new ByteArrayOutputStream();
+ var length = 0;
+ var buffer = new byte[1024];
while( (length = resourceAsStream.read(buffer)) >= 0 ) {
out.write(buffer, 0, length);
}
- return new String(out.toByteArray(), "utf-8");
+ return new String(out.toByteArray(), UTF_8);
}
String getHeader() throws IOException {
@@ -66,15 +67,15 @@ public abstract class AbstractDocServlet extends HttpServlet {
private void indexJar(URL resource, List pages) throws IOException {
String fileUrl = resource.getFile();
- fileUrl = URLDecoder.decode(fileUrl, StandardCharsets.UTF_8);
+ fileUrl = URLDecoder.decode(fileUrl, UTF_8);
int colon = fileUrl.indexOf(':');
int exclamation = fileUrl.indexOf('!');
- String jar = fileUrl.substring(colon + 1, exclamation);
- String internalFile = fileUrl.substring(exclamation + 2);
- try (JarFile jarFile = new JarFile(jar)) {
+ var jar = fileUrl.substring(colon + 1, exclamation);
+ var internalFile = fileUrl.substring(exclamation + 2);
+ try (var jarFile = new JarFile(jar)) {
Enumeration entries = jarFile.entries();
while (entries.hasMoreElements()) {
- JarEntry jarEntry = entries.nextElement();
+ var jarEntry = entries.nextElement();
String name = jarEntry.getName();
if (name.startsWith(internalFile) && name.toLowerCase().endsWith(".md")) {
pages.add(name.substring(name.lastIndexOf('/') + 1));
@@ -84,7 +85,7 @@ public abstract class AbstractDocServlet extends HttpServlet {
}
private void indexDirectory(URL resource, List pages) {
- File docs = new File(resource.getFile());
+ var docs = new File(resource.getFile());
String[] files = docs.list((dir, name) -> name.toLowerCase().endsWith(".md"));
pages.addAll(Arrays.asList(files));
}
@@ -94,15 +95,19 @@ public abstract class AbstractDocServlet extends HttpServlet {
return loadFile(resource);
}
- protected void error(HttpServletResponse resp, int status, String message) throws IOException {
- resp.setStatus(status);
- resp.getWriter().println(getHeader());
- String html = loadFile("/html/docs/" + status + ".html");
- if(message == null || message.trim().isEmpty()) {
- message = "";
+ protected void error(HttpServletResponse resp, int status, String message) {
+ try {
+ resp.setStatus(status);
+ resp.getWriter().println(getHeader());
+ String html = loadFile("/html/docs/" + status + ".html");
+ if(message == null || message.trim().isEmpty()) {
+ message = "";
+ }
+ html = html.replace("{message}", message);
+ resp.getWriter().println(html);
+ resp.getWriter().println(getFooter());
+ } catch (IOException e) {
+ LOG.error("Error while sending error response. Man, his is bad!", e);
}
- html = html.replace("{message}", message);
- resp.getWriter().println(html);
- resp.getWriter().println(getFooter());
}
}
diff --git a/client/src/main/java/ctbrec/docs/DocServer.java b/client/src/main/java/ctbrec/docs/DocServer.java
index 1f3c97ed..6fe48ff1 100644
--- a/client/src/main/java/ctbrec/docs/DocServer.java
+++ b/client/src/main/java/ctbrec/docs/DocServer.java
@@ -16,40 +16,41 @@ import org.slf4j.LoggerFactory;
import ctbrec.servlet.StaticFileServlet;
public class DocServer {
- private static final transient Logger LOG = LoggerFactory.getLogger(DocServer.class);
+ private static final Logger LOG = LoggerFactory.getLogger(DocServer.class);
- private static Server server = new Server();
private static volatile boolean started = false;
- public synchronized static void start() throws Exception {
+ private DocServer() {}
+
+ public static synchronized void start() throws Exception {
if(started) {
return;
}
started = true;
- server = new Server();
+ var server = new Server();
- HttpConfiguration config = new HttpConfiguration();
+ var config = new HttpConfiguration();
config.setSendServerVersion(false);
- ServerConnector http = new ServerConnector(server, new HttpConnectionFactory(config));
+ var http = new ServerConnector(server, new HttpConnectionFactory(config));
http.setPort(5689);
server.addConnector(http);
- ServletHandler handler = new ServletHandler();
+ var handler = new ServletHandler();
server.setHandler(handler);
- HandlerList handlers = new HandlerList();
+ var handlers = new HandlerList();
handlers.setHandlers(new Handler[] { handler });
server.setHandler(handlers);
- MarkdownServlet markdownServlet = new MarkdownServlet();
- ServletHolder holder = new ServletHolder(markdownServlet);
+ var markdownServlet = new MarkdownServlet();
+ var holder = new ServletHolder(markdownServlet);
handler.addServletWithMapping(holder, "/docs/*");
AbstractDocServlet searchServlet = new SearchServlet();
holder = new ServletHolder(searchServlet);
handler.addServletWithMapping(holder, "/search/*");
- StaticFileServlet staticFileServlet = new StaticFileServlet("/html", false);
+ var staticFileServlet = new StaticFileServlet("/html", false);
holder = new ServletHolder(staticFileServlet);
handler.addServletWithMapping(holder, "/static/*");
diff --git a/client/src/main/java/ctbrec/docs/MarkdownServlet.java b/client/src/main/java/ctbrec/docs/MarkdownServlet.java
index 8dd99b25..cadb8772 100644
--- a/client/src/main/java/ctbrec/docs/MarkdownServlet.java
+++ b/client/src/main/java/ctbrec/docs/MarkdownServlet.java
@@ -38,16 +38,18 @@ public class MarkdownServlet extends AbstractDocServlet {
}
} catch (FileNotFoundException e) {
error(resp, HttpServletResponse.SC_NOT_FOUND, "");
+ } catch (Exception e) {
+ error(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "");
}
}
private void listPages(HttpServletResponse resp) throws IOException {
List pages = getPages();
- String html = "";
+ var html = new StringBuilder("";
+ html.append("
");
resp.setStatus(HttpServletResponse.SC_OK);
resp.getWriter().println(getHeader());
resp.getWriter().println(html);
@@ -55,8 +57,8 @@ public class MarkdownServlet extends AbstractDocServlet {
}
private String markdownToHtml(String markdown) {
- MutableDataSet options = new MutableDataSet();
- Parser parser = Parser.builder(options).build();
+ var options = new MutableDataSet();
+ var parser = Parser.builder(options).build();
HtmlRenderer renderer = HtmlRenderer.builder(options).build();
Node document = parser.parse(markdown);
String html = renderer.render(document);
diff --git a/client/src/main/java/ctbrec/docs/SearchServlet.java b/client/src/main/java/ctbrec/docs/SearchServlet.java
index dacf073d..a4883eeb 100644
--- a/client/src/main/java/ctbrec/docs/SearchServlet.java
+++ b/client/src/main/java/ctbrec/docs/SearchServlet.java
@@ -1,5 +1,7 @@
package ctbrec.docs;
+import static javax.servlet.http.HttpServletResponse.*;
+
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;
@@ -9,41 +11,55 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.json.JSONArray;
-
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class SearchServlet extends AbstractDocServlet {
+ private static final Logger LOG = LoggerFactory.getLogger(SearchServlet.class);
private static final String Q = "term";
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- if(req.getParameter(Q) == null) {
- error(resp, HttpServletResponse.SC_BAD_REQUEST, "Parameter \""+Q+"\" is missing");
- return;
+ try {
+ if (req.getParameter(Q) == null) {
+ error(resp, HttpServletResponse.SC_BAD_REQUEST, "Parameter \"" + Q + "\" is missing");
+ return;
+ }
+
+ resp.setStatus(HttpServletResponse.SC_OK);
+ resp.setContentType("application/json");
+ var result = new JSONArray();
+ var pages = getPages();
+
+ String q = req.getParameter(Q).toLowerCase();
+ String[] tokens = q.split("\\s+");
+ searchPages(result, pages, tokens);
+ resp.getWriter().println(result.toString());
+ } catch (Exception e) {
+ try {
+ resp.sendError(SC_INTERNAL_SERVER_ERROR, "Internal Server Error");
+ } catch (IOException ioe) {
+ LOG.error("Error while sending error response", ioe);
+ }
}
+ }
- resp.setStatus(HttpServletResponse.SC_OK);
- resp.setContentType("application/json");
- JSONArray result = new JSONArray();
- List pages = getPages();
-
- String q = req.getParameter(Q).toLowerCase();
- String[] tokens = q.split("\\s+");
+ private void searchPages(JSONArray result, List pages, String[] tokens) throws IOException {
for (String page : pages) {
try {
String content = loadMarkdown("/docs/" + page).toLowerCase();
- boolean allFound = true;
+ var allFound = true;
for (String token : tokens) {
- if(!content.contains(token)) {
+ if (!content.contains(token)) {
allFound = false;
}
}
- if(allFound) {
+ if (allFound) {
result.put(page);
}
- } catch(FileNotFoundException e) {
+ } catch (FileNotFoundException e) {
// virtual page like index.md -> ignore
}
}
- resp.getWriter().println(result.toString());
}
}
diff --git a/client/src/main/java/ctbrec/ui/AutosizeAlert.java b/client/src/main/java/ctbrec/ui/AutosizeAlert.java
index 2a9fa974..1e59a634 100644
--- a/client/src/main/java/ctbrec/ui/AutosizeAlert.java
+++ b/client/src/main/java/ctbrec/ui/AutosizeAlert.java
@@ -34,7 +34,7 @@ public class AutosizeAlert extends Alert {
setResizable(true);
getDialogPane().setMinHeight(Region.USE_PREF_SIZE);
if(parent != null) {
- Stage stage = (Stage) getDialogPane().getScene().getWindow();
+ var stage = (Stage) getDialogPane().getScene().getWindow();
stage.getScene().getStylesheets().addAll(parent.getStylesheets());
InputStream icon = Dialogs.class.getResourceAsStream("/icon.png");
stage.getIcons().add(new Image(icon));
diff --git a/client/src/main/java/ctbrec/ui/CamrecApplication.java b/client/src/main/java/ctbrec/ui/CamrecApplication.java
index c5df0f6e..91cc6f10 100644
--- a/client/src/main/java/ctbrec/ui/CamrecApplication.java
+++ b/client/src/main/java/ctbrec/ui/CamrecApplication.java
@@ -86,7 +86,6 @@ import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.stage.WindowEvent;
import okhttp3.Request;
-import okhttp3.Response;
public class CamrecApplication extends Application {
@@ -104,7 +103,6 @@ public class CamrecApplication extends Application {
public static HttpClient httpClient;
public static String title;
private Stage primaryStage;
- private RecordedTab modelsTab;
private RecordingsTab recordingsTab;
private ScheduledExecutorService scheduler;
private int activeRecordings = 0;
@@ -114,7 +112,7 @@ public class CamrecApplication extends Application {
public void start(Stage primaryStage) throws Exception {
this.primaryStage = primaryStage;
scheduler = Executors.newScheduledThreadPool(1, r -> {
- Thread t = new Thread(r);
+ var t = new Thread(r);
t.setDaemon(true);
t.setName("Scheduler");
return t;
@@ -172,7 +170,7 @@ public class CamrecApplication extends Application {
private void registerClipboardListener() {
if (config.getSettings().monitorClipboard) {
- ClipboardListener clipboardListener = new ClipboardListener(recorder, sites);
+ var clipboardListener = new ClipboardListener(recorder, sites);
scheduler.scheduleAtFixedRate(clipboardListener, 0, 1, TimeUnit.SECONDS);
}
}
@@ -209,19 +207,19 @@ public class CamrecApplication extends Application {
int windowWidth = Config.getInstance().getSettings().windowWidth;
int windowHeight = Config.getInstance().getSettings().windowHeight;
- Scene scene = new Scene(rootPane, windowWidth, windowHeight);
+ var scene = new Scene(rootPane, windowWidth, windowHeight);
primaryStage.setScene(scene);
Dialogs.setScene(scene);
rootPane.setCenter(tabPane);
rootPane.setBottom(statusBar);
for (Site site : sites) {
if (site.isEnabled()) {
- SiteTab siteTab = new SiteTab(site, scene);
+ var siteTab = new SiteTab(site, scene);
tabPane.getTabs().add(siteTab);
}
}
- modelsTab = new RecordedTab(recorder, sites);
+ var modelsTab = new RecordedTab(recorder, sites);
tabPane.getTabs().add(modelsTab);
recordingsTab = new RecordingsTab("Recordings", recorder, config);
tabPane.getTabs().add(recordingsTab);
@@ -236,7 +234,7 @@ public class CamrecApplication extends Application {
switchToStartTab();
writeColorSchemeStyleSheet();
- Color base = Color.web(Config.getInstance().getSettings().colorBase);
+ var base = Color.web(Config.getInstance().getSettings().colorBase);
if (!base.equals(Color.WHITE)) {
loadStyleSheet(primaryStage, "color.css");
}
@@ -308,7 +306,7 @@ public class CamrecApplication extends Application {
}
// check for active recordings
- boolean shutdownNow = false;
+ var shutdownNow = false;
if (config.getSettings().localRecording) {
try {
if (!recorder.getCurrentlyRecording().isEmpty()) {
@@ -374,7 +372,7 @@ public class CamrecApplication extends Application {
private void registerAlertSystem() {
for (EventHandlerConfiguration eventHandlerConfig : Config.getInstance().getSettings().eventHandlers) {
- EventHandler handler = new EventHandler(eventHandlerConfig);
+ var handler = new EventHandler(eventHandlerConfig);
EventBusHolder.register(handler);
LOG.debug("Registered event handler for {} {}", eventHandlerConfig.getEvent(), eventHandlerConfig.getName());
}
@@ -428,13 +426,13 @@ public class CamrecApplication extends Application {
bytesPerSecond = 0;
}
String humanReadable = ByteUnitFormatter.format(bytesPerSecond);
- String status = String.format("Recording %s / %s models @ %s/s", activeRecordings, recorder.getModelCount(), humanReadable);
+ var status = String.format("Recording %s / %s models @ %s/s", activeRecordings, recorder.getModelCount(), humanReadable);
Platform.runLater(() -> statusLabel.setText(status));
}
private void writeColorSchemeStyleSheet() {
- File colorCss = new File(Config.getInstance().getConfigDir(), "color.css");
- try (FileOutputStream fos = new FileOutputStream(colorCss)) {
+ var colorCss = new File(Config.getInstance().getConfigDir(), "color.css");
+ try (var fos = new FileOutputStream(colorCss)) {
String content = ".root {\n" + " -fx-base: " + Config.getInstance().getSettings().colorBase + ";\n" + " -fx-accent: "
+ Config.getInstance().getSettings().colorAccent + ";\n" + " -fx-default-button: -fx-accent;\n" + " -fx-focus-color: -fx-accent;\n"
+ " -fx-control-inner-background-alt: derive(-fx-base, 95%);\n" + "}";
@@ -445,7 +443,7 @@ public class CamrecApplication extends Application {
}
public static void loadStyleSheet(Stage primaryStage, String filename) {
- File css = new File(Config.getInstance().getConfigDir(), filename);
+ var css = new File(Config.getInstance().getConfigDir(), filename);
if (css.exists() && css.isFile()) {
primaryStage.getScene().getStylesheets().add(css.toURI().toString());
}
@@ -509,20 +507,20 @@ public class CamrecApplication extends Application {
}
private void checkForUpdates() {
- Thread updateCheck = new Thread(() -> {
- String url = "https://pastebin.com/raw/mUxtKzyB";
- Request request = new Request.Builder().url(url).build();
- try (Response response = httpClient.execute(request)) {
- String body = response.body().string();
+ var updateCheck = new Thread(() -> {
+ var url = "https://pastebin.com/raw/mUxtKzyB";
+ var request = new Request.Builder().url(url).build();
+ try (var response = httpClient.execute(request)) {
+ var body = response.body().string();
LOG.trace("Version check respone: {}", body);
if (response.isSuccessful()) {
- Moshi moshi = new Moshi.Builder().build();
+ var moshi = new Moshi.Builder().build();
Type type = Types.newParameterizedType(List.class, Release.class);
JsonAdapter> adapter = moshi.adapter(type);
List releases = adapter.fromJson(body);
- Release latest = releases.get(0);
- Version latestVersion = latest.getVersion();
- Version ctbrecVersion = getVersion();
+ var latest = releases.get(0);
+ var latestVersion = latest.getVersion();
+ var ctbrecVersion = getVersion();
if (latestVersion.compareTo(ctbrecVersion) > 0) {
LOG.debug("Update available {} < {}", ctbrecVersion, latestVersion);
Platform.runLater(() -> tabPane.getTabs().add(new UpdateTab(latest)));
@@ -546,8 +544,8 @@ public class CamrecApplication extends Application {
return Version.of("0.0.0-DEV");
} else {
try (InputStream is = CamrecApplication.class.getClassLoader().getResourceAsStream("version")) {
- BufferedReader reader = new BufferedReader(new InputStreamReader(is));
- String versionString = reader.readLine();
+ var reader = new BufferedReader(new InputStreamReader(is));
+ var versionString = reader.readLine();
return Version.of(versionString);
}
}
diff --git a/client/src/main/java/ctbrec/ui/ClipboardListener.java b/client/src/main/java/ctbrec/ui/ClipboardListener.java
index d6ac591c..3820215b 100644
--- a/client/src/main/java/ctbrec/ui/ClipboardListener.java
+++ b/client/src/main/java/ctbrec/ui/ClipboardListener.java
@@ -1,19 +1,19 @@
package ctbrec.ui;
-import ctbrec.Model;
-import ctbrec.recorder.Recorder;
-import ctbrec.sites.Site;
-import javafx.application.Platform;
-import javafx.scene.input.Clipboard;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.List;
import java.util.Objects;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import ctbrec.recorder.Recorder;
+import ctbrec.sites.Site;
+import javafx.application.Platform;
+import javafx.scene.input.Clipboard;
+
public class ClipboardListener implements Runnable {
private static final Logger LOG = LoggerFactory.getLogger(ClipboardListener.class);
@@ -50,7 +50,7 @@ public class ClipboardListener implements Runnable {
private void addModelIfUrlMatches(String url) {
for (Site site : sites) {
- Model m = site.createModelFromUrl(url);
+ var m = site.createModelFromUrl(url);
if (m != null) {
try {
recorder.addModel(m);
diff --git a/client/src/main/java/ctbrec/ui/DesktopIntegration.java b/client/src/main/java/ctbrec/ui/DesktopIntegration.java
index 82dfc86c..1140116a 100644
--- a/client/src/main/java/ctbrec/ui/DesktopIntegration.java
+++ b/client/src/main/java/ctbrec/ui/DesktopIntegration.java
@@ -2,7 +2,6 @@ package ctbrec.ui;
import java.awt.AWTException;
import java.awt.Desktop;
-import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
@@ -65,8 +64,8 @@ public class DesktopIntegration {
}
// try external helpers
- String[] externalHelpers = { "kde-open5", "kde-open", "gnome-open", "xdg-open" };
- Runtime rt = Runtime.getRuntime();
+ var externalHelpers = new String[] { "kde-open5", "kde-open", "gnome-open", "xdg-open" };
+ var rt = Runtime.getRuntime();
for (String helper : externalHelpers) {
try {
rt.exec(helper + " " + uri);
@@ -80,9 +79,9 @@ public class DesktopIntegration {
Alert info = new AutosizeAlert(Alert.AlertType.ERROR);
info.setTitle("Open URL");
info.setContentText("Couldn't open URL");
- BorderPane pane = new BorderPane();
+ var pane = new BorderPane();
pane.setTop(new Label());
- TextField urlField = new TextField(uri);
+ var urlField = new TextField(uri);
urlField.setPadding(new Insets(10));
urlField.setEditable(false);
pane.setCenter(urlField);
@@ -100,8 +99,8 @@ public class DesktopIntegration {
}
// try external helpers
- String[] externalHelpers = { "kde-open5", "kde-open", "gnome-open", "xdg-open" };
- Runtime rt = Runtime.getRuntime();
+ var externalHelpers = new String[] { "kde-open5", "kde-open", "gnome-open", "xdg-open" };
+ var rt = Runtime.getRuntime();
for (String helper : externalHelpers) {
try {
rt.exec(helper + " " + f.getAbsolutePath());
@@ -115,9 +114,9 @@ public class DesktopIntegration {
Alert info = new AutosizeAlert(Alert.AlertType.ERROR);
info.setTitle("Open file");
info.setContentText("Couldn't open file");
- BorderPane pane = new BorderPane();
+ var pane = new BorderPane();
pane.setTop(new Label());
- TextField urlField = new TextField(f.toString());
+ var urlField = new TextField(f.toString());
urlField.setPadding(new Insets(10));
urlField.setEditable(false);
pane.setCenter(urlField);
@@ -189,7 +188,7 @@ public class DesktopIntegration {
if (tray == null) {
String title = CamrecApplication.title;
tray = SystemTray.getSystemTray();
- Image image = Toolkit.getDefaultToolkit().createImage(DesktopIntegration.class.getResource("/icon64.png"));
+ var image = Toolkit.getDefaultToolkit().createImage(DesktopIntegration.class.getResource("/icon64.png"));
PopupMenu menu = createTrayContextMenu(stage);
trayIcon = new TrayIcon(image, title, menu);
@@ -217,12 +216,12 @@ public class DesktopIntegration {
}
private static PopupMenu createTrayContextMenu(Stage stage) {
- PopupMenu menu = new PopupMenu();
- MenuItem show = new MenuItem("Show");
+ var menu = new PopupMenu();
+ var show = new MenuItem("Show");
show.addActionListener(evt -> restoreStage(stage));
menu.add(show);
menu.addSeparator();
- MenuItem pauseRecording = new MenuItem("Pause recording");
+ var pauseRecording = new MenuItem("Pause recording");
pauseRecording.addActionListener(evt -> {
try {
recorder.pause();
@@ -231,7 +230,7 @@ public class DesktopIntegration {
}
});
menu.add(pauseRecording);
- MenuItem resumeRecording = new MenuItem("Resume recording");
+ var resumeRecording = new MenuItem("Resume recording");
resumeRecording.addActionListener(evt -> {
try {
recorder.resume();
@@ -241,8 +240,8 @@ public class DesktopIntegration {
});
menu.add(resumeRecording);
menu.addSeparator();
- MenuItem exit = new MenuItem("Exit");
- exit.addActionListener(evt -> exit(stage));
+ var exit = new MenuItem("Exit");
+ exit.addActionListener(evt -> exit());
menu.add(exit);
return menu;
}
@@ -266,7 +265,7 @@ public class DesktopIntegration {
});
}
- private static void exit(Stage stage) {
+ private static void exit() {
EventBusHolder.BUS.post(Map.of("event", "shutdown"));
}
diff --git a/client/src/main/java/ctbrec/ui/ExternalBrowser.java b/client/src/main/java/ctbrec/ui/ExternalBrowser.java
index 269944bd..dde7ec13 100644
--- a/client/src/main/java/ctbrec/ui/ExternalBrowser.java
+++ b/client/src/main/java/ctbrec/ui/ExternalBrowser.java
@@ -20,7 +20,6 @@ import org.slf4j.LoggerFactory;
import ctbrec.Config;
import ctbrec.OS;
-import ctbrec.Settings.ProxyType;
import ctbrec.io.StreamRedirector;
public class ExternalBrowser implements AutoCloseable {
@@ -50,7 +49,7 @@ public class ExternalBrowser implements AutoCloseable {
addProxyConfig(jsonConfig.getJSONObject("config"));
- File configDir = new File(Config.getInstance().getConfigDir(), "ctbrec-minimal-browser");
+ var configDir = new File(Config.getInstance().getConfigDir(), "ctbrec-minimal-browser");
String[] cmdline = OS.getBrowserCommand(configDir.getCanonicalPath());
Process p = new ProcessBuilder(cmdline).start();
if (LOG.isTraceEnabled()) {
@@ -91,7 +90,7 @@ public class ExternalBrowser implements AutoCloseable {
}
private void connectToRemoteControlSocket() throws IOException {
- for (int i = 0; i < 20; i++) {
+ for (var i = 0; i < 20; i++) {
try {
socket = new Socket("localhost", 3202);
in = socket.getInputStream();
@@ -117,7 +116,7 @@ public class ExternalBrowser implements AutoCloseable {
}
public void executeJavaScript(String javaScript) throws IOException {
- JSONObject script = new JSONObject();
+ var script = new JSONObject();
script.put("execute", javaScript);
out.write(script.toString().getBytes(UTF_8));
out.write('\n');
@@ -138,7 +137,7 @@ public class ExternalBrowser implements AutoCloseable {
private void readBrowserOutput() {
LOG.debug("Browser output reader started");
- try (BufferedReader br = new BufferedReader(new InputStreamReader(in))) {
+ try (var br = new BufferedReader(new InputStreamReader(in))) {
String line;
synchronized (browserReadyLock) {
browserReady = true;
@@ -164,10 +163,10 @@ public class ExternalBrowser implements AutoCloseable {
}
private void addProxyConfig(JSONObject jsonConfig) {
- ProxyType proxyType = Config.getInstance().getSettings().proxyType;
+ var proxyType = Config.getInstance().getSettings().proxyType;
switch (proxyType) {
case HTTP:
- JSONObject proxy = new JSONObject();
+ var proxy = new JSONObject();
proxy.put("address",
"http=" + Config.getInstance().getSettings().proxyHost + ':' + Config.getInstance().getSettings().proxyPort
+ ";https=" + Config.getInstance().getSettings().proxyHost + ':' + Config.getInstance().getSettings().proxyPort);
diff --git a/client/src/main/java/ctbrec/ui/FileDownload.java b/client/src/main/java/ctbrec/ui/FileDownload.java
index 67889c5a..748fec7e 100644
--- a/client/src/main/java/ctbrec/ui/FileDownload.java
+++ b/client/src/main/java/ctbrec/ui/FileDownload.java
@@ -12,7 +12,6 @@ import org.slf4j.LoggerFactory;
import ctbrec.io.HttpClient;
import ctbrec.recorder.ProgressListener;
import okhttp3.Request;
-import okhttp3.Response;
public class FileDownload {
@@ -28,13 +27,13 @@ public class FileDownload {
public void start(URL url, File target) throws IOException {
LOG.trace("Downloading file {} to {}", url, target);
- Request request = new Request.Builder().url(url).addHeader("connection", "keep-alive").build();
- Response response = httpClient.execute(request);
- long fileSize = Long.parseLong(response.header("Content-Length", String.valueOf(Long.MAX_VALUE)));
+ var request = new Request.Builder().url(url).addHeader("connection", "keep-alive").build();
+ var response = httpClient.execute(request);
+ var fileSize = Long.parseLong(response.header("Content-Length", String.valueOf(Long.MAX_VALUE)));
InputStream in = null;
- try (FileOutputStream fos = new FileOutputStream(target)) {
+ try (var fos = new FileOutputStream(target)) {
in = response.body().byteStream();
- byte[] b = new byte[1024 * 100];
+ var b = new byte[1024 * 100];
long totalBytesRead = 0;
int length = -1;
while ((length = in.read(b)) >= 0) {
diff --git a/client/src/main/java/ctbrec/ui/action/CheckModelAccountAction.java b/client/src/main/java/ctbrec/ui/action/CheckModelAccountAction.java
index 04fb1f94..47fad1c1 100644
--- a/client/src/main/java/ctbrec/ui/action/CheckModelAccountAction.java
+++ b/client/src/main/java/ctbrec/ui/action/CheckModelAccountAction.java
@@ -23,54 +23,63 @@ public class CheckModelAccountAction {
private Recorder recorder;
+ private String buttonText;
+
public CheckModelAccountAction(Button b, Recorder recorder) {
this.b = b;
this.recorder = recorder;
-
+ buttonText = b.getText();
}
public void execute(Predicate filter) {
- String buttonText = b.getText();
b.setDisable(true);
Runnable checker = (() -> {
List deletedAccounts = new ArrayList<>();
try {
- List models = recorder.getModels().stream() //
- .filter(filter) //
- .collect(Collectors.toList());
- int total = models.size();
- for (int i = 0; i < total; i++) {
- final int counter = i+1;
- Platform.runLater(() -> b.setText(buttonText + ' ' + counter + '/' + total));
- Model modelToCheck = models.get(i);
- try {
- if (!modelToCheck.exists()) {
- deletedAccounts.add(modelToCheck);
- }
- } catch (IOException e) {
- LOG.warn("Couldn't check, if model account still exists", e);
- }
- }
+ checkModelAccounts(filter, deletedAccounts);
} finally {
- Platform.runLater(() -> {
- b.setDisable(false);
- b.setText(buttonText);
- if (!deletedAccounts.isEmpty()) {
- StringBuilder sb = new StringBuilder();
- for (Model deletedModel : deletedAccounts) {
- String name = deletedModel.getDisplayName() + " ".repeat(30);
- name = name.substring(0, 30);
- sb.append(name).append(' ').append('(').append(deletedModel.getUrl()).append(')').append('\n');
- }
- boolean remove = Dialogs.showConfirmDialog("Deleted Accounts", sb.toString(),
- "The following accounts seem to have been deleted. Do you want to remove them?", b.getScene());
- if (remove) {
- new StopRecordingAction(b, deletedAccounts, recorder).execute();
- }
- }
- });
+ showResult(deletedAccounts);
}
});
GlobalThreadPool.submit(checker);
}
+
+ private void showResult(List deletedAccounts) {
+ Platform.runLater(() -> {
+ b.setDisable(false);
+ b.setText(buttonText);
+ if (!deletedAccounts.isEmpty()) {
+ var sb = new StringBuilder();
+ for (Model deletedModel : deletedAccounts) {
+ String name = deletedModel.getDisplayName() + " ".repeat(30);
+ name = name.substring(0, 30);
+ sb.append(name).append(' ').append('(').append(deletedModel.getUrl()).append(')').append('\n');
+ }
+ boolean remove = Dialogs.showConfirmDialog("Deleted Accounts", sb.toString(),
+ "The following accounts seem to have been deleted. Do you want to remove them?", b.getScene());
+ if (remove) {
+ new StopRecordingAction(b, deletedAccounts, recorder).execute();
+ }
+ }
+ });
+ }
+
+ private void checkModelAccounts(Predicate filter, List deletedAccounts) {
+ List models = recorder.getModels().stream() //
+ .filter(filter) //
+ .collect(Collectors.toList());
+ int total = models.size();
+ for (var i = 0; i < total; i++) {
+ final int counter = i+1;
+ Platform.runLater(() -> b.setText(buttonText + ' ' + counter + '/' + total));
+ var modelToCheck = models.get(i);
+ try {
+ if (!modelToCheck.exists()) {
+ deletedAccounts.add(modelToCheck);
+ }
+ } catch (IOException e) {
+ LOG.warn("Couldn't check, if model account still exists", e);
+ }
+ }
+ }
}
diff --git a/client/src/main/java/ctbrec/ui/action/IgnoreModelsAction.java b/client/src/main/java/ctbrec/ui/action/IgnoreModelsAction.java
index 4f5ec227..fe2d125d 100644
--- a/client/src/main/java/ctbrec/ui/action/IgnoreModelsAction.java
+++ b/client/src/main/java/ctbrec/ui/action/IgnoreModelsAction.java
@@ -5,7 +5,6 @@ import java.util.function.Consumer;
import ctbrec.Config;
import ctbrec.Model;
-import ctbrec.Settings;
import ctbrec.recorder.Recorder;
import ctbrec.ui.JavaFxModel;
import ctbrec.ui.controls.Dialogs;
@@ -29,8 +28,8 @@ public class IgnoreModelsAction {
}
public void execute(Consumer callback) {
- Settings settings = Config.getInstance().getSettings();
- boolean confirmed = true;
+ var settings = Config.getInstance().getSettings();
+ var confirmed = true;
if (settings.confirmationForDangerousActions) {
int n = selectedModels.size();
String plural = n > 1 ? "s" : "";
@@ -39,7 +38,7 @@ public class IgnoreModelsAction {
}
if (confirmed) {
for (Model model : selectedModels) {
- Model modelToIgnore = unwrap(model);
+ var modelToIgnore = unwrap(model);
settings.ignoredModels.add(modelToIgnore.getUrl());
}
if (withRemoveDialog) {
diff --git a/client/src/main/java/ctbrec/ui/action/OpenRecordingsDir.java b/client/src/main/java/ctbrec/ui/action/OpenRecordingsDir.java
index 10d779b1..c4186dd9 100644
--- a/client/src/main/java/ctbrec/ui/action/OpenRecordingsDir.java
+++ b/client/src/main/java/ctbrec/ui/action/OpenRecordingsDir.java
@@ -24,7 +24,7 @@ public class OpenRecordingsDir {
public void execute() {
source.setCursor(Cursor.WAIT);
- File fileForRecording = Config.getInstance().getFileForRecording(selectedModel, ".mp4", Instant.now());
+ var fileForRecording = Config.getInstance().getFileForRecording(selectedModel, ".mp4", Instant.now());
final File dir = getModelDirectory(fileForRecording);
if (dir.exists()) {
GlobalThreadPool.submit(() -> DesktopIntegration.open(dir));
@@ -35,7 +35,7 @@ public class OpenRecordingsDir {
}
private File getModelDirectory(File fileForRecording) {
- File dir = fileForRecording.getParentFile();
+ var dir = fileForRecording.getParentFile();
if (Config.getInstance().getSettings().recordingsDirStructure == DirectoryStructure.ONE_PER_RECORDING) {
dir = dir.getParentFile();
}
diff --git a/client/src/main/java/ctbrec/ui/action/PlayAction.java b/client/src/main/java/ctbrec/ui/action/PlayAction.java
index 544ba35a..631fbfe0 100644
--- a/client/src/main/java/ctbrec/ui/action/PlayAction.java
+++ b/client/src/main/java/ctbrec/ui/action/PlayAction.java
@@ -2,7 +2,6 @@ package ctbrec.ui.action;
import ctbrec.Config;
import ctbrec.Model;
-import ctbrec.ui.SiteUI;
import ctbrec.ui.SiteUiFactory;
import ctbrec.ui.controls.Toast;
import javafx.application.Platform;
@@ -21,8 +20,8 @@ public class PlayAction {
public void execute() {
source.setCursor(Cursor.WAIT);
- Thread t = new Thread(() -> {
- SiteUI siteUI = SiteUiFactory.getUi(selectedModel.getSite());
+ var t = new Thread(() -> {
+ var siteUI = SiteUiFactory.getUi(selectedModel.getSite());
boolean started = siteUI.play(selectedModel);
Platform.runLater(() -> {
if (started && Config.getInstance().getSettings().showPlayerStarting) {
diff --git a/client/src/main/java/ctbrec/ui/action/RemoveTimeLimitAction.java b/client/src/main/java/ctbrec/ui/action/RemoveTimeLimitAction.java
index 4e86a3c7..20dd201d 100644
--- a/client/src/main/java/ctbrec/ui/action/RemoveTimeLimitAction.java
+++ b/client/src/main/java/ctbrec/ui/action/RemoveTimeLimitAction.java
@@ -27,7 +27,7 @@ public class RemoveTimeLimitAction {
public CompletableFuture execute() {
source.setCursor(Cursor.WAIT);
- Instant unlimited = Instant.ofEpochMilli(Model.RECORD_INDEFINITELY);
+ var unlimited = Instant.ofEpochMilli(Model.RECORD_INDEFINITELY);
return CompletableFuture.supplyAsync(() -> {
try {
selectedModel.setRecordUntil(unlimited);
diff --git a/client/src/main/java/ctbrec/ui/action/StartRecordingAction.java b/client/src/main/java/ctbrec/ui/action/StartRecordingAction.java
index 30b46858..693eb3c3 100644
--- a/client/src/main/java/ctbrec/ui/action/StartRecordingAction.java
+++ b/client/src/main/java/ctbrec/ui/action/StartRecordingAction.java
@@ -1,18 +1,18 @@
package ctbrec.ui.action;
+import java.util.List;
+
import ctbrec.Model;
import ctbrec.recorder.Recorder;
import ctbrec.ui.controls.Dialogs;
import javafx.application.Platform;
import javafx.scene.Node;
-import java.util.List;
-
public class StartRecordingAction extends ModelMassEditAction {
public StartRecordingAction(Node source, List extends Model> models, Recorder recorder) {
super(source, models);
- action = (m) -> {
+ action = m -> {
try {
recorder.addModel(m);
} catch (Exception e) {
diff --git a/client/src/main/java/ctbrec/ui/controls/AbstractFileSelectionBox.java b/client/src/main/java/ctbrec/ui/controls/AbstractFileSelectionBox.java
index 0f3820b8..b094a3c4 100644
--- a/client/src/main/java/ctbrec/ui/controls/AbstractFileSelectionBox.java
+++ b/client/src/main/java/ctbrec/ui/controls/AbstractFileSelectionBox.java
@@ -11,8 +11,6 @@ import ctbrec.ui.AutosizeAlert;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.beans.value.ChangeListener;
-import javafx.geometry.Point2D;
-import javafx.scene.Node;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
@@ -36,7 +34,7 @@ public abstract class AbstractFileSelectionBox extends HBox {
protected boolean allowEmptyValue = false;
private Tooltip validationError = new Tooltip();
- public AbstractFileSelectionBox() {
+ protected AbstractFileSelectionBox() {
super(5);
fileInput = new TextField();
fileInput.textProperty().addListener(textListener());
@@ -45,7 +43,7 @@ public abstract class AbstractFileSelectionBox extends HBox {
validationError.hide();
}
});
- Node browse = createBrowseButton();
+ var browse = createBrowseButton();
browse.disableProperty().bind(disableProperty());
fileInput.disableProperty().bind(disableProperty());
fileInput.textProperty().bindBidirectional(fileProperty);
@@ -63,14 +61,14 @@ public abstract class AbstractFileSelectionBox extends HBox {
});
}
- public AbstractFileSelectionBox(String initialValue) {
+ protected AbstractFileSelectionBox(String initialValue) {
this();
fileInput.setText(initialValue);
}
private ChangeListener super String> textListener() {
return (obs, o, n) -> {
- String input = fileInput.getText();
+ var input = fileInput.getText();
if (StringUtil.isBlank(input)) {
if (allowEmptyValue) {
fileProperty.set("");
@@ -78,19 +76,19 @@ public abstract class AbstractFileSelectionBox extends HBox {
return;
}
} else {
- File program = new File(input);
+ var program = new File(input);
setFile(program);
}
};
}
protected void setFile(File file) {
- String msg = validate(file);
+ var msg = validate(file);
if (msg != null) {
fileInput.setBorder(new Border(new BorderStroke(Color.RED, BorderStrokeStyle.DASHED, new CornerRadii(2), new BorderWidths(2))));
validationError.setText(msg);
fileInput.setTooltip(validationError);
- Point2D p = fileInput.localToScreen(fileInput.getTranslateY(), fileInput.getTranslateY());
+ var p = fileInput.localToScreen(fileInput.getTranslateY(), fileInput.getTranslateY());
if (!validationError.isShowing() && getScene() != null) {
validationError.show(getScene().getWindow(), p.getX(), p.getY() + fileInput.getHeight() + 4);
}
@@ -123,7 +121,7 @@ public abstract class AbstractFileSelectionBox extends HBox {
}
private Button createBrowseButton() {
- Button button = new Button("Select");
+ var button = new Button("Select");
button.setOnAction(e -> choose());
button.prefHeightProperty().bind(this.heightProperty());
button.prefWidthProperty().set(70);
@@ -131,14 +129,14 @@ public abstract class AbstractFileSelectionBox extends HBox {
}
protected void choose() {
- FileChooser chooser = new FileChooser();
- File program = chooser.showOpenDialog(null);
+ var chooser = new FileChooser();
+ var program = chooser.showOpenDialog(null);
if (program != null) {
try {
fileInput.setText(program.getCanonicalPath());
} catch (IOException e1) {
LOG.error("Couldn't determine path", e1);
- Alert alert = new AutosizeAlert(Alert.AlertType.ERROR, getScene());
+ var alert = new AutosizeAlert(Alert.AlertType.ERROR, getScene());
alert.setTitle("Whoopsie");
alert.setContentText("Couldn't determine path");
alert.showAndWait();
diff --git a/client/src/main/java/ctbrec/ui/controls/DateTimeCellFactory.java b/client/src/main/java/ctbrec/ui/controls/DateTimeCellFactory.java
index 97169c48..41c0d4da 100644
--- a/client/src/main/java/ctbrec/ui/controls/DateTimeCellFactory.java
+++ b/client/src/main/java/ctbrec/ui/controls/DateTimeCellFactory.java
@@ -19,8 +19,8 @@ public class DateTimeCellFactory implements Callback,
if (empty || item == null) {
setText("");
} else {
- LocalDateTime dateTime = LocalDateTime.ofInstant(item, ZoneId.systemDefault());
- DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT);
+ var dateTime = LocalDateTime.ofInstant(item, ZoneId.systemDefault());
+ var formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT);
String formattedDateTime = formatter.format(dateTime);
setText(item.equals(Instant.EPOCH) ? "" : formattedDateTime);
}
diff --git a/client/src/main/java/ctbrec/ui/controls/DirectorySelectionBox.java b/client/src/main/java/ctbrec/ui/controls/DirectorySelectionBox.java
index f8f89640..ec9c858d 100644
--- a/client/src/main/java/ctbrec/ui/controls/DirectorySelectionBox.java
+++ b/client/src/main/java/ctbrec/ui/controls/DirectorySelectionBox.java
@@ -12,14 +12,14 @@ public class DirectorySelectionBox extends AbstractFileSelectionBox {
@Override
protected void choose() {
- DirectoryChooser chooser = new DirectoryChooser();
- String preselection = Optional.ofNullable(fileProperty().get()).orElse(".");
- File currentDir = new File(preselection);
+ var chooser = new DirectoryChooser();
+ var preselection = Optional.ofNullable(fileProperty().get()).orElse(".");
+ var currentDir = new File(preselection);
if (currentDir.exists() && currentDir.isDirectory()) {
chooser.setInitialDirectory(currentDir);
}
File selectedDir = chooser.showDialog(null);
- if(selectedDir != null) {
+ if (selectedDir != null) {
fileInput.setText(selectedDir.getAbsolutePath());
setFile(selectedDir);
}
@@ -27,12 +27,12 @@ public class DirectorySelectionBox extends AbstractFileSelectionBox {
@Override
protected String validate(File file) {
- if(isDisabled()) {
+ if (isDisabled()) {
return null;
}
String msg = super.validate(file);
- if(msg != null) {
+ if (msg != null) {
return msg;
} else if (!file.isDirectory()) {
return "This is not a directory";
diff --git a/client/src/main/java/ctbrec/ui/controls/FasterVerticalScrollPaneSkin.java b/client/src/main/java/ctbrec/ui/controls/FasterVerticalScrollPaneSkin.java
index fee2f219..8d4e6e4d 100644
--- a/client/src/main/java/ctbrec/ui/controls/FasterVerticalScrollPaneSkin.java
+++ b/client/src/main/java/ctbrec/ui/controls/FasterVerticalScrollPaneSkin.java
@@ -10,9 +10,9 @@ public class FasterVerticalScrollPaneSkin extends ScrollPaneSkin {
super(scrollPane);
getSkinnable().addEventFilter(ScrollEvent.SCROLL, event -> {
- double ratio = scrollPane.getViewportBounds().getHeight() / scrollPane.getContent().getBoundsInLocal().getHeight();
- double baseUnitIncrement = 0.15;
- double unitIncrement = baseUnitIncrement * ratio * 1.25;
+ var ratio = scrollPane.getViewportBounds().getHeight() / scrollPane.getContent().getBoundsInLocal().getHeight();
+ var baseUnitIncrement = 0.15;
+ var unitIncrement = baseUnitIncrement * ratio * 1.25;
getVerticalScrollBar().setUnitIncrement(unitIncrement);
if (event.getDeltaX() < 0) {
diff --git a/client/src/main/java/ctbrec/ui/controls/FileSelectionBox.java b/client/src/main/java/ctbrec/ui/controls/FileSelectionBox.java
index 88022dc6..684f1c3a 100644
--- a/client/src/main/java/ctbrec/ui/controls/FileSelectionBox.java
+++ b/client/src/main/java/ctbrec/ui/controls/FileSelectionBox.java
@@ -12,12 +12,12 @@ public class FileSelectionBox extends AbstractFileSelectionBox {
@Override
protected String validate(File file) {
- if(isDisabled()) {
+ if (isDisabled()) {
return null;
}
String msg = super.validate(file);
- if(msg != null) {
+ if (msg != null) {
return msg;
} else if (!file.isFile()) {
return "This is not a regular file";
diff --git a/client/src/main/java/ctbrec/ui/controls/Popover.java b/client/src/main/java/ctbrec/ui/controls/Popover.java
index d738877b..47f0eed9 100644
--- a/client/src/main/java/ctbrec/ui/controls/Popover.java
+++ b/client/src/main/java/ctbrec/ui/controls/Popover.java
@@ -46,10 +46,8 @@ import javafx.beans.property.SimpleDoubleProperty;
import javafx.event.ActionEvent;
import javafx.event.Event;
import javafx.event.EventHandler;
-import javafx.geometry.Insets;
import javafx.geometry.Point2D;
import javafx.scene.Node;
-import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.input.MouseEvent;
@@ -82,7 +80,7 @@ public class Popover extends Region implements EventHandler{
private final Region frameBorder = new Region();
private final Button leftButton = new Button("Left");
private final Button rightButton = new Button("Right");
- private final LinkedList pages = new LinkedList();
+ private final LinkedList pages = new LinkedList<>();
private final Pane pagesPane = new Pane();
private final Rectangle pagesClipRect = new Rectangle();
private final Pane titlesPane = new Pane();
@@ -128,11 +126,6 @@ public class Popover extends Region implements EventHandler{
t.consume();
}
};
- // popoverScrollHandler = new EventHandler() {
- // @Override public void handle(ScrollEvent t) {
- // t.consume(); // consume all scroll events
- // }
- // };
}
/**
@@ -149,9 +142,9 @@ public class Popover extends Region implements EventHandler{
@Override protected double computeMinWidth(double height) {
Page page = pages.isEmpty() ? null : pages.getFirst();
if (page != null) {
- Node n = page.getPageNode();
+ var n = page.getPageNode();
if (n != null) {
- Insets insets = getInsets();
+ var insets = getInsets();
return insets.getLeft() + n.minWidth(-1) + insets.getRight();
}
}
@@ -159,16 +152,16 @@ public class Popover extends Region implements EventHandler{
}
@Override protected double computeMinHeight(double width) {
- Insets insets = getInsets();
+ var insets = getInsets();
return insets.getLeft() + 100 + insets.getRight();
}
@Override protected double computePrefWidth(double height) {
Page page = pages.isEmpty() ? null : pages.getFirst();
if (page != null) {
- Node n = page.getPageNode();
+ var n = page.getPageNode();
if (n != null) {
- Insets insets = getInsets();
+ var insets = getInsets();
return insets.getLeft() + n.prefWidth(-1) + insets.getRight();
}
}
@@ -180,9 +173,9 @@ public class Popover extends Region implements EventHandler{
double maxHeight = maxHeight(-1);
double prefHeight = popoverHeight.get();
if (prefHeight == -1) {
- Page page = pages.getFirst();
+ var page = pages.getFirst();
if (page != null) {
- Insets inset = getInsets();
+ var inset = getInsets();
if (width == -1) {
width = prefWidth(-1);
}
@@ -208,7 +201,7 @@ public class Popover extends Region implements EventHandler{
}
@Override protected double computeMaxHeight(double width) {
- Scene scene = getScene();
+ var scene = getScene();
if (scene != null) {
return scene.getHeight() - 100;
} else {
@@ -220,14 +213,14 @@ public class Popover extends Region implements EventHandler{
if (maxPopupHeight == -1) {
maxPopupHeight = (int)getScene().getHeight()-100;
}
- final Insets insets = getInsets();
+ final var insets = getInsets();
final int width = (int)getWidth();
final int height = (int)getHeight();
final int top = (int)insets.getTop() + 40;
final int right = (int)insets.getRight();
final int bottom = (int)insets.getBottom();
final int left = (int)insets.getLeft();
- final int offset = 18;
+ final var offset = 18;
int pageWidth = width - left - right;
int pageHeight = height - top - bottom;
@@ -238,19 +231,18 @@ public class Popover extends Region implements EventHandler{
pagesClipRect.setWidth(pageWidth);
pagesClipRect.setHeight(pageHeight);
- int pageX = 0;
+ var pageX = 0;
for (Node page : pagesPane.getChildren()) {
page.resizeRelocate(pageX, 0, pageWidth, pageHeight);
pageX += pageWidth + PAGE_GAP;
}
- int buttonHeight = (int)(leftButton.prefHeight(-1));
- if (buttonHeight < 30) buttonHeight = 30;
- final int buttonTop = (int)((top-buttonHeight)/2d);
- final int leftButtonWidth = (int)snapSizeX(leftButton.prefWidth(-1));
- leftButton.resizeRelocate(left, buttonTop + offset,leftButtonWidth,buttonHeight);
- final int rightButtonWidth = (int)snapSizeX(rightButton.prefWidth(-1));
- rightButton.resizeRelocate(width-right-rightButtonWidth, buttonTop + offset,rightButtonWidth,buttonHeight);
+ int buttonHeight = Math.min(30, (int) (leftButton.prefHeight(-1)));
+ final int buttonTop = (int) ((top - buttonHeight) / 2d);
+ final int leftButtonWidth = (int) snapSizeX(leftButton.prefWidth(-1));
+ leftButton.resizeRelocate(left, (double)buttonTop + offset, leftButtonWidth, buttonHeight);
+ final int rightButtonWidth = (int) snapSizeX(rightButton.prefWidth(-1));
+ rightButton.resizeRelocate(width - (double)right - rightButtonWidth, (double)buttonTop + offset, rightButtonWidth, buttonHeight);
if (title != null) {
double tw = title.getWidth();
@@ -275,16 +267,16 @@ public class Popover extends Region implements EventHandler{
}
public final void popPage() {
- Page oldPage = pages.pop();
+ var oldPage = pages.pop();
oldPage.handleHidden();
oldPage.setPopover(null);
- Page page = pages.getFirst();
+ var page = pages.getFirst();
leftButton.setVisible(page.leftButtonText() != null);
leftButton.setText(page.leftButtonText());
rightButton.setVisible(page.rightButtonText() != null);
rightButton.setText(page.rightButtonText());
- if (pages.size() > 0) {
- final Insets insets = getInsets();
+ if (!pages.isEmpty()) {
+ final var insets = getInsets();
final int width = (int)prefWidth(-1);
final int right = (int)insets.getRight();
final int left = (int)insets.getLeft();
@@ -308,10 +300,10 @@ public class Popover extends Region implements EventHandler{
}
public final void pushPage(final Page page) {
- final Node pageNode = page.getPageNode();
+ final var pageNode = page.getPageNode();
pageNode.setManaged(false);
pagesPane.getChildren().add(pageNode);
- final Insets insets = getInsets();
+ final var insets = getInsets();
final int pageWidth = (int)(prefWidth(-1) - insets.getLeft() - insets.getRight());
final int newPageX = (pageWidth + PAGE_GAP) * pages.size();
leftButton.setVisible(page.leftButtonText() != null);
@@ -322,11 +314,11 @@ public class Popover extends Region implements EventHandler{
title = new Label(page.getPageTitle());
title.getStyleClass().add("popover-title");
title.setTextAlignment(TextAlignment.CENTER);
- title.setTranslateX(newPageX + (int) ((pageWidth - title.getLayoutBounds().getWidth()) / 2d));
+ title.setTranslateX(newPageX + (pageWidth - title.getLayoutBounds().getWidth()) / 2d);
titlesPane.getChildren().add(title);
if (!pages.isEmpty() && isVisible()) {
- final Timeline timeline = new Timeline(
+ final var timeline = new Timeline(
new KeyFrame(Duration.millis(350), (ActionEvent t) -> {
pagesPane.setCache(false);
resizePopoverToNewPage(pageNode);
@@ -344,7 +336,7 @@ public class Popover extends Region implements EventHandler{
}
private void resizePopoverToNewPage(final Node newPageNode) {
- final Insets insets = getInsets();
+ final var insets = getInsets();
final double width = prefWidth(-1);
final double contentWidth = width - insets.getLeft() - insets.getRight();
double h = newPageNode.prefHeight(contentWidth);
@@ -366,7 +358,6 @@ public class Popover extends Region implements EventHandler{
if (!isVisible() || fadeAnimation != null) {
this.onHideCallback = onHideCallback;
getScene().addEventFilter(MouseEvent.MOUSE_CLICKED, popoverHideHandler);
- // getScene().addEventFilter(ScrollEvent.ANY,popoverScrollHandler);
if (fadeAnimation != null) {
fadeAnimation.stop();
@@ -376,17 +367,15 @@ public class Popover extends Region implements EventHandler{
setVisible(true);
}
- FadeTransition fade = new FadeTransition(Duration.seconds(.1), this);
+ var fade = new FadeTransition(Duration.seconds(.1), this);
fade.setToValue(1.0);
- fade.setOnFinished((ActionEvent event) -> {
- fadeAnimation = null;
- });
+ fade.setOnFinished((ActionEvent event) -> fadeAnimation = null);
- ScaleTransition scale = new ScaleTransition(Duration.seconds(.1), this);
+ var scale = new ScaleTransition(Duration.seconds(.1), this);
scale.setToX(1);
scale.setToY(1);
- ParallelTransition tx = new ParallelTransition(fade, scale);
+ var tx = new ParallelTransition(fade, scale);
fadeAnimation = tx;
tx.play();
}
@@ -395,26 +384,24 @@ public class Popover extends Region implements EventHandler{
public void hide(){
if (isVisible() || fadeAnimation != null) {
getScene().removeEventFilter(MouseEvent.MOUSE_CLICKED, popoverHideHandler);
- // getScene().removeEventFilter(ScrollEvent.ANY,popoverScrollHandler);
if (fadeAnimation != null) {
fadeAnimation.stop();
}
- FadeTransition fade = new FadeTransition(Duration.seconds(.1), this);
+ var fade = new FadeTransition(Duration.seconds(.1), this);
fade.setToValue(0);
fade.setOnFinished((ActionEvent event) -> {
fadeAnimation = null;
setVisible(false);
- //clearPages();
if (onHideCallback != null) onHideCallback.run();
});
- ScaleTransition scale = new ScaleTransition(Duration.seconds(.1), this);
+ var scale = new ScaleTransition(Duration.seconds(.1), this);
scale.setToX(.8);
scale.setToY(.8);
- ParallelTransition tx = new ParallelTransition(fade, scale);
+ var tx = new ParallelTransition(fade, scale);
fadeAnimation = tx;
tx.play();
}
diff --git a/client/src/main/java/ctbrec/ui/controls/PopoverTreeList.java b/client/src/main/java/ctbrec/ui/controls/PopoverTreeList.java
index c914ba51..99fae047 100644
--- a/client/src/main/java/ctbrec/ui/controls/PopoverTreeList.java
+++ b/client/src/main/java/ctbrec/ui/controls/PopoverTreeList.java
@@ -55,7 +55,7 @@ public class PopoverTreeList extends ListView implements Callback implements EventHandler {
private TreeItemListCell() {
diff --git a/client/src/main/java/ctbrec/ui/controls/ProgramSelectionBox.java b/client/src/main/java/ctbrec/ui/controls/ProgramSelectionBox.java
index 2a950f65..d2628a8a 100644
--- a/client/src/main/java/ctbrec/ui/controls/ProgramSelectionBox.java
+++ b/client/src/main/java/ctbrec/ui/controls/ProgramSelectionBox.java
@@ -12,12 +12,12 @@ public class ProgramSelectionBox extends FileSelectionBox {
@Override
protected String validate(File file) {
- if(isDisabled()) {
+ if (isDisabled()) {
return null;
}
String msg = super.validate(file);
- if(msg != null) {
+ if (msg != null) {
return msg;
} else if (!file.canExecute()) {
return "This is not an executable application";
diff --git a/client/src/main/java/ctbrec/ui/controls/RecordingIndicator.java b/client/src/main/java/ctbrec/ui/controls/RecordingIndicator.java
index ed07aa1b..720f40b7 100644
--- a/client/src/main/java/ctbrec/ui/controls/RecordingIndicator.java
+++ b/client/src/main/java/ctbrec/ui/controls/RecordingIndicator.java
@@ -34,4 +34,3 @@ public class RecordingIndicator extends StackPane {
icon.setImage(img);
}
}
-
diff --git a/client/src/main/java/ctbrec/ui/controls/SearchBox.java b/client/src/main/java/ctbrec/ui/controls/SearchBox.java
index fbbd0da9..2a9fd739 100644
--- a/client/src/main/java/ctbrec/ui/controls/SearchBox.java
+++ b/client/src/main/java/ctbrec/ui/controls/SearchBox.java
@@ -44,10 +44,10 @@ import javafx.scene.layout.Region;
* Search field with styling and a clear button
*/
public class SearchBox extends TextField implements ChangeListener{
+ private static final int PREF_HEIGHT = 26;
private final Button clearButton = new Button();
private final Region innerBackground = new Region();
private final Region icon = new Region();
- private final int prefHeight = 26;
public SearchBox() {
getStyleClass().addAll("search-box");
@@ -55,7 +55,7 @@ public class SearchBox extends TextField implements ChangeListener{
innerBackground.getStyleClass().setAll("search-box-inner");
setPromptText("Search");
textProperty().addListener(this);
- setPrefHeight(prefHeight);
+ setPrefHeight(PREF_HEIGHT);
clearButton.getStyleClass().setAll("search-clear-button");
clearButton.setCursor(Cursor.DEFAULT);
clearButton.setOnMouseClicked((MouseEvent t) -> {
@@ -91,10 +91,10 @@ public class SearchBox extends TextField implements ChangeListener{
innerBackground.resize(getWidth(), getHeight());
icon.setLayoutX(0);
icon.setLayoutY(0);
- icon.resize(35,prefHeight);
- clearButton.setLayoutX(getWidth() - prefHeight);
+ icon.resize(35,PREF_HEIGHT);
+ clearButton.setLayoutX(getWidth() - PREF_HEIGHT);
clearButton.setLayoutY(0);
- clearButton.resize(prefHeight, prefHeight);
+ clearButton.resize(PREF_HEIGHT, PREF_HEIGHT);
}
@Override public void changed(ObservableValue extends String> ov, String oldValue, String newValue) {
diff --git a/client/src/main/java/ctbrec/ui/controls/autocomplete/AutoFillTextField.java b/client/src/main/java/ctbrec/ui/controls/autocomplete/AutoFillTextField.java
index 6b12b354..8b50191c 100644
--- a/client/src/main/java/ctbrec/ui/controls/autocomplete/AutoFillTextField.java
+++ b/client/src/main/java/ctbrec/ui/controls/autocomplete/AutoFillTextField.java
@@ -1,6 +1,5 @@
package ctbrec.ui.controls.autocomplete;
-
import java.util.Optional;
import javafx.event.ActionEvent;
@@ -36,18 +35,18 @@ public class AutoFillTextField extends TextField {
private void autocomplete(boolean fulltextSearch) {
String oldtext = getOldText();
- if(oldtext.isEmpty()) {
+ if (oldtext.isEmpty()) {
return;
}
- Optional match = null;
- if(fulltextSearch) {
+ Optional match;
+ if (fulltextSearch) {
match = suggester.fulltext(oldtext);
} else {
match = suggester.startsWith(oldtext);
}
- if(match.isPresent()) {
+ if (match.isPresent()) {
setText(match.get());
int pos = oldtext.length();
positionCaret(pos);
@@ -56,7 +55,7 @@ public class AutoFillTextField extends TextField {
}
private String getOldText() {
- if(getSelection().getLength() > 0) {
+ if (getSelection().getLength() > 0) {
return getText().substring(0, getSelection().getStart());
} else {
return getText();
diff --git a/client/src/main/java/ctbrec/ui/controls/autocomplete/Suggestion.java b/client/src/main/java/ctbrec/ui/controls/autocomplete/Suggestion.java
deleted file mode 100644
index 82378795..00000000
--- a/client/src/main/java/ctbrec/ui/controls/autocomplete/Suggestion.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package ctbrec.ui.controls.autocomplete;
-
-public class Suggestion {
-
-}
diff --git a/client/src/main/java/ctbrec/ui/controls/range/RangeSliderBehavior.java b/client/src/main/java/ctbrec/ui/controls/range/RangeSliderBehavior.java
index b2496f65..43972045 100644
--- a/client/src/main/java/ctbrec/ui/controls/range/RangeSliderBehavior.java
+++ b/client/src/main/java/ctbrec/ui/controls/range/RangeSliderBehavior.java
@@ -35,8 +35,8 @@ public class RangeSliderBehavior extends BehaviorBase= high.doubleValue()) {
newPosition = getLow();
}
@@ -48,8 +48,8 @@ public class RangeSliderBehavior extends BehaviorBase extends BehaviorBase> {
thumbRange.high.resize(thumbWidth, thumbHeight);
}
- // we are assuming the is common radius's for all corners on the track
- double trackRadius = track.getBackground() == null ? 0
- : !track.getBackground().getFills().isEmpty() ? track.getBackground().getFills().get(0).getRadii().getTopLeftHorizontalRadius() : 0;
- double tickLineHeight = (showTickMarks) ? tickLine.prefHeight(-1) : 0;
- double trackHeight = 5;// track.prefHeight(-1);
- double trackAreaHeight = Math.max(trackHeight, thumbHeight);
- double totalHeightNeeded = trackAreaHeight + ((showTickMarks) ? TRACK_TO_TICK_GAP + tickLineHeight : 0);
- double startY = y + ((h - totalHeightNeeded) / 2); // center slider in available height vertically
+ double radius = track.getBackground().getFills().isEmpty() ? 0 : track.getBackground().getFills().get(0).getRadii().getTopLeftHorizontalRadius();
+ double trackRadius = track.getBackground() == null ? 0 : radius;
- trackLength = w - thumbWidth;
- trackStart = x + (thumbWidth / 2);
+ double tickLineHeight = (showTickMarks) ? tickLine.prefHeight(-1) : 0;
+ double trackHeight = 5;
+ double trackAreaHeight = Math.max(trackHeight, thumbHeight);
+ double totalHeightNeeded = trackAreaHeight + ((showTickMarks) ? TRACK_TO_TICK_GAP + tickLineHeight : 0);
+ double startY = y + ((h - totalHeightNeeded) / 2); // center slider in available height vertically
- double trackTop = (int) (startY + ((trackAreaHeight - trackHeight) / 2));
- lowThumbPos = (int) (startY + ((trackAreaHeight - thumbHeight) / 2));
+ trackLength = w - thumbWidth;
+ trackStart = x + (thumbWidth / 2);
- // layout track
- track.resizeRelocate(trackStart - trackRadius, trackTop, trackLength + trackRadius + trackRadius, trackHeight);
+ double trackTop = (int) (startY + ((trackAreaHeight - trackHeight) / 2));
+ lowThumbPos = (int) (startY + ((trackAreaHeight - thumbHeight) / 2));
- positionThumbs();
+ // layout track
+ track.resizeRelocate(trackStart - trackRadius, trackTop, trackLength + trackRadius + trackRadius, trackHeight);
- if (showTickMarks) {
- tickLine.setLayoutX(trackStart);
- tickLine.setLayoutY(trackTop + trackHeight + TRACK_TO_TICK_GAP);
- tickLine.resize(trackLength, tickLineHeight);
- tickLine.requestAxisLayout();
- } else {
- if (tickLine != null) {
- tickLine.resize(0, 0);
- tickLine.requestAxisLayout();
- }
- tickLine = null;
- }
+ positionThumbs();
+
+ if (showTickMarks) {
+ tickLine.setLayoutX(trackStart);
+ tickLine.setLayoutY(trackTop + trackHeight + TRACK_TO_TICK_GAP);
+ tickLine.resize(trackLength, tickLineHeight);
+ tickLine.requestAxisLayout();
+ } else {
+ if (tickLine != null) {
+ tickLine.resize(0, 0);
+ tickLine.requestAxisLayout();
+ }
+ tickLine = null;
+ }
}
private void positionThumbs() {
diff --git a/client/src/main/java/ctbrec/ui/event/PlaySound.java b/client/src/main/java/ctbrec/ui/event/PlaySound.java
index aded0087..a598652d 100644
--- a/client/src/main/java/ctbrec/ui/event/PlaySound.java
+++ b/client/src/main/java/ctbrec/ui/event/PlaySound.java
@@ -23,13 +23,13 @@ public class PlaySound extends Action {
@Override
public void accept(Event evt) {
- AudioClip clip = new AudioClip(url.toString());
+ var clip = new AudioClip(url.toString());
clip.play();
}
@Override
public void configure(ActionConfiguration config) throws Exception {
- File file = new File((String) config.getConfiguration().get("file"));
+ var file = new File((String) config.getConfiguration().get("file"));
url = file.toURI().toURL();
}
}
diff --git a/client/src/main/java/ctbrec/ui/event/ShowNotification.java b/client/src/main/java/ctbrec/ui/event/ShowNotification.java
index 6a10559a..52107b6b 100644
--- a/client/src/main/java/ctbrec/ui/event/ShowNotification.java
+++ b/client/src/main/java/ctbrec/ui/event/ShowNotification.java
@@ -17,7 +17,7 @@ public class ShowNotification extends Action {
@Override
public void accept(Event evt) {
- String header = evt.getType().toString();
+ var header = evt.getType().toString();
String msg;
switch(evt.getType()) {
case MODEL_STATUS_CHANGED:
@@ -25,7 +25,7 @@ public class ShowNotification extends Action {
if (modelEvent.getOldState() == Model.State.UNKNOWN) {
return;
}
- Model m = modelEvent.getModel();
+ var m = modelEvent.getModel();
msg = m.getDisplayName() + " is now " + modelEvent.getNewState().toString();
break;
case RECORDING_STATUS_CHANGED:
@@ -41,5 +41,6 @@ public class ShowNotification extends Action {
@Override
public void configure(ActionConfiguration config) throws Exception {
+ // nothing to do here
}
}
diff --git a/client/src/main/java/ctbrec/ui/news/NewsTab.java b/client/src/main/java/ctbrec/ui/news/NewsTab.java
index 07861344..3baacdf8 100644
--- a/client/src/main/java/ctbrec/ui/news/NewsTab.java
+++ b/client/src/main/java/ctbrec/ui/news/NewsTab.java
@@ -22,7 +22,6 @@ import javafx.scene.control.ScrollPane;
import javafx.scene.control.Tab;
import javafx.scene.layout.VBox;
import okhttp3.Request;
-import okhttp3.Response;
public class NewsTab extends Tab implements TabSelectionListener {
private static final String ACCESS_TOKEN = "a2804d73a89951a22e0f8483a6fcec8943afd88b7ba17c459c095aa9e6f94fd0";
@@ -44,14 +43,14 @@ public class NewsTab extends Tab implements TabSelectionListener {
private void loadToots() {
try {
- Request request = new Request.Builder()
+ var request = new Request.Builder()
.url(URL)
.header("Authorization", "Bearer " + ACCESS_TOKEN)
.header(USER_AGENT, "ctbrec " + CamrecApplication.getVersion().toString())
.build();
- try (Response response = CamrecApplication.httpClient.execute(request)) {
+ try (var response = CamrecApplication.httpClient.execute(request)) {
if (response.isSuccessful()) {
- String body = response.body().string();
+ var body = response.body().string();
if (body.startsWith("[")) {
onSuccess(body);
} else if (body.startsWith("{")) {
@@ -69,7 +68,7 @@ public class NewsTab extends Tab implements TabSelectionListener {
}
private void onError(String body) throws IOException {
- JSONObject json = new JSONObject(body);
+ var json = new JSONObject(body);
if (json.has("error")) {
throw new IOException("Request not successful: " + json.getString("error"));
} else {
@@ -78,14 +77,14 @@ public class NewsTab extends Tab implements TabSelectionListener {
}
private void onSuccess(String body) throws IOException {
- Moshi moshi = new Moshi.Builder().build();
+ var moshi = new Moshi.Builder().build();
JsonAdapter statusListAdapter = moshi.adapter(Status[].class);
Status[] statusArray = statusListAdapter.fromJson(body);
Platform.runLater(() -> {
layout.getChildren().clear();
for (Status status : statusArray) {
if (status.getInReplyToId() == null && !Objects.equals("direct", status.getVisibility())) {
- StatusPane stp = new StatusPane(status);
+ var stp = new StatusPane(status);
layout.getChildren().add(stp);
VBox.setMargin(stp, new Insets(10));
}
diff --git a/client/src/main/java/ctbrec/ui/news/Status.java b/client/src/main/java/ctbrec/ui/news/Status.java
index e800ceac..5404c6b3 100644
--- a/client/src/main/java/ctbrec/ui/news/Status.java
+++ b/client/src/main/java/ctbrec/ui/news/Status.java
@@ -272,8 +272,8 @@ public class Status {
public ZonedDateTime getCreationTime() {
String timestamp = getCreatedAt();
- Instant instant = Instant.parse(timestamp);
- ZonedDateTime time = ZonedDateTime.ofInstant(instant, ZoneId.systemDefault());
+ var instant = Instant.parse(timestamp);
+ var time = ZonedDateTime.ofInstant(instant, ZoneId.systemDefault());
return time;
}
}
diff --git a/client/src/main/java/ctbrec/ui/news/StatusPane.java b/client/src/main/java/ctbrec/ui/news/StatusPane.java
index d4f4d02b..ce15f721 100644
--- a/client/src/main/java/ctbrec/ui/news/StatusPane.java
+++ b/client/src/main/java/ctbrec/ui/news/StatusPane.java
@@ -36,7 +36,7 @@ public class StatusPane extends StackPane {
ZonedDateTime createdAt = status.getCreationTime();
String creationTime = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT, FormatStyle.SHORT).format(createdAt);
- Label time = new Label(creationTime);
+ var time = new Label(creationTime);
time.setStyle("-fx-background-color: -fx-base");
time.setOpacity(.7);
time.setPadding(new Insets(3));
@@ -45,7 +45,7 @@ public class StatusPane extends StackPane {
getChildren().add(time);
StackPane.setMargin(time, new Insets(5, 5, 5, 10));
StackPane.setAlignment(time, Pos.BOTTOM_LEFT);
- Rectangle clip = new Rectangle(time.getWidth(), time.getHeight());
+ var clip = new Rectangle(time.getWidth(), time.getHeight());
clip.heightProperty().bind(time.heightProperty());
clip.widthProperty().bind(time.widthProperty());
clip.setArcHeight(5);
@@ -53,7 +53,7 @@ public class StatusPane extends StackPane {
time.setClip(clip);
reply = new Button("Reply");
- reply.setOnAction((evt) -> DesktopIntegration.open(status.getUrl()));
+ reply.setOnAction(evt -> DesktopIntegration.open(status.getUrl()));
getChildren().add(reply);
StackPane.setMargin(reply, new Insets(5, 5, 5, 5));
StackPane.setAlignment(reply, Pos.BOTTOM_RIGHT);
@@ -64,7 +64,7 @@ public class StatusPane extends StackPane {
ObservableList childrenUnmodifiable = content.getChildrenUnmodifiable();
for (Node node : childrenUnmodifiable) {
if (node instanceof ScrollPane) {
- ScrollPane scrollPane = (ScrollPane) node;
+ var scrollPane = (ScrollPane) node;
Set nodes = scrollPane.lookupAll(".scroll-bar");
for (final Node child : nodes) {
if (child instanceof ScrollBar) {
diff --git a/client/src/main/java/ctbrec/ui/settings/AbstractPostProcessingPaneFactory.java b/client/src/main/java/ctbrec/ui/settings/AbstractPostProcessingPaneFactory.java
index 76c2fdc6..9ba50724 100644
--- a/client/src/main/java/ctbrec/ui/settings/AbstractPostProcessingPaneFactory.java
+++ b/client/src/main/java/ctbrec/ui/settings/AbstractPostProcessingPaneFactory.java
@@ -47,13 +47,12 @@ public abstract class AbstractPostProcessingPaneFactory {
}
class MapPreferencesStorage implements PreferencesStorage {
-
@Override
public void save(Preferences preferences) throws IOException {
for (Property> property : properties) {
String key = property.getName();
Object value = preferences.getSetting(key).get().getProperty().getValue();
- LOG.debug("{}={}", key, value.toString());
+ LOG.debug("{}={}", key, value);
pp.getConfig().put(key, value.toString());
}
}
@@ -64,7 +63,7 @@ public abstract class AbstractPostProcessingPaneFactory {
}
@Override
- public Node createGui(Setting setting) throws Exception {
+ public Node createGui(Setting setting) throws NoSuchFieldException, IllegalAccessException {
Property> prop = setting.getProperty();
if (prop instanceof ExclusiveSelectionProperty) {
return createRadioGroup(setting);
@@ -86,109 +85,74 @@ public abstract class AbstractPostProcessingPaneFactory {
return new Label("Unsupported Type for key " + setting.getKey() + ": " + setting.getProperty());
}
}
- }
- private Node createRadioGroup(Setting setting) {
- ExclusiveSelectionProperty prop = (ExclusiveSelectionProperty) setting.getProperty();
- ToggleGroup toggleGroup = new ToggleGroup();
- RadioButton optionA = new RadioButton(prop.getOptionA());
- optionA.setSelected(prop.getValue());
- optionA.setToggleGroup(toggleGroup);
- RadioButton optionB = new RadioButton(prop.getOptionB());
- optionB.setSelected(!optionA.isSelected());
- optionB.setToggleGroup(toggleGroup);
- optionA.selectedProperty().bindBidirectional(prop);
- HBox row = new HBox();
- row.getChildren().addAll(optionA, optionB);
- HBox.setMargin(optionA, new Insets(5));
- HBox.setMargin(optionB, new Insets(5));
- return row;
- }
+ private Node createRadioGroup(Setting setting) {
+ ExclusiveSelectionProperty prop = (ExclusiveSelectionProperty) setting.getProperty();
+ var toggleGroup = new ToggleGroup();
+ var optionA = new RadioButton(prop.getOptionA());
+ optionA.setSelected(prop.getValue());
+ optionA.setToggleGroup(toggleGroup);
+ var optionB = new RadioButton(prop.getOptionB());
+ optionB.setSelected(!optionA.isSelected());
+ optionB.setToggleGroup(toggleGroup);
+ optionA.selectedProperty().bindBidirectional(prop);
+ var row = new HBox();
+ row.getChildren().addAll(optionA, optionB);
+ HBox.setMargin(optionA, new Insets(5));
+ HBox.setMargin(optionB, new Insets(5));
+ return row;
+ }
- private Node createFileSelector(Setting setting) {
- ProgramSelectionBox programSelector = new ProgramSelectionBox("");
- // programSelector.fileProperty().addListener((obs, o, n) -> saveValue(() -> {
- // String path = n;
- // Field field = Settings.class.getField(setting.getKey());
- // String oldValue = (String) field.get(settings);
- // if (!Objects.equals(path, oldValue)) {
- // field.set(settings, path);
- // config.save();
- // }
- // }));
- StringProperty property = (StringProperty) setting.getProperty();
- programSelector.fileProperty().bindBidirectional(property);
- return programSelector;
- }
+ private Node createFileSelector(Setting setting) {
+ var programSelector = new ProgramSelectionBox("");
+ StringProperty property = (StringProperty) setting.getProperty();
+ programSelector.fileProperty().bindBidirectional(property);
+ return programSelector;
+ }
- private Node createDirectorySelector(Setting setting) {
- DirectorySelectionBox directorySelector = new DirectorySelectionBox("");
- directorySelector.prefWidth(400);
- // directorySelector.fileProperty().addListener((obs, o, n) -> saveValue(() -> {
- // String path = n;
- // Field field = Settings.class.getField(setting.getKey());
- // String oldValue = (String) field.get(settings);
- // if (!Objects.equals(path, oldValue)) {
- // field.set(settings, path);
- // config.save();
- // }
- // }));
- StringProperty property = (StringProperty) setting.getProperty();
- directorySelector.fileProperty().bindBidirectional(property);
- return directorySelector;
- }
+ private Node createDirectorySelector(Setting setting) {
+ var directorySelector = new DirectorySelectionBox("");
+ directorySelector.prefWidth(400);
+ StringProperty property = (StringProperty) setting.getProperty();
+ directorySelector.fileProperty().bindBidirectional(property);
+ return directorySelector;
+ }
- @SuppressWarnings("unchecked")
- private Node createStringProperty(Setting setting) {
- TextField ctrl = new TextField();
- ctrl.textProperty().bindBidirectional(setting.getProperty());
- return ctrl;
- }
+ @SuppressWarnings("unchecked")
+ private Node createStringProperty(Setting setting) {
+ var ctrl = new TextField();
+ ctrl.textProperty().bindBidirectional(setting.getProperty());
+ return ctrl;
+ }
- @SuppressWarnings("unchecked")
- private Node createIntegerProperty(Setting setting) {
- TextField ctrl = new TextField();
- Property prop = setting.getProperty();
- ctrl.textProperty().bindBidirectional(prop, new NumberStringConverter());
- return ctrl;
- }
+ @SuppressWarnings("unchecked")
+ private Node createIntegerProperty(Setting setting) {
+ var ctrl = new TextField();
+ Property prop = setting.getProperty();
+ ctrl.textProperty().bindBidirectional(prop, new NumberStringConverter());
+ return ctrl;
+ }
- @SuppressWarnings("unchecked")
- private Node createLongProperty(Setting setting) {
- TextField ctrl = new TextField();
- Property prop = setting.getProperty();
- ctrl.textProperty().bindBidirectional(prop, new NumberStringConverter());
- return ctrl;
- }
+ @SuppressWarnings("unchecked")
+ private Node createLongProperty(Setting setting) {
+ var ctrl = new TextField();
+ Property prop = setting.getProperty();
+ ctrl.textProperty().bindBidirectional(prop, new NumberStringConverter());
+ return ctrl;
+ }
- private Node createBooleanProperty(Setting setting) {
- CheckBox ctrl = new CheckBox();
- BooleanProperty prop = (BooleanProperty) setting.getProperty();
- ctrl.selectedProperty().bindBidirectional(prop);
- return ctrl;
- }
+ private Node createBooleanProperty(Setting setting) {
+ var ctrl = new CheckBox();
+ BooleanProperty prop = (BooleanProperty) setting.getProperty();
+ ctrl.selectedProperty().bindBidirectional(prop);
+ return ctrl;
+ }
- @SuppressWarnings({ "rawtypes", "unchecked" })
- private Node createComboBox(Setting setting) throws NoSuchFieldException, IllegalAccessException {
- ListProperty> listProp = (ListProperty>) setting.getProperty();
- ComboBox