diff --git a/uicdm/build.gradle b/uicdm/build.gradle index d651eba700..f460100e07 100644 --- a/uicdm/build.gradle +++ b/uicdm/build.gradle @@ -52,3 +52,14 @@ application { } jar.manifest.attributes 'Main-Class': 'ucar.nc2.ui.ToolsUI' + +def genBuildInfo = tasks.register("generateBuildInfo", WriteProperties) { + destinationFile = getLayout().buildDirectory.file("resources/main/toolsui.properties") + comment = "Application configuration generated by Gradle" + encoding = "UTF-8" + + property("toolsui.version", project.version) + property("toolsui.buildTimestamp", project.buildTimestamp) // Defined in root project. +} + +processResources.dependsOn(genBuildInfo) diff --git a/uicdm/src/main/java/ucar/nc2/ui/BuildInfo.java b/uicdm/src/main/java/ucar/nc2/ui/BuildInfo.java new file mode 100644 index 0000000000..3b9e633af5 --- /dev/null +++ b/uicdm/src/main/java/ucar/nc2/ui/BuildInfo.java @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2025 University Corporation for Atmospheric Research/Unidata + * See LICENSE for license information. + */ + +package ucar.nc2.ui; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +public class BuildInfo { + + private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(BuildInfo.class); + + private final String version, timestamp; + + BuildInfo(String version, String timestamp) { + this.version = version; + this.timestamp = timestamp; + } + + public String getVersion() { + return version; + } + + public String getTimestamp() { + return timestamp; + } + + static BuildInfo getToolsUIBuildInfo() { + Properties buildProps = new Properties(); + try (InputStream stream = ToolsUI.class.getClassLoader().getResourceAsStream("toolsui.properties")) { + buildProps.load(stream); + } catch (IOException e) { + log.error("Error reading build properties"); + } + return new BuildInfo(buildProps.getProperty("toolsui.version", "Unknown"), + buildProps.getProperty("toolsui.buildTimestamp", "Unknown")); + } + +} diff --git a/uicdm/src/main/java/ucar/nc2/ui/ToolsAboutWindow.java b/uicdm/src/main/java/ucar/nc2/ui/ToolsAboutWindow.java index 725d72e5cd..f246931b84 100644 --- a/uicdm/src/main/java/ucar/nc2/ui/ToolsAboutWindow.java +++ b/uicdm/src/main/java/ucar/nc2/ui/ToolsAboutWindow.java @@ -1,11 +1,10 @@ /* - * Copyright (c) 1998-2019 University Corporation for Atmospheric Research/Unidata + * Copyright (c) 1998-2025 University Corporation for Atmospheric Research/Unidata * See LICENSE for license information. */ package ucar.nc2.ui; -import java.nio.charset.StandardCharsets; import ucar.ui.util.Resource; import ucar.ui.widget.BAMutil; import java.awt.BorderLayout; @@ -19,10 +18,6 @@ import java.awt.Toolkit; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; -import java.io.BufferedReader; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.IOException; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JFrame; @@ -42,7 +37,8 @@ public ToolsAboutWindow(JFrame parent) { super(parent); JLabel lab1 = new JLabel("
" - + "

Netcdf Tools User Interface (ToolsUI)

" + "" + getVersion() + "" + + "

Netcdf Tools User Interface (ToolsUI)

" + "" + BuildInfo.getToolsUIBuildInfo().getVersion() + + "" + "
Build Date: " + "" + BuildInfo.getToolsUIBuildInfo().getTimestamp() + "" + "
https://www.unidata.ucar.edu/software/netcdf-java/" + "
Developers: John Caron, Sean Arms, Dennis Heimbinger, Ryan May, Christian Ward-Garrison" + "
" + "

With thanks to these Open Source contributors:" + "