diff --git a/G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/application/entities/extensiondetails/StoreExtensionDetailsItem.java b/G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/application/entities/extensiondetails/StoreExtensionDetailsItem.java index 9364bd7..7d66ef7 100644 --- a/G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/application/entities/extensiondetails/StoreExtensionDetailsItem.java +++ b/G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/application/entities/extensiondetails/StoreExtensionDetailsItem.java @@ -94,6 +94,8 @@ public class StoreExtensionDetailsItem implements ContentItem { .append("> Framework: ").append(storeExtension.getFramework().getFramework().getName()).append(" - v").append(storeExtension.getFramework().getVersion()).append("\n") .append("> Systems: ").append(String.join(", ", storeExtension.getCompatibility().getSystems())).append("\n \n"); + contentBuilder.append("*Compatible clients:* ").append(String.join(", ", storeExtension.getCompatibility().getClients())).append("\n\n"); + if (storeExtension.getFramework().getFramework().isInstallationRequired()) { contentBuilder.append("Warning: the framework requires --url:additional installations-") .append(storeExtension.getFramework().getFramework().getInstallationInstructions()).append(" !\n"); diff --git a/G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/application/entities/installed/StoreExtensionInstalledItem.java b/G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/application/entities/installed/StoreExtensionInstalledItem.java index dc917d1..d9c55dd 100644 --- a/G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/application/entities/installed/StoreExtensionInstalledItem.java +++ b/G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/application/entities/installed/StoreExtensionInstalledItem.java @@ -1,9 +1,13 @@ package gearth.services.internal_extensions.extensionstore.application.entities.installed; import gearth.services.internal_extensions.extensionstore.GExtensionStore; +import gearth.services.internal_extensions.extensionstore.application.GExtensionStoreController; +import gearth.services.internal_extensions.extensionstore.application.WebUtils; import gearth.services.internal_extensions.extensionstore.application.entities.StoreExtensionItem; import gearth.services.internal_extensions.extensionstore.repository.models.StoreExtension; import gearth.services.internal_extensions.extensionstore.tools.InstalledExtension; +import netscape.javascript.JSObject; +import org.apache.maven.artifact.versioning.ComparableVersion; public class StoreExtensionInstalledItem extends StoreExtensionItem { @@ -20,8 +24,13 @@ public class StoreExtensionInstalledItem extends StoreExtensionItem { @Override protected String displayColor(int i) { - return super.displayColor(i); - // todo color depending on if it needs an update + if (storeExtension != null) { + if (new ComparableVersion(this.installedExtension.getVersion()).compareTo(new ComparableVersion(storeExtension.getVersion())) < 0) { + return "item_orange"; + } + return super.displayColor(i); + } + return "item_red"; } @Override @@ -33,9 +42,35 @@ public class StoreExtensionInstalledItem extends StoreExtensionItem { @Override public void addHtml(int i, GExtensionStore gExtensionStore) { if (this.storeExtension != null) { - super.addHtml(i, gExtensionStore /* add custom color here */); + super.addHtml(i, gExtensionStore); } + else { - //todo html when extension isn't in store + // display a red item that can't be clicked - to mark that this is no available extension + StringBuilder htmlBuilder = new StringBuilder() + .append("
") + + .append("
") + .append("\"\"") + .append("
") + + .append("
") + .append("
").append(WebUtils.escapeMessage(installedExtension.getName())).append("
") + .append("
Not found in G-ExtensionStore
") + .append("
") + + .append("
") + .append("
").append("Version: ").append(displayVersion()).append("
") + .append("
") + .append("
") + + .append("
"); + + String extension = htmlBuilder.toString(); + GExtensionStoreController controller = gExtensionStore.getController(); + + controller.getWebView().getEngine().executeScript("document.getElementById('" + + controller.getContentItemsContainer() + "').innerHTML += '" + extension + "';"); + } } } diff --git a/G-Earth/src/main/resources/gearth/services/internal_extensions/extensionstore/application/webview/css/content.css b/G-Earth/src/main/resources/gearth/services/internal_extensions/extensionstore/application/webview/css/content.css index 8f3bc2c..2859f52 100644 --- a/G-Earth/src/main/resources/gearth/services/internal_extensions/extensionstore/application/webview/css/content.css +++ b/G-Earth/src/main/resources/gearth/services/internal_extensions/extensionstore/application/webview/css/content.css @@ -34,6 +34,10 @@ background-color: #b5e6f9; } +.item_orange { + background-color: #ffcc80; +} + .item_grey { background-color: #aaaaaa; }