From 679d3efc81a3dce4d05b90692b7ca9797103fb45 Mon Sep 17 00:00:00 2001 From: Connor Yoh Date: Tue, 15 Jul 2025 13:53:42 +0100 Subject: [PATCH] Remove desktopBrowser File --- .github/workflows/tauri-test.yml | 2 +- stirling-pdf/build.gradle | 2 +- .../software/SPDF/UI/impl/DesktopBrowser.java | 892 +++++++++--------- 3 files changed, 448 insertions(+), 448 deletions(-) diff --git a/.github/workflows/tauri-test.yml b/.github/workflows/tauri-test.yml index 12163d616..87a46de8d 100644 --- a/.github/workflows/tauri-test.yml +++ b/.github/workflows/tauri-test.yml @@ -113,7 +113,7 @@ jobs: chmod +x ./gradlew echo "🔧 Building Stirling-PDF JAR..." # STIRLING_PDF_DESKTOP_UI=false ./gradlew clean bootJar --no-daemon - STIRLING_PDF_DESKTOP_UI=false ./gradlew clean build -x spotlessApply -x spotlessCheck -x test -x sonarqube + ./gradlew clean build -x spotlessApply -x spotlessCheck -x test -x sonarqube # Find the built JAR STIRLING_JAR=$(ls stirling-pdf/build/libs/stirling-pdf-*.jar | head -n 1) diff --git a/stirling-pdf/build.gradle b/stirling-pdf/build.gradle index a97d04808..0a8d06a16 100644 --- a/stirling-pdf/build.gradle +++ b/stirling-pdf/build.gradle @@ -29,7 +29,7 @@ dependencies { if (System.getenv('STIRLING_PDF_DESKTOP_UI') != 'false' || (project.hasProperty('STIRLING_PDF_DESKTOP_UI') && project.getProperty('STIRLING_PDF_DESKTOP_UI') != 'false')) { - implementation 'me.friwi:jcefmaven:132.3.1' + // implementation 'me.friwi:jcefmaven:132.3.1' implementation 'org.openjfx:javafx-controls:21' implementation 'org.openjfx:javafx-swing:21' } diff --git a/stirling-pdf/src/main/java/stirling/software/SPDF/UI/impl/DesktopBrowser.java b/stirling-pdf/src/main/java/stirling/software/SPDF/UI/impl/DesktopBrowser.java index 959e7f354..0850d0969 100644 --- a/stirling-pdf/src/main/java/stirling/software/SPDF/UI/impl/DesktopBrowser.java +++ b/stirling-pdf/src/main/java/stirling/software/SPDF/UI/impl/DesktopBrowser.java @@ -1,497 +1,497 @@ -package stirling.software.SPDF.UI.impl; +// package stirling.software.SPDF.UI.impl; -import java.awt.AWTException; -import java.awt.BorderLayout; -import java.awt.Frame; -import java.awt.Image; -import java.awt.MenuItem; -import java.awt.PopupMenu; -import java.awt.SystemTray; -import java.awt.TrayIcon; -import java.awt.event.WindowEvent; -import java.awt.event.WindowStateListener; -import java.io.File; -import java.io.InputStream; -import java.util.Objects; -import java.util.concurrent.CompletableFuture; +// import java.awt.AWTException; +// import java.awt.BorderLayout; +// import java.awt.Frame; +// import java.awt.Image; +// import java.awt.MenuItem; +// import java.awt.PopupMenu; +// import java.awt.SystemTray; +// import java.awt.TrayIcon; +// import java.awt.event.WindowEvent; +// import java.awt.event.WindowStateListener; +// import java.io.File; +// import java.io.InputStream; +// import java.util.Objects; +// import java.util.concurrent.CompletableFuture; -import javax.imageio.ImageIO; -import javax.swing.JFrame; -import javax.swing.JPanel; -import javax.swing.SwingUtilities; -import javax.swing.Timer; +// import javax.imageio.ImageIO; +// import javax.swing.JFrame; +// import javax.swing.JPanel; +// import javax.swing.SwingUtilities; +// import javax.swing.Timer; -import org.cef.CefApp; -import org.cef.CefClient; -import org.cef.CefSettings; -import org.cef.browser.CefBrowser; -import org.cef.callback.CefBeforeDownloadCallback; -import org.cef.callback.CefDownloadItem; -import org.cef.callback.CefDownloadItemCallback; -import org.cef.handler.CefDownloadHandlerAdapter; -import org.cef.handler.CefLoadHandlerAdapter; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.stereotype.Component; +// import org.cef.CefApp; +// import org.cef.CefClient; +// import org.cef.CefSettings; +// import org.cef.browser.CefBrowser; +// import org.cef.callback.CefBeforeDownloadCallback; +// import org.cef.callback.CefDownloadItem; +// import org.cef.callback.CefDownloadItemCallback; +// import org.cef.handler.CefDownloadHandlerAdapter; +// import org.cef.handler.CefLoadHandlerAdapter; +// import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +// import org.springframework.stereotype.Component; -import jakarta.annotation.PreDestroy; +// import jakarta.annotation.PreDestroy; -import lombok.extern.slf4j.Slf4j; +// import lombok.extern.slf4j.Slf4j; -import me.friwi.jcefmaven.CefAppBuilder; -import me.friwi.jcefmaven.EnumProgress; -import me.friwi.jcefmaven.MavenCefAppHandlerAdapter; -import me.friwi.jcefmaven.impl.progress.ConsoleProgressHandler; +// import me.friwi.jcefmaven.CefAppBuilder; +// import me.friwi.jcefmaven.EnumProgress; +// import me.friwi.jcefmaven.MavenCefAppHandlerAdapter; +// import me.friwi.jcefmaven.impl.progress.ConsoleProgressHandler; -import stirling.software.SPDF.UI.WebBrowser; -import stirling.software.common.configuration.InstallationPathConfig; -import stirling.software.common.util.UIScaling; +// import stirling.software.SPDF.UI.WebBrowser; +// import stirling.software.common.configuration.InstallationPathConfig; +// import stirling.software.common.util.UIScaling; -@Component -@Slf4j -@ConditionalOnProperty( - name = "STIRLING_PDF_DESKTOP_UI", - havingValue = "true", - matchIfMissing = false) -public class DesktopBrowser implements WebBrowser { - private static CefApp cefApp; - private static CefClient client; - private static CefBrowser browser; - private static JFrame frame; - private static LoadingWindow loadingWindow; - private static volatile boolean browserInitialized = false; - private static TrayIcon trayIcon; - private static SystemTray systemTray; +// @Component +// @Slf4j +// @ConditionalOnProperty( +// name = "STIRLING_PDF_DESKTOP_UI", +// havingValue = "true", +// matchIfMissing = false) +// public class DesktopBrowser implements WebBrowser { +// private static CefApp cefApp; +// private static CefClient client; +// private static CefBrowser browser; +// private static JFrame frame; +// private static LoadingWindow loadingWindow; +// private static volatile boolean browserInitialized = false; +// private static TrayIcon trayIcon; +// private static SystemTray systemTray; - public DesktopBrowser() { - SwingUtilities.invokeLater( - () -> { - loadingWindow = new LoadingWindow(null, "Initializing..."); - loadingWindow.setVisible(true); - }); - } +// public DesktopBrowser() { +// SwingUtilities.invokeLater( +// () -> { +// loadingWindow = new LoadingWindow(null, "Initializing..."); +// loadingWindow.setVisible(true); +// }); +// } - public void initWebUI(String url) { - CompletableFuture.runAsync( - () -> { - try { - CefAppBuilder builder = new CefAppBuilder(); - configureCefSettings(builder); - builder.setProgressHandler(createProgressHandler()); - builder.setInstallDir( - new File(InstallationPathConfig.getClientWebUIPath())); - // Build and initialize CEF - cefApp = builder.build(); - client = cefApp.createClient(); +// public void initWebUI(String url) { +// CompletableFuture.runAsync( +// () -> { +// try { +// CefAppBuilder builder = new CefAppBuilder(); +// configureCefSettings(builder); +// builder.setProgressHandler(createProgressHandler()); +// builder.setInstallDir( +// new File(InstallationPathConfig.getClientWebUIPath())); +// // Build and initialize CEF +// cefApp = builder.build(); +// client = cefApp.createClient(); - // Set up download handler - setupDownloadHandler(); +// // Set up download handler +// setupDownloadHandler(); - // Create browser and frame on EDT - SwingUtilities.invokeAndWait( - () -> { - browser = client.createBrowser(url, false, false); - setupMainFrame(); - setupLoadHandler(); +// // Create browser and frame on EDT +// SwingUtilities.invokeAndWait( +// () -> { +// browser = client.createBrowser(url, false, false); +// setupMainFrame(); +// setupLoadHandler(); - // Force initialize UI after 7 seconds if not already done - Timer timeoutTimer = - new Timer( - 2500, - e -> { - log.warn( - "Loading timeout reached. Forcing" - + " UI transition."); - if (!browserInitialized) { - // Force UI initialization - forceInitializeUI(); - } - }); - timeoutTimer.setRepeats(false); - timeoutTimer.start(); - }); - } catch (Exception e) { - log.error("Error initializing JCEF browser: ", e); - cleanup(); - } - }); - } +// // Force initialize UI after 7 seconds if not already done +// Timer timeoutTimer = +// new Timer( +// 2500, +// e -> { +// log.warn( +// "Loading timeout reached. Forcing" +// + " UI transition."); +// if (!browserInitialized) { +// // Force UI initialization +// forceInitializeUI(); +// } +// }); +// timeoutTimer.setRepeats(false); +// timeoutTimer.start(); +// }); +// } catch (Exception e) { +// log.error("Error initializing JCEF browser: ", e); +// cleanup(); +// } +// }); +// } - private void configureCefSettings(CefAppBuilder builder) { - CefSettings settings = builder.getCefSettings(); - String basePath = InstallationPathConfig.getClientWebUIPath(); - log.info("basePath " + basePath); - settings.cache_path = new File(basePath + "cache").getAbsolutePath(); - settings.root_cache_path = new File(basePath + "root_cache").getAbsolutePath(); - // settings.browser_subprocess_path = new File(basePath + - // "subprocess").getAbsolutePath(); - // settings.resources_dir_path = new File(basePath + "resources").getAbsolutePath(); - // settings.locales_dir_path = new File(basePath + "locales").getAbsolutePath(); - settings.log_file = new File(basePath, "debug.log").getAbsolutePath(); +// private void configureCefSettings(CefAppBuilder builder) { +// CefSettings settings = builder.getCefSettings(); +// String basePath = InstallationPathConfig.getClientWebUIPath(); +// log.info("basePath " + basePath); +// settings.cache_path = new File(basePath + "cache").getAbsolutePath(); +// settings.root_cache_path = new File(basePath + "root_cache").getAbsolutePath(); +// // settings.browser_subprocess_path = new File(basePath + +// // "subprocess").getAbsolutePath(); +// // settings.resources_dir_path = new File(basePath + "resources").getAbsolutePath(); +// // settings.locales_dir_path = new File(basePath + "locales").getAbsolutePath(); +// settings.log_file = new File(basePath, "debug.log").getAbsolutePath(); - settings.persist_session_cookies = true; - settings.windowless_rendering_enabled = false; - settings.log_severity = CefSettings.LogSeverity.LOGSEVERITY_INFO; +// settings.persist_session_cookies = true; +// settings.windowless_rendering_enabled = false; +// settings.log_severity = CefSettings.LogSeverity.LOGSEVERITY_INFO; - builder.setAppHandler( - new MavenCefAppHandlerAdapter() { - @Override - public void stateHasChanged(org.cef.CefApp.CefAppState state) { - log.info("CEF state changed: " + state); - if (state == CefApp.CefAppState.TERMINATED) { - System.exit(0); - } - } - }); - } +// builder.setAppHandler( +// new MavenCefAppHandlerAdapter() { +// @Override +// public void stateHasChanged(org.cef.CefApp.CefAppState state) { +// log.info("CEF state changed: " + state); +// if (state == CefApp.CefAppState.TERMINATED) { +// System.exit(0); +// } +// } +// }); +// } - private void setupDownloadHandler() { - client.addDownloadHandler( - new CefDownloadHandlerAdapter() { - @Override - public boolean onBeforeDownload( - CefBrowser browser, - CefDownloadItem downloadItem, - String suggestedName, - CefBeforeDownloadCallback callback) { - callback.Continue("", true); - return true; - } +// private void setupDownloadHandler() { +// client.addDownloadHandler( +// new CefDownloadHandlerAdapter() { +// @Override +// public boolean onBeforeDownload( +// CefBrowser browser, +// CefDownloadItem downloadItem, +// String suggestedName, +// CefBeforeDownloadCallback callback) { +// callback.Continue("", true); +// return true; +// } - @Override - public void onDownloadUpdated( - CefBrowser browser, - CefDownloadItem downloadItem, - CefDownloadItemCallback callback) { - if (downloadItem.isComplete()) { - log.info("Download completed: " + downloadItem.getFullPath()); - } else if (downloadItem.isCanceled()) { - log.info("Download canceled: " + downloadItem.getFullPath()); - } - } - }); - } +// @Override +// public void onDownloadUpdated( +// CefBrowser browser, +// CefDownloadItem downloadItem, +// CefDownloadItemCallback callback) { +// if (downloadItem.isComplete()) { +// log.info("Download completed: " + downloadItem.getFullPath()); +// } else if (downloadItem.isCanceled()) { +// log.info("Download canceled: " + downloadItem.getFullPath()); +// } +// } +// }); +// } - private ConsoleProgressHandler createProgressHandler() { - return new ConsoleProgressHandler() { - @Override - public void handleProgress(EnumProgress state, float percent) { - Objects.requireNonNull(state, "state cannot be null"); - SwingUtilities.invokeLater( - () -> { - if (loadingWindow != null) { - switch (state) { - case LOCATING: - loadingWindow.setStatus("Locating Files..."); - loadingWindow.setProgress(0); - break; - case DOWNLOADING: - if (percent >= 0) { - loadingWindow.setStatus( - String.format( - "Downloading additional files: %.0f%%", - percent)); - loadingWindow.setProgress((int) percent); - } - break; - case EXTRACTING: - loadingWindow.setStatus("Extracting files..."); - loadingWindow.setProgress(60); - break; - case INITIALIZING: - loadingWindow.setStatus("Initializing UI..."); - loadingWindow.setProgress(80); - break; - case INITIALIZED: - loadingWindow.setStatus("Finalising startup..."); - loadingWindow.setProgress(90); - break; - } - } - }); - } - }; - } +// private ConsoleProgressHandler createProgressHandler() { +// return new ConsoleProgressHandler() { +// @Override +// public void handleProgress(EnumProgress state, float percent) { +// Objects.requireNonNull(state, "state cannot be null"); +// SwingUtilities.invokeLater( +// () -> { +// if (loadingWindow != null) { +// switch (state) { +// case LOCATING: +// loadingWindow.setStatus("Locating Files..."); +// loadingWindow.setProgress(0); +// break; +// case DOWNLOADING: +// if (percent >= 0) { +// loadingWindow.setStatus( +// String.format( +// "Downloading additional files: %.0f%%", +// percent)); +// loadingWindow.setProgress((int) percent); +// } +// break; +// case EXTRACTING: +// loadingWindow.setStatus("Extracting files..."); +// loadingWindow.setProgress(60); +// break; +// case INITIALIZING: +// loadingWindow.setStatus("Initializing UI..."); +// loadingWindow.setProgress(80); +// break; +// case INITIALIZED: +// loadingWindow.setStatus("Finalising startup..."); +// loadingWindow.setProgress(90); +// break; +// } +// } +// }); +// } +// }; +// } - private void setupMainFrame() { - frame = new JFrame("Stirling-PDF"); - frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); - frame.setUndecorated(true); - frame.setOpacity(0.0f); +// private void setupMainFrame() { +// frame = new JFrame("Stirling-PDF"); +// frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); +// frame.setUndecorated(true); +// frame.setOpacity(0.0f); - JPanel contentPane = new JPanel(new BorderLayout()); - contentPane.setDoubleBuffered(true); - contentPane.add(browser.getUIComponent(), BorderLayout.CENTER); - frame.setContentPane(contentPane); +// JPanel contentPane = new JPanel(new BorderLayout()); +// contentPane.setDoubleBuffered(true); +// contentPane.add(browser.getUIComponent(), BorderLayout.CENTER); +// frame.setContentPane(contentPane); - frame.addWindowListener( - new java.awt.event.WindowAdapter() { - @Override - public void windowClosing(java.awt.event.WindowEvent windowEvent) { - cleanup(); - System.exit(0); - } - }); +// frame.addWindowListener( +// new java.awt.event.WindowAdapter() { +// @Override +// public void windowClosing(java.awt.event.WindowEvent windowEvent) { +// cleanup(); +// System.exit(0); +// } +// }); - frame.setSize(UIScaling.scaleWidth(1280), UIScaling.scaleHeight(800)); - frame.setLocationRelativeTo(null); +// frame.setSize(UIScaling.scaleWidth(1280), UIScaling.scaleHeight(800)); +// frame.setLocationRelativeTo(null); - loadIcon(); - } +// loadIcon(); +// } - private void setupLoadHandler() { - final long initStartTime = System.currentTimeMillis(); - log.info("Setting up load handler at: {}", initStartTime); +// private void setupLoadHandler() { +// final long initStartTime = System.currentTimeMillis(); +// log.info("Setting up load handler at: {}", initStartTime); - client.addLoadHandler( - new CefLoadHandlerAdapter() { - @Override - public void onLoadingStateChange( - CefBrowser browser, - boolean isLoading, - boolean canGoBack, - boolean canGoForward) { - log.debug( - "Loading state change - isLoading: {}, canGoBack: {}, canGoForward:" - + " {}, browserInitialized: {}, Time elapsed: {}ms", - isLoading, - canGoBack, - canGoForward, - browserInitialized, - System.currentTimeMillis() - initStartTime); +// client.addLoadHandler( +// new CefLoadHandlerAdapter() { +// @Override +// public void onLoadingStateChange( +// CefBrowser browser, +// boolean isLoading, +// boolean canGoBack, +// boolean canGoForward) { +// log.debug( +// "Loading state change - isLoading: {}, canGoBack: {}, canGoForward:" +// + " {}, browserInitialized: {}, Time elapsed: {}ms", +// isLoading, +// canGoBack, +// canGoForward, +// browserInitialized, +// System.currentTimeMillis() - initStartTime); - if (!isLoading && !browserInitialized) { - log.info( - "Browser finished loading, preparing to initialize UI" - + " components"); - browserInitialized = true; - SwingUtilities.invokeLater( - () -> { - try { - if (loadingWindow != null) { - log.info("Starting UI initialization sequence"); +// if (!isLoading && !browserInitialized) { +// log.info( +// "Browser finished loading, preparing to initialize UI" +// + " components"); +// browserInitialized = true; +// SwingUtilities.invokeLater( +// () -> { +// try { +// if (loadingWindow != null) { +// log.info("Starting UI initialization sequence"); - // Close loading window first - loadingWindow.setVisible(false); - loadingWindow.dispose(); - loadingWindow = null; - log.info("Loading window disposed"); +// // Close loading window first +// loadingWindow.setVisible(false); +// loadingWindow.dispose(); +// loadingWindow = null; +// log.info("Loading window disposed"); - // Then setup the main frame - frame.setVisible(false); - frame.dispose(); - frame.setOpacity(1.0f); - frame.setUndecorated(false); - frame.pack(); - frame.setSize( - UIScaling.scaleWidth(1280), - UIScaling.scaleHeight(800)); - frame.setLocationRelativeTo(null); - log.debug("Frame reconfigured"); +// // Then setup the main frame +// frame.setVisible(false); +// frame.dispose(); +// frame.setOpacity(1.0f); +// frame.setUndecorated(false); +// frame.pack(); +// frame.setSize( +// UIScaling.scaleWidth(1280), +// UIScaling.scaleHeight(800)); +// frame.setLocationRelativeTo(null); +// log.debug("Frame reconfigured"); - // Show the main frame - frame.setVisible(true); - frame.requestFocus(); - frame.toFront(); - log.info("Main frame displayed and focused"); +// // Show the main frame +// frame.setVisible(true); +// frame.requestFocus(); +// frame.toFront(); +// log.info("Main frame displayed and focused"); - // Focus the browser component - Timer focusTimer = - new Timer( - 100, - e -> { - try { - browser.getUIComponent() - .requestFocus(); - log.info( - "Browser component" - + " focused"); - } catch (Exception ex) { - log.error( - "Error focusing" - + " browser", - ex); - } - }); - focusTimer.setRepeats(false); - focusTimer.start(); - } - } catch (Exception e) { - log.error("Error during UI initialization", e); - // Attempt cleanup on error - if (loadingWindow != null) { - loadingWindow.dispose(); - loadingWindow = null; - } - if (frame != null) { - frame.setVisible(true); - frame.requestFocus(); - } - } - }); - } - } - }); - } +// // Focus the browser component +// Timer focusTimer = +// new Timer( +// 100, +// e -> { +// try { +// browser.getUIComponent() +// .requestFocus(); +// log.info( +// "Browser component" +// + " focused"); +// } catch (Exception ex) { +// log.error( +// "Error focusing" +// + " browser", +// ex); +// } +// }); +// focusTimer.setRepeats(false); +// focusTimer.start(); +// } +// } catch (Exception e) { +// log.error("Error during UI initialization", e); +// // Attempt cleanup on error +// if (loadingWindow != null) { +// loadingWindow.dispose(); +// loadingWindow = null; +// } +// if (frame != null) { +// frame.setVisible(true); +// frame.requestFocus(); +// } +// } +// }); +// } +// } +// }); +// } - private void setupTrayIcon(Image icon) { - if (!SystemTray.isSupported()) { - log.warn("System tray is not supported"); - return; - } +// private void setupTrayIcon(Image icon) { +// if (!SystemTray.isSupported()) { +// log.warn("System tray is not supported"); +// return; +// } - try { - systemTray = SystemTray.getSystemTray(); +// try { +// systemTray = SystemTray.getSystemTray(); - // Create popup menu - PopupMenu popup = new PopupMenu(); +// // Create popup menu +// PopupMenu popup = new PopupMenu(); - // Create menu items - MenuItem showItem = new MenuItem("Show"); - showItem.addActionListener( - e -> { - frame.setVisible(true); - frame.setState(Frame.NORMAL); - }); +// // Create menu items +// MenuItem showItem = new MenuItem("Show"); +// showItem.addActionListener( +// e -> { +// frame.setVisible(true); +// frame.setState(Frame.NORMAL); +// }); - MenuItem exitItem = new MenuItem("Exit"); - exitItem.addActionListener( - e -> { - cleanup(); - System.exit(0); - }); +// MenuItem exitItem = new MenuItem("Exit"); +// exitItem.addActionListener( +// e -> { +// cleanup(); +// System.exit(0); +// }); - // Add menu items to popup menu - popup.add(showItem); - popup.addSeparator(); - popup.add(exitItem); +// // Add menu items to popup menu +// popup.add(showItem); +// popup.addSeparator(); +// popup.add(exitItem); - // Create tray icon - trayIcon = new TrayIcon(icon, "Stirling-PDF", popup); - trayIcon.setImageAutoSize(true); +// // Create tray icon +// trayIcon = new TrayIcon(icon, "Stirling-PDF", popup); +// trayIcon.setImageAutoSize(true); - // Add double-click behavior - trayIcon.addActionListener( - e -> { - frame.setVisible(true); - frame.setState(Frame.NORMAL); - }); +// // Add double-click behavior +// trayIcon.addActionListener( +// e -> { +// frame.setVisible(true); +// frame.setState(Frame.NORMAL); +// }); - // Add tray icon to system tray - systemTray.add(trayIcon); +// // Add tray icon to system tray +// systemTray.add(trayIcon); - // Modify frame behavior to minimize to tray - frame.addWindowStateListener( - new WindowStateListener() { - public void windowStateChanged(WindowEvent e) { - if (e.getNewState() == Frame.ICONIFIED) { - frame.setVisible(false); - } - } - }); +// // Modify frame behavior to minimize to tray +// frame.addWindowStateListener( +// new WindowStateListener() { +// public void windowStateChanged(WindowEvent e) { +// if (e.getNewState() == Frame.ICONIFIED) { +// frame.setVisible(false); +// } +// } +// }); - } catch (AWTException e) { - log.error("Error setting up system tray icon", e); - } - } +// } catch (AWTException e) { +// log.error("Error setting up system tray icon", e); +// } +// } - private void loadIcon() { - try { - Image icon = null; - String[] iconPaths = {"/static/favicon.ico"}; +// private void loadIcon() { +// try { +// Image icon = null; +// String[] iconPaths = {"/static/favicon.ico"}; - for (String path : iconPaths) { - if (icon != null) break; - try { - try (InputStream is = getClass().getResourceAsStream(path)) { - if (is != null) { - icon = ImageIO.read(is); - break; - } - } - } catch (Exception e) { - log.debug("Could not load icon from " + path, e); - } - } +// for (String path : iconPaths) { +// if (icon != null) break; +// try { +// try (InputStream is = getClass().getResourceAsStream(path)) { +// if (is != null) { +// icon = ImageIO.read(is); +// break; +// } +// } +// } catch (Exception e) { +// log.debug("Could not load icon from " + path, e); +// } +// } - if (icon != null) { - frame.setIconImage(icon); - setupTrayIcon(icon); - } else { - log.warn("Could not load icon from any source"); - } - } catch (Exception e) { - log.error("Error loading icon", e); - } - } +// if (icon != null) { +// frame.setIconImage(icon); +// setupTrayIcon(icon); +// } else { +// log.warn("Could not load icon from any source"); +// } +// } catch (Exception e) { +// log.error("Error loading icon", e); +// } +// } - @PreDestroy - public void cleanup() { - if (browser != null) browser.close(true); - if (client != null) client.dispose(); - if (cefApp != null) cefApp.dispose(); - if (loadingWindow != null) loadingWindow.dispose(); - } +// @PreDestroy +// public void cleanup() { +// if (browser != null) browser.close(true); +// if (client != null) client.dispose(); +// if (cefApp != null) cefApp.dispose(); +// if (loadingWindow != null) loadingWindow.dispose(); +// } - public static void forceInitializeUI() { - try { - if (loadingWindow != null) { - log.info("Forcing start of UI initialization sequence"); +// public static void forceInitializeUI() { +// try { +// if (loadingWindow != null) { +// log.info("Forcing start of UI initialization sequence"); - // Close loading window first - loadingWindow.setVisible(false); - loadingWindow.dispose(); - loadingWindow = null; - log.info("Loading window disposed"); +// // Close loading window first +// loadingWindow.setVisible(false); +// loadingWindow.dispose(); +// loadingWindow = null; +// log.info("Loading window disposed"); - // Then setup the main frame - frame.setVisible(false); - frame.dispose(); - frame.setOpacity(1.0f); - frame.setUndecorated(false); - frame.pack(); - frame.setSize(UIScaling.scaleWidth(1280), UIScaling.scaleHeight(800)); - frame.setLocationRelativeTo(null); - log.debug("Frame reconfigured"); +// // Then setup the main frame +// frame.setVisible(false); +// frame.dispose(); +// frame.setOpacity(1.0f); +// frame.setUndecorated(false); +// frame.pack(); +// frame.setSize(UIScaling.scaleWidth(1280), UIScaling.scaleHeight(800)); +// frame.setLocationRelativeTo(null); +// log.debug("Frame reconfigured"); - // Show the main frame - frame.setVisible(true); - frame.requestFocus(); - frame.toFront(); - log.info("Main frame displayed and focused"); +// // Show the main frame +// frame.setVisible(true); +// frame.requestFocus(); +// frame.toFront(); +// log.info("Main frame displayed and focused"); - // Focus the browser component if available - if (browser != null) { - Timer focusTimer = - new Timer( - 100, - e -> { - try { - browser.getUIComponent().requestFocus(); - log.info("Browser component focused"); - } catch (Exception ex) { - log.error( - "Error focusing browser during force ui" - + " initialization.", - ex); - } - }); - focusTimer.setRepeats(false); - focusTimer.start(); - } - } - } catch (Exception e) { - log.error("Error during Forced UI initialization.", e); - // Attempt cleanup on error - if (loadingWindow != null) { - loadingWindow.dispose(); - loadingWindow = null; - } - if (frame != null) { - frame.setVisible(true); - frame.setOpacity(1.0f); - frame.setUndecorated(false); - frame.requestFocus(); - } - } - } -} +// // Focus the browser component if available +// if (browser != null) { +// Timer focusTimer = +// new Timer( +// 100, +// e -> { +// try { +// browser.getUIComponent().requestFocus(); +// log.info("Browser component focused"); +// } catch (Exception ex) { +// log.error( +// "Error focusing browser during force ui" +// + " initialization.", +// ex); +// } +// }); +// focusTimer.setRepeats(false); +// focusTimer.start(); +// } +// } +// } catch (Exception e) { +// log.error("Error during Forced UI initialization.", e); +// // Attempt cleanup on error +// if (loadingWindow != null) { +// loadingWindow.dispose(); +// loadingWindow = null; +// } +// if (frame != null) { +// frame.setVisible(true); +// frame.setOpacity(1.0f); +// frame.setUndecorated(false); +// frame.requestFocus(); +// } +// } +// } +// }