package com.faforever.client.theme; import javafx.beans.property.ReadOnlyObjectProperty; import javafx.scene.Scene; import javafx.scene.image.Image; import javafx.scene.web.WebView; import javafx.stage.Stage; import java.net.URL; import java.util.Collection; public interface ThemeService { String UNKNOWN_MAP_IMAGE = "images/unknown_map.png"; String PLAYING_STATUS_IMAGE = "images/chat/playing.png"; String HOSTING_STATUS_IMAGE = "images/chat/host.png"; String LOBBY_STATUS_IMAGE = "images/chat/lobby.png"; String DEFAULT_NEWS_IMAGE = "images/news_fallback.jpg"; String STYLE_CSS = "style.css"; String WEBVIEW_CSS_FILE = "style-webview.css"; String DEFAULT_ACHIEVEMENT_IMAGE = "images/default_achievement.png"; String MENTION_SOUND = "sounds/mention.mp3"; String CSS_CLASS_FONTAWESOME = "fontawesome"; String RANKED_1V1_IMAGE = "images/ranked1v1_notification.png"; String TRAY_ICON = "images/tray_icon.png"; Theme DEFAULT_THEME = new Theme() { { setAuthor("Downlord"); setCompatibilityVersion(1); setDisplayName("Default"); setThemeVersion("1.0"); } }; String getThemeFile(String relativeFile); Image getThemeImage(String relativeImage); URL getThemeFileUrl(String relativeFile); void setTheme(Theme theme); /** * Unregisters a scene so it's no longer updated when the theme (or its CSS) changes. */ void unregisterScene(Scene scene); /** * Registers a scene against the theme service so it can be updated whenever the theme (or its CSS) changes. */ void registerScene(Scene scene); /** * Registers a WebView against the theme service so it can be updated whenever the theme changes. */ void registerWebView(WebView webView); void loadThemes(); Collection<Theme> getAvailableThemes(); /** * Sets the application badge number to display on the application icon. An application badge is a small indicator * (e.g. a red circle) with a number on it, which indicates the number of (for instance) new messages or * notifications. * * @param number the new badge number. If 0, the badge will be removed. */ void setApplicationIconBadgeNumber(Stage stage, int number); ReadOnlyObjectProperty<Theme> currentThemeProperty(); }