diff --git a/.classpath b/.classpath
index 6dd3809226..6222272a8d 100644
--- a/.classpath
+++ b/.classpath
@@ -1,19 +1,19 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.externalToolBuilders/org.eclipse.jdt.core.javabuilder.launch b/.externalToolBuilders/org.eclipse.jdt.core.javabuilder.launch
new file mode 100644
index 0000000000..4179cd69fb
--- /dev/null
+++ b/.externalToolBuilders/org.eclipse.jdt.core.javabuilder.launch
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000000..c770ebd9db
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,65 @@
+name: Build WorldWind Java
+
+on:
+ push:
+ branches: [ main, develop ]
+ pull_request:
+ branches: [ main, develop ]
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ strategy:
+ matrix:
+ java-version: [11]
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+
+ - name: Set up JDK ${{ matrix.java-version }}
+ uses: actions/setup-java@v4
+ with:
+ java-version: ${{ matrix.java-version }}
+ distribution: 'temurin'
+
+ - name: Cache Gradle packages
+ uses: actions/cache@v4
+ with:
+ path: |
+ ~/.gradle/caches
+ ~/.gradle/wrapper
+ key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
+ restore-keys: |
+ ${{ runner.os }}-gradle-
+
+ - name: Make gradlew executable
+ run: chmod +x ./gradlew
+
+ - name: Build with Gradle
+ run: ./gradlew build --no-daemon --warning-mode all
+
+ - name: Run tests
+ run: ./gradlew test --no-daemon --warning-mode all
+
+ - name: Upload build artifacts
+ uses: actions/upload-artifact@v4
+ if: matrix.java-version == 11
+ with:
+ name: worldwind-java-build-${{ github.sha }}
+ path: |
+ build/libs/
+ worldwind-*.jar
+ worldwindx-*.jar
+ retention-days: 30
+
+ - name: Upload test results
+ uses: actions/upload-artifact@v4
+ if: always()
+ with:
+ name: test-results-java-${{ matrix.java-version }}-${{ github.sha }}
+ path: |
+ build/test-results/
+ build/reports/
+ retention-days: 30
diff --git a/.gitignore b/.gitignore
index 87d7001729..f78ae5a09f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,4 +6,15 @@ classes
testClasses
worldwind.jar
-worldwindx.jar
\ No newline at end of file
+<<<<<<< HEAD
+worldwindx.jar
+
+gradle
+gradlew
+gradlew.bat
+.gradle
+.nb-gradle
+/bin/
+=======
+worldwindx.jar
+>>>>>>> 57b265b6dc19cccf73759b7e3a41ef452b3742d7
diff --git a/.project b/.project
index 6cdbe3a9f0..70adacd584 100644
--- a/.project
+++ b/.project
@@ -1,6 +1,6 @@
- worldwind
+ worldwind-WorldWindJava
@@ -15,9 +15,30 @@
+
+ org.eclipse.ui.externaltools.ExternalToolBuilder
+ full,incremental,
+
+
+ LaunchConfigHandle
+ <project>/.externalToolBuilders/org.eclipse.jdt.core.javabuilder.launch
+
+
+ org.eclipse.jdt.core.javanatureorg.eclipse.buildship.core.gradleprojectnature
+
+
+ 1757090846118
+
+ 30
+
+ org.eclipse.core.resources.regexFilterMatcher
+ node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__
+
+
+
diff --git a/.settings/org.eclipse.buildship.core.prefs b/.settings/org.eclipse.buildship.core.prefs
index 7b8f97273d..d52cd4e1e9 100644
--- a/.settings/org.eclipse.buildship.core.prefs
+++ b/.settings/org.eclipse.buildship.core.prefs
@@ -1,13 +1,13 @@
-arguments=
-auto.sync=false
+arguments=--init-script C\:\\Users\\tlund\\AppData\\Roaming\\Cursor\\User\\globalStorage\\redhat.java\\1.45.0\\config_win\\org.eclipse.osgi\\58\\0\\.cp\\gradle\\init\\init.gradle --init-script C\:\\Users\\tlund\\AppData\\Roaming\\Cursor\\User\\globalStorage\\redhat.java\\1.45.0\\config_win\\org.eclipse.osgi\\58\\0\\.cp\\gradle\\protobuf\\init.gradle
+auto.sync=true
build.scans.enabled=false
connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER)
connection.project.dir=
eclipse.preferences.version=1
gradle.user.home=
-java.home=
+java.home=C\:/Program Files/Zulu/zulu-17
jvm.arguments=
offline.mode=false
-override.workspace.settings=false
-show.console.view=false
-show.executions.view=false
+override.workspace.settings=true
+show.console.view=true
+show.executions.view=true
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000000..bbf9f297a4
--- /dev/null
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=ignore
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
+org.eclipse.jdt.core.compiler.compliance=17
+org.eclipse.jdt.core.compiler.source=17
diff --git a/.settings/org.eclipse.ltk.core.refactoring.prefs b/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000000..b196c64a34
--- /dev/null
+++ b/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/.vscode/java.project b/.vscode/java.project
index af07472977..51bc2a2905 100644
--- a/.vscode/java.project
+++ b/.vscode/java.project
@@ -27,5 +27,5 @@
"jackson-core-asl.jar",
"junit-4.5.jar"
],
- "javaVersion": "11"
+ "javaVersion": "17"
}
diff --git a/.vscode/launch.json b/.vscode/launch.json
index a006970d07..0a77eb3a77 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -1,12 +1,16 @@
{
"version": "0.2.0",
"configurations": [
+
{
"type": "java",
"name": "WorldWindow",
"request": "launch",
"mainClass": "gov.nasa.worldwindx.applications.worldwindow.WorldWindow",
- "projectName": "worldwind-WorldWindJava"
+
+ "projectName": "worldwind-WorldWindJava",
+ "vmArgs": "-Djava.util.logging.config.file=logging.properties --add-exports java.base/java.lang=ALL-UNNAMED --add-exports java.desktop/sun.awt=ALL-UNNAMED --add-exports java.desktop/sun.java2d=ALL-UNNAMED"
+
},
{
"type": "java",
@@ -15,7 +19,7 @@
"mainClass": "gov.nasa.worldwindx.applications.worldwindow.WorldWindow",
"projectName": "WorldWindJava",
"args": "",
- "vmArgs": "-Djava.util.logging.config.file=logging.properties",
+ "vmArgs": "-Djava.util.logging.config.file=logging.properties --add-exports java.base/java.lang=ALL-UNNAMED --add-exports java.desktop/sun.awt=ALL-UNNAMED --add-exports java.desktop/sun.java2d=ALL-UNNAMED",
"cwd": "${workspaceFolder}",
"console": "integratedTerminal",
"env": {
diff --git a/.vscode/settings.json b/.vscode/settings.json
index c919bddf68..c2d2eaaed2 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -29,11 +29,11 @@
"java.project.importOnFirstTimeStartup": "automatic",
"java.import.gradle.enabled": true,
"java.import.gradle.wrapper.enabled": true,
- "java.import.gradle.java.home": null,
+ "java.import.gradle.java.home": "",
"java.import.gradle.offline.enabled": false,
"java.import.gradle.arguments": "",
"java.import.gradle.jvmArguments": "",
- "java.import.gradle.user.home": null,
+ "java.import.gradle.user.home": "",
"java.import.gradle.importedProjects": [],
"java.import.gradle.excludedProjects": [],
"java.import.gradle.nestedProjects": true,
diff --git a/README_DEVELOPER.txt b/README_DEVELOPER.txt
index 697215de4a..e5d5610647 100644
--- a/README_DEVELOPER.txt
+++ b/README_DEVELOPER.txt
@@ -38,8 +38,8 @@ The JOGL library provides WorldWind Java with (1) a Java binding to the OpenGL A
with Java's AWT and Swing windowing toolkits:
http://jogamp.org/jogl/www/
-WorldWind Java uses JOGL v2.4, released on March 7th, 2020 and downloaded from:
-https://jogamp.org/deployment/v2.4.0-rc-20200307/archive/jogamp-all-platforms.7z
+WorldWind Java uses JOGL v2.6.0, released in 2024 and downloaded from:
+https://jogamp.org/deployment/v2.6.0/archive/jogamp-all-platforms.7z
The JOGL library compiled JAR files and README files are checked into the WorldWind Java source, distributed with all
WorldWind Java builds and included in the WorldWind Java Web Start deployment. This is necessary in order ensure
diff --git a/RELEASE_NOTES.txt b/RELEASE_NOTES.txt
index c92a05cca0..7f75619321 100644
--- a/RELEASE_NOTES.txt
+++ b/RELEASE_NOTES.txt
@@ -9,7 +9,7 @@ WorldWind's API remains unchanged in this release and we are committed to mainta
The primary goal of the WorldWind Java (WWJ) v2.2.0 release is to modernize the SDK after a period of inactivity. During this process some defects were addressed as well. Highlights of v2.2.0:
- Upgrade to Java 11
-- Upgrade to the OpenGL layer (JOGL) 2.4
+- Upgrade to the OpenGL layer (JOGL) 2.6.0
- Switch to the Apache 2.0 license
- Deprecation of unsupported functionality such as Applets, WebStart and WebView.
@@ -17,7 +17,7 @@ WorldWind's API remains largely unchanged in this release and we are committed t
The prior release of WorldWind Java, v2.1.0, was compiled with Java 8. The decision was made to upgrade WWJ to Java 11 based on questionable support options for Java 8 at the time. This situation has evolved over time and we are evaluating whether a Java 8 version of WWJ is desirable. Your feedback is welcome.
-Migrating to Java 11 and JOGL 2.4 went relatively smoothly. Primary areas of work:
+Migrating to Java 17 and JOGL 2.6.0 went relatively smoothly. Primary areas of work:
- The package names for JOGL have changed although the API remains relatively consistent.
- Creating work alike code to replace the use of unpublished JRE APIs that now throw an access exception. For example, setting the java library path system property. Discussions around the types of changes that need to be made when moving from 8 to 11 are broadly available on the Web.
diff --git a/bin/.gitignore b/bin/.gitignore
deleted file mode 100644
index 7ac70cd798..0000000000
--- a/bin/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/main/
-/test/
-/default/
diff --git a/build.gradle b/build.gradle
index 5deaf56ac6..b9026b564a 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,8 +1,16 @@
-apply plugin: 'java-library'
-apply plugin: 'maven-publish'
+plugins {
+ id 'java-library'
+ id 'maven-publish'
+}
group = 'earth.worldwind'
-version = '2.3.1' + (project.hasProperty('snapshot') ? '-SNAPSHOT' : '')
+version = '2.4.0' + (project.hasProperty('snapshot') ? '-SNAPSHOT' : '')
+
+java {
+ toolchain {
+ languageVersion = JavaLanguageVersion.of(17)
+ }
+}
ant {
property(file: 'release-build.properties')
@@ -10,10 +18,10 @@ ant {
}
ext {
- joglVersion = '2.5.0'
+ joglVersion = '2.6.0'
gdalVersion = '3.10.0'
- jacksonVersion = '1.9.13'
- junitVersion = '4.5'
+ jacksonVersion = '2.17.0'
+ junitVersion = '4.13.2'
}
repositories {
@@ -23,8 +31,11 @@ repositories {
}
dependencies {
- implementation "org.jogamp.jogl:jogl-all-main:$project.joglVersion"
- implementation "org.jogamp.gluegen:gluegen-rt-main:$project.joglVersion"
+ //implementation "org.jogamp.jogl:jogl-all-main:$project.joglVersion"
+ //implementation "org.jogamp.gluegen:gluegen-rt-main:$project.joglVersion"
+ // Use local JOGL files instead of Maven dependencies
+ implementation files("jogl-all.jar")
+ implementation files("gluegen-rt.jar")
if (project.hasProperty('systemGDAL')) {
implementation files("${ant.properties['gdal.jar.dir']}/gdal.jar")
@@ -32,7 +43,8 @@ dependencies {
implementation "org.gdal:gdal:$project.gdalVersion"
}
- implementation "org.codehaus.jackson:jackson-core-asl:$project.jacksonVersion"
+ implementation "com.fasterxml.jackson.core:jackson-core:$project.jacksonVersion"
+ implementation "com.fasterxml.jackson.core:jackson-databind:$project.jacksonVersion"
testImplementation "junit:junit:$project.junitVersion"
}
@@ -40,7 +52,7 @@ dependencies {
task sourcesJar(type: Jar, dependsOn: classes) {
group = 'build'
description = 'Assembles a jar archive containing the sources.'
- classifier = 'sources'
+ archiveClassifier = 'sources'
from (sourceSets.main.allSource) {
include '**/*.java'
exclude 'config/**'
@@ -52,7 +64,7 @@ task sourcesJar(type: Jar, dependsOn: classes) {
task extensionsJar(type: Jar) {
group = 'build'
description = 'Assembles a jar archive containing the extension classes.'
- baseName = 'worldwindx'
+ archiveBaseName = 'worldwindx'
from (sourceSets.main.output) {
exclude 'com/**'
exclude 'config/**'
@@ -62,8 +74,8 @@ task extensionsJar(type: Jar) {
doLast {
copy {
from "$buildDir/libs/$extensionsJar.archiveFileName"
- into project.projectDir
- rename "$extensionsJar.archiveFileName", "$extensionsJar.baseName.$extensionsJar.extension"
+ into projectDir
+ rename "$extensionsJar.archiveFileName", "$extensionsJar.archiveBaseName.$extensionsJar.archiveExtension"
}
}
}
@@ -71,7 +83,7 @@ task extensionsJar(type: Jar) {
task javadocJar(type: Jar, dependsOn: javadoc) {
group = 'build'
description = 'Assembles a jar archive containing the javadocs.'
- classifier = 'javadoc'
+ archiveClassifier = 'javadoc'
from javadoc.destinationDir
}
@@ -101,9 +113,9 @@ publishing {
from components.java
artifact sourcesJar
artifact javadocJar
- groupId project.group
- artifactId project.name
- version project.version
+ groupId = project.group
+ artifactId = project.name
+ version = project.version
pom.withXml {
def root = asNode()
root.appendNode('description',
@@ -138,6 +150,11 @@ sourceSets {
compileJava {
options.debug = !project.hasProperty('release')
+ options.release = 17
+}
+
+compileTestJava {
+ options.release = 17
}
test {
@@ -152,15 +169,15 @@ jar {
doLast {
copy {
from "$buildDir/libs/$jar.archiveFileName"
- into project.projectDir
- rename "$jar.archiveFileName", "$jar.baseName.$jar.extension"
+ into projectDir
+ rename "$jar.archiveFileName", "$jar.archiveBaseName.$jar.archiveExtension"
}
}
}
javadoc {
options {
- overview = "$project.projectDir/src/overview.html"
+ overview = "$projectDir/src/overview.html"
windowTitle = 'WorldWindJava API'
title = 'NASA WorldWind Java-Community Edition'
header = 'NASA WorldWind-CE'
@@ -169,6 +186,11 @@ javadoc {
version = false
author = false
use = true
+ // Make Javadoc more lenient to handle HTML issues
+ addBooleanOption('Xdoclint:none', true)
+ addBooleanOption('quiet', true)
+ // Java 17 compatibility
+ addStringOption('source', '17')
}
exclude 'com/**'
exclude 'gov/nasa/worldwind/formats/**'
@@ -259,14 +281,32 @@ task milStd2525Zip(type: Zip, dependsOn: processMilStd2525SVGs) {
def milStd2525PngDir = file(ant.properties['milstd2525.png.dir'])
from milStd2525PngDir
include '**/*'
- archiveName 'milstd2525-symbols.zip'
- destinationDir milStd2525OutDir
+ archiveFileName = 'milstd2525-symbols.zip'
+ destinationDirectory = milStd2525OutDir
}
task runLayerManager(type: JavaExec, dependsOn: classes) {
group = 'run'
description = 'Runs the LayerManager example app.'
classpath sourceSets.main.runtimeClasspath
- main = 'gov.nasa.worldwindx.examples.layermanager.LayerManagerApp'
- systemProperty 'java.util.logging.config.file', "$project.projectDir/logging.properties"
+ mainClass = 'gov.nasa.worldwindx.examples.layermanager.LayerManagerApp'
+ systemProperty 'java.util.logging.config.file', "$projectDir/logging.properties"
+ jvmArgs = [
+ '--add-exports', 'java.base/java.lang=ALL-UNNAMED',
+ '--add-exports', 'java.desktop/sun.awt=ALL-UNNAMED',
+ '--add-exports', 'java.desktop/sun.java2d=ALL-UNNAMED'
+ ]
}
+
+task runWorldWindow(type: JavaExec, dependsOn: classes) {
+ group = 'run'
+ description = 'Runs the WorldWindow application with Java 17 compatibility options.'
+ classpath sourceSets.main.runtimeClasspath
+ mainClass = 'gov.nasa.worldwindx.applications.worldwindow.WorldWindow'
+ systemProperty 'java.util.logging.config.file', "$projectDir/logging.properties"
+ jvmArgs = [
+ '--add-exports', 'java.base/java.lang=ALL-UNNAMED',
+ '--add-exports', 'java.desktop/sun.awt=ALL-UNNAMED',
+ '--add-exports', 'java.desktop/sun.java2d=ALL-UNNAMED'
+ ]
+}
\ No newline at end of file
diff --git a/gluegen-rt-natives-linux-amd64.jar b/gluegen-rt-natives-linux-amd64.jar
new file mode 100644
index 0000000000..3f68bf6a3c
Binary files /dev/null and b/gluegen-rt-natives-linux-amd64.jar differ
diff --git a/gluegen-rt-natives-macosx-universal.jar b/gluegen-rt-natives-macosx-universal.jar
new file mode 100644
index 0000000000..c617c389b6
Binary files /dev/null and b/gluegen-rt-natives-macosx-universal.jar differ
diff --git a/gluegen-rt-natives-windows-amd64.jar b/gluegen-rt-natives-windows-amd64.jar
new file mode 100644
index 0000000000..2d0fc8d8ef
Binary files /dev/null and b/gluegen-rt-natives-windows-amd64.jar differ
diff --git a/gluegen-rt.jar b/gluegen-rt.jar
new file mode 100644
index 0000000000..5d39088388
Binary files /dev/null and b/gluegen-rt.jar differ
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 0000000000..a2745f670f
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,3 @@
+org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m
+org.gradle.daemon=false
+org.gradle.parallel=false
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index f398c33c4b..fa5602a8e6 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-bin.zip
networkTimeout=10000
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/install jogl artifacts to local m2.bat b/install jogl artifacts to local m2.bat
new file mode 100644
index 0000000000..973c5fed89
--- /dev/null
+++ b/install jogl artifacts to local m2.bat
@@ -0,0 +1,15 @@
+mvn install:install-file -Dfile=D:\worskpaces\workspaceHackaton2015\WorldWindJava_CE\WorldWindJava\worldwind-2.4.0.jar -DgroupId=com.ursulagis -DartifactId=worldwind -Dversion=2.4.0 -Dpackaging=jar -DgeneratePom=true
+mvn install:install-file -Dfile=D:\worskpaces\workspaceHackaton2015\WorldWindJava_CE\WorldWindJava\worldwindx-2.4.0.jar -DgroupId=com.ursulagis -DartifactId=worldwindx -Dversion=2.4.0 -Dpackaging=jar -DgeneratePom=true
+
+mvn install:install-file -Dfile=D:\worskpaces\workspaceHackaton2015\WorldWindJava_CE\WorldWindJava\gluegen-rt.jar -DgroupId=com.ursulagis -DartifactId=gluegen-rt -Dversion=2.4.0 -Dpackaging=jar -DgeneratePom=true
+mvn install:install-file -Dfile=D:\worskpaces\workspaceHackaton2015\WorldWindJava_CE\WorldWindJava\gluegen-rt-natives-linux-amd64.jar -DgroupId=com.ursulagis -DartifactId=gluegen-rt-natives-linux-amd64 -Dversion=2.4.0 -Dpackaging=jar -DgeneratePom=true
+mvn install:install-file -Dfile=D:\worskpaces\workspaceHackaton2015\WorldWindJava_CE\WorldWindJava\gluegen-rt-natives-linux-i586.jar -DgroupId=com.ursulagis -DartifactId=gluegen-rt-natives-linux-i586 -Dversion=2.4.0 -Dpackaging=jar -DgeneratePom=true
+mvn install:install-file -Dfile=D:\worskpaces\workspaceHackaton2015\WorldWindJava_CE\WorldWindJava\gluegen-rt-natives-macosx-universal.jar -DgroupId=com.ursulagis -DartifactId=gluegen-rt-natives-macosx-universal -Dversion=2.4.0 -Dpackaging=jar -DgeneratePom=true
+mvn install:install-file -Dfile=D:\worskpaces\workspaceHackaton2015\WorldWindJava_CE\WorldWindJava\gluegen-rt-natives-windows-amd64.jar -DgroupId=com.ursulagis -DartifactId=gluegen-rt-natives-windows-amd64 -Dversion=2.4.0 -Dpackaging=jar -DgeneratePom=true
+mvn install:install-file -Dfile=D:\worskpaces\workspaceHackaton2015\WorldWindJava_CE\WorldWindJava\gluegen-rt-natives-windows-i586.jar -DgroupId=com.ursulagis -DartifactId=gluegen-rt-natives-windows-i586 -Dversion=2.4.0 -Dpackaging=jar -DgeneratePom=true
+mvn install:install-file -Dfile=D:\worskpaces\workspaceHackaton2015\WorldWindJava_CE\WorldWindJava\jogl-all.jar -DgroupId=com.ursulagis -DartifactId=jogl-all -Dversion=2.4.0 -Dpackaging=jar -DgeneratePom=true
+mvn install:install-file -Dfile=D:\worskpaces\workspaceHackaton2015\WorldWindJava_CE\WorldWindJava\jogl-all-natives-linux-amd64.jar -DgroupId=com.ursulagis -DartifactId=jogl-all-natives-linux-amd64 -Dversion=2.4.0 -Dpackaging=jar -DgeneratePom=true
+mvn install:install-file -Dfile=D:\worskpaces\workspaceHackaton2015\WorldWindJava_CE\WorldWindJava\jogl-all-natives-linux-i586.jar -DgroupId=com.ursulagis -DartifactId=jogl-all-natives-linux-i586 -Dversion=2.4.0 -Dpackaging=jar -DgeneratePom=true
+mvn install:install-file -Dfile=D:\worskpaces\workspaceHackaton2015\WorldWindJava_CE\WorldWindJava\jogl-all-natives-macosx-universal.jar -DgroupId=com.ursulagis -DartifactId=jogl-all-natives-macosx-universal -Dversion=2.4.0 -Dpackaging=jar -DgeneratePom=true
+mvn install:install-file -Dfile=D:\worskpaces\workspaceHackaton2015\WorldWindJava_CE\WorldWindJava\jogl-all-natives-windows-amd64.jar -DgroupId=com.ursulagis -DartifactId=jogl-all-natives-windows-amd64 -Dversion=2.4.0 -Dpackaging=jar -DgeneratePom=true
+mvn install:install-file -Dfile=D:\worskpaces\workspaceHackaton2015\WorldWindJava_CE\WorldWindJava\jogl-all-natives-windows-i586.jar -DgroupId=com.ursulagis -DartifactId=jogl-all-natives-windows-i586 -Dversion=2.4.0 -Dpackaging=jar -DgeneratePom=true
\ No newline at end of file
diff --git a/jogl-all-natives-linux-amd64.jar b/jogl-all-natives-linux-amd64.jar
new file mode 100644
index 0000000000..2251e86bab
Binary files /dev/null and b/jogl-all-natives-linux-amd64.jar differ
diff --git a/jogl-all-natives-macosx-universal.jar b/jogl-all-natives-macosx-universal.jar
new file mode 100644
index 0000000000..27eca24dc1
Binary files /dev/null and b/jogl-all-natives-macosx-universal.jar differ
diff --git a/jogl-all-natives-windows-amd64.jar b/jogl-all-natives-windows-amd64.jar
new file mode 100644
index 0000000000..9c2dc2f6a6
Binary files /dev/null and b/jogl-all-natives-windows-amd64.jar differ
diff --git a/jogl-all.jar b/jogl-all.jar
new file mode 100644
index 0000000000..ec7f0202af
Binary files /dev/null and b/jogl-all.jar differ
diff --git a/junit-4.5.jar b/junit-4.5.jar
new file mode 100644
index 0000000000..733921623d
Binary files /dev/null and b/junit-4.5.jar differ
diff --git a/lib-external/gdal/gdal.jar b/lib-external/gdal/gdal.jar
new file mode 100644
index 0000000000..8443c2efc2
Binary files /dev/null and b/lib-external/gdal/gdal.jar differ
diff --git a/lib-external/gdal/gdalalljni.dll b/lib-external/gdal/gdalalljni.dll
new file mode 100644
index 0000000000..4456e00f6a
Binary files /dev/null and b/lib-external/gdal/gdalalljni.dll differ
diff --git a/nbproject/project.properties b/nbproject/project.properties
index fab181db51..e7438166ed 100644
--- a/nbproject/project.properties
+++ b/nbproject/project.properties
@@ -56,8 +56,8 @@ javac.modulepath=
javac.processormodulepath=
javac.processorpath=\
${javac.classpath}
-javac.source=11
-javac.target=11
+javac.source=17
+javac.target=17
javac.test.classpath=\
${javac.classpath}:\
${build.classes.dir}
diff --git a/release-build.properties b/release-build.properties
index cde1c0e4de..1a2dba62d2 100644
--- a/release-build.properties
+++ b/release-build.properties
@@ -38,7 +38,7 @@ worldwind.classes.dir=${worldwind.build.dir}/classes
worldwind.doc.dir=${worldwind.build.dir}/doc
worldwind.jar.dir=${worldwind.build.dir}/jar
worldwind.test.results.dir=${worldwind.build.dir}/test-results
-worldwind.jdk=11
+worldwind.jdk=17
#worldwind.exclude.jackson=true
# MIL-STD-2525 package build properties
diff --git a/release-build.xml b/release-build.xml
index 9810ad732d..7fc9a726a1 100644
--- a/release-build.xml
+++ b/release-build.xml
@@ -127,7 +127,7 @@
-
+
diff --git a/run-demo.bat b/run-demo.bat
index cbc67c0b8d..5edf474ddc 100755
--- a/run-demo.bat
+++ b/run-demo.bat
@@ -25,9 +25,9 @@ REM A complete listing of 3rd Party software notices and licenses included in
REM NASA World Wind Java (WWJ) can be found in the WorldWindJava-v2.2 3rd-party
REM notices and licenses PDF found in code directory.
-REM Default to the ApplicationTemplate example if a class name is not provided
-IF "%1"=="" (SET WWDEMO=gov.nasa.worldwindx.examples.ApplicationTemplate) ELSE (SET WWDEMO=%*)
+REM Default to the WorldWindow application if a class name is not provided
+IF "%1"=="" (SET WWDEMO=gov.nasa.worldwindx.applications.worldwindow.WorldWindow) ELSE (SET WWDEMO=%*)
-REM Run a WorldWind Demo
+REM Run a WorldWind Demo with Java 17 compatibility
@echo Running %WWDEMO%
-java -Xmx1024m -Dsun.java2d.noddraw=true -classpath .\worldwind.jar;.\worldwindx.jar;.\gdal.jar;.\jogl-all.jar;.\gluegen-rt.jar %WWDEMO%
+java -Xmx1024m -Dsun.java2d.noddraw=true --add-exports java.base/java.lang=ALL-UNNAMED --add-exports java.desktop/sun.awt=ALL-UNNAMED --add-exports java.desktop/sun.java2d=ALL-UNNAMED -Djava.util.logging.config.file=logging.properties -classpath .\build\classes\java\main;.\build\libs\worldwind-2.4.0.jar;.\build\libs\worldwindx-2.4.0.jar;.\gdal.jar;.\jogl-all.jar;.\gluegen-rt.jar %WWDEMO%
diff --git a/run_with_java17.bat b/run_with_java17.bat
new file mode 100644
index 0000000000..e8fe64b261
--- /dev/null
+++ b/run_with_java17.bat
@@ -0,0 +1,26 @@
+@echo off
+echo Running WorldWind Java with Java 17 compatibility options...
+echo.
+
+REM Set Java 17 JVM options for JOGL compatibility
+set JVM_OPTS=--add-exports java.base/java.lang=ALL-UNNAMED --add-exports java.desktop/sun.awt=ALL-UNNAMED --add-exports java.desktop/sun.java2d=ALL-UNNAMED
+
+REM Check if Java is available
+java -version >nul 2>&1
+if %errorlevel% neq 0 (
+ echo ERROR: Java is not found in PATH. Please ensure Java 17 is installed and configured.
+ pause
+ exit /b 1
+)
+
+echo Java version:
+java -version
+echo.
+
+echo Starting WorldWind Java with JVM options: %JVM_OPTS%
+echo.
+
+REM Run the application with JVM options
+java %JVM_OPTS% -cp "build/libs/*;jogl-all.jar;gluegen-rt.jar;worldwind-2.4.0.jar;worldwindx-2.4.0.jar" gov.nasa.worldwindx.applications.worldwindow.WorldWindow
+
+pause
diff --git a/src/config/worldwind.layers.xml b/src/config/worldwind.layers.xml
index 49e9db44b4..8b4535dc95 100644
--- a/src/config/worldwind.layers.xml
+++ b/src/config/worldwind.layers.xml
@@ -41,29 +41,29 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
\ No newline at end of file
+
+
diff --git a/src/config/worldwind.xml b/src/config/worldwind.xml
index dc95479b47..774ca09333 100644
--- a/src/config/worldwind.xml
+++ b/src/config/worldwind.xml
@@ -117,10 +117,11 @@
-
+ See https://goworldwind.org/developers-guide/symbology/tactical-symbols/#offline-use for more information on how
+ to configure a local symbol repository.
+ Examples: http://myserver.com/milstd2525/ (web server)
+ jar:file:milstd2525-symbols.zip! (local zip archive) -->
+
+
+
\ No newline at end of file
diff --git a/src/gov/nasa/worldwind/awt/WorldWindowGLJPanel.java b/src/gov/nasa/worldwind/awt/WorldWindowGLJPanel.java
index 0b2a37322c..fbcac4f605 100644
--- a/src/gov/nasa/worldwind/awt/WorldWindowGLJPanel.java
+++ b/src/gov/nasa/worldwind/awt/WorldWindowGLJPanel.java
@@ -94,6 +94,7 @@ public WorldWindowGLJPanel()
this.createDefaultInputHandler();
WorldWind.addPropertyChangeListener(WorldWind.SHUTDOWN_EVENT, this);
this.wwd.endInitialization();
+
}
catch (Exception e)
{
diff --git a/src/gov/nasa/worldwind/formats/geojson/GeoJSONDoc.java b/src/gov/nasa/worldwind/formats/geojson/GeoJSONDoc.java
index 62cc433c22..13b532a8f2 100644
--- a/src/gov/nasa/worldwind/formats/geojson/GeoJSONDoc.java
+++ b/src/gov/nasa/worldwind/formats/geojson/GeoJSONDoc.java
@@ -28,7 +28,7 @@
package gov.nasa.worldwind.formats.geojson;
import gov.nasa.worldwind.formats.json.*;
-import org.codehaus.jackson.JsonParser;
+import com.fasterxml.jackson.core.JsonParser;
import java.io.IOException;
diff --git a/src/gov/nasa/worldwind/formats/geojson/GeoJSONEventParserContext.java b/src/gov/nasa/worldwind/formats/geojson/GeoJSONEventParserContext.java
index d15f507477..c366280b11 100644
--- a/src/gov/nasa/worldwind/formats/geojson/GeoJSONEventParserContext.java
+++ b/src/gov/nasa/worldwind/formats/geojson/GeoJSONEventParserContext.java
@@ -27,7 +27,7 @@
*/
package gov.nasa.worldwind.formats.geojson;
-import org.codehaus.jackson.JsonParser;
+import com.fasterxml.jackson.core.JsonParser;
import gov.nasa.worldwind.formats.json.*;
import java.io.IOException;
diff --git a/src/gov/nasa/worldwind/formats/json/BasicJSONEvent.java b/src/gov/nasa/worldwind/formats/json/BasicJSONEvent.java
index 5ca60fddcf..7d9f773b31 100644
--- a/src/gov/nasa/worldwind/formats/json/BasicJSONEvent.java
+++ b/src/gov/nasa/worldwind/formats/json/BasicJSONEvent.java
@@ -28,7 +28,7 @@
package gov.nasa.worldwind.formats.json;
import gov.nasa.worldwind.util.Logging;
-import org.codehaus.jackson.*;
+import com.fasterxml.jackson.core.*;
import java.io.IOException;
diff --git a/src/gov/nasa/worldwind/formats/json/BasicJSONEventParserContext.java b/src/gov/nasa/worldwind/formats/json/BasicJSONEventParserContext.java
index fc577ff1d8..dbcf3942a2 100644
--- a/src/gov/nasa/worldwind/formats/json/BasicJSONEventParserContext.java
+++ b/src/gov/nasa/worldwind/formats/json/BasicJSONEventParserContext.java
@@ -28,7 +28,7 @@
package gov.nasa.worldwind.formats.json;
import gov.nasa.worldwind.util.Logging;
-import org.codehaus.jackson.*;
+import com.fasterxml.jackson.core.*;
import java.io.IOException;
import java.util.*;
diff --git a/src/gov/nasa/worldwind/formats/json/JSONDoc.java b/src/gov/nasa/worldwind/formats/json/JSONDoc.java
index ea01056b56..87a3e81ec5 100644
--- a/src/gov/nasa/worldwind/formats/json/JSONDoc.java
+++ b/src/gov/nasa/worldwind/formats/json/JSONDoc.java
@@ -29,7 +29,7 @@
import gov.nasa.worldwind.exception.WWRuntimeException;
import gov.nasa.worldwind.util.*;
-import org.codehaus.jackson.*;
+import com.fasterxml.jackson.core.*;
import java.io.*;
diff --git a/src/gov/nasa/worldwind/formats/tiff/GeotiffReader.java b/src/gov/nasa/worldwind/formats/tiff/GeotiffReader.java
index 63fdbda004..af2713a70e 100644
--- a/src/gov/nasa/worldwind/formats/tiff/GeotiffReader.java
+++ b/src/gov/nasa/worldwind/formats/tiff/GeotiffReader.java
@@ -41,6 +41,7 @@
import java.nio.*;
import java.nio.channels.FileChannel;
import java.util.ArrayList;
+import java.util.Arrays;
/**
* @author brownrigg
@@ -214,6 +215,7 @@ public DataRaster doRead(int imageIndex) throws IOException {
tiff.rowsPerStrip = Integer.MAX_VALUE;
}
+ tiff.planarConfig = Tiff.PlanarConfiguration.PLANAR;
if (tiff.planarConfig != Tiff.PlanarConfiguration.PLANAR
&& tiff.planarConfig != Tiff.PlanarConfiguration.CHUNKY) {
String msg = Logging.getMessage("GeotiffReader.InvalidIFDEntryValue", tiff.planarConfig,
@@ -227,10 +229,13 @@ public DataRaster doRead(int imageIndex) throws IOException {
switch (entry.tag) {
case Tiff.Tag.STRIP_OFFSETS:
stripOffsets = entry.getAsLongs();
+ System.out.println("offsets= "+Arrays.toString(stripOffsets));
+ //[384, 8232, 16080][462, 8222, 15982, 23742, 31502, 39262, 47022, 54782, 62542, 70302, 78062, 85822, 93582, 101342, 109102, 116862][504, 8372, 16240, 24108, 31976, 39844, 47712, 55580, 63448, 71316, 79184, 87052, 94920, 102788, 110656, 118524, 126392, 134260, 142128, 149996, 157864, 165732, 173600][396, 8396, 16396, 24396, 32396][504, 8372, 16240, 24108, 31976, 39844, 47712, 55580, 63448, 71316, 79184, 87052, 94920, 102788, 110656, 118524, 126392, 134260, 142128, 149996, 157864, 165732, 173600][504, 8372, 16240, 24108, 31976, 39844, 47712, 55580, 63448, 71316, 79184, 87052, 94920, 102788, 110656, 118524, 126392, 134260, 142128, 149996, 157864, 165732, 173600][384, 8232, 16080][384, 8232, 16080][504, 8372, 16240, 24108, 31976, 39844, 47712, 55580, 63448, 71316, 79184, 87052, 94920, 102788, 110656, 118524, 126392, 134260, 142128, 149996, 157864, 165732, 173600][504, 8372, 16240, 24108, 31976, 39844, 47712, 55580, 63448, 71316, 79184, 87052, 94920, 102788, 110656, 118524, 126392, 134260, 142128, 149996, 157864, 165732, 173600][504, 8372, 16240, 24108, 31976, 39844, 47712, 55580, 63448, 71316, 79184, 87052, 94920, 102788, 110656, 118524, 126392, 134260, 142128, 149996, 157864, 165732, 173600][504, 8372, 16240, 24108, 31976, 39844, 47712, 55580, 63448, 71316, 79184, 87052, 94920, 102788, 110656, 118524, 126392, 134260, 142128, 149996, 157864, 165732, 173600][462, 8222, 15982, 23742, 31502, 39262, 47022, 54782, 62542, 70302, 78062, 85822, 93582, 101342, 109102, 116862][384, 8232, 16080][504, 8372, 16240, 24108, 31976, 39844, 47712, 55580, 63448, 71316, 79184, 87052, 94920, 102788, 110656, 118524, 126392, 134260, 142128, 149996, 157864, 165732, 173600]
break;
case Tiff.Tag.STRIP_BYTE_COUNTS:
stripCounts = entry.getAsLongs();
+ System.out.println("stripCounts= "+Arrays.toString(stripCounts));
break;
case Tiff.Tag.COLORMAP:
@@ -241,6 +246,14 @@ public DataRaster doRead(int imageIndex) throws IOException {
Logging.logger().finest(e.toString());
}
}
+
+ if (null == stripOffsets || 0 == stripOffsets.length) {
+ stripOffsets=new long[1];
+ stripOffsets[0]=tiff.height*tiff.width;
+ stripCounts=new long[1];
+ stripCounts[0]=1;
+ }
+
if (null == stripOffsets || 0 == stripOffsets.length) {
String message = Logging.getMessage("GeotiffReader.MissingRequiredTag", "StripOffsets");
@@ -262,7 +275,11 @@ public DataRaster doRead(int imageIndex) throws IOException {
if ((predictorEntry != null) && (predictorEntry.asLong() != 0)) {
tiffDifferencing = true;
}
- } else if (notToday != null && notToday.asLong() != Tiff.Compression.NONE) {
+
+ }
+ else if (notToday != null && notToday.asLong() != Tiff.Compression.NONE)
+ {
+ System.out.println("compression tag "+notToday.tag+" long "+notToday.asLong());
String message = Logging.getMessage("GeotiffReader.CompressionFormatNotSupported");
Logging.logger().severe(message);
throw new IOException(message);
diff --git a/src/gov/nasa/worldwind/layers/TerrainProfileLayer.java b/src/gov/nasa/worldwind/layers/TerrainProfileLayer.java
index 149ab8c2eb..b80cd46102 100644
--- a/src/gov/nasa/worldwind/layers/TerrainProfileLayer.java
+++ b/src/gov/nasa/worldwind/layers/TerrainProfileLayer.java
@@ -1275,7 +1275,7 @@ protected Position computePickPosition(DrawContext dc, Vec4 locationSW, Dimensio
if (this.pickedShape == null) {
this.pickedShape = new Path(posList);
this.pickedShape.setPathType(AVKey.LINEAR);
- var attrs = new BasicShapeAttributes();
+ BasicShapeAttributes attrs = new BasicShapeAttributes();
attrs.setOutlineWidth(2);
attrs.setOutlineMaterial(new Material(new Color(this.color.getRed(),
this.color.getGreen(), (int) (this.color.getBlue() * .8), (int) (255 * .8))));
@@ -1448,7 +1448,7 @@ protected void computeProfile(DrawContext dc) {
if (this.selectionShape == null) {
this.selectionShape = new Path(Arrays.asList(this.positions));
this.selectionShape.setSurfacePath(true);
- var attrs = new BasicShapeAttributes();
+ BasicShapeAttributes attrs = new BasicShapeAttributes();
attrs.setOutlineWidth(2);
attrs.setOutlineMaterial(new Material(new Color(this.color.getRed(),
this.color.getGreen(), (int) (this.color.getBlue() * .5), (int) (255 * .8))));
diff --git a/src/gov/nasa/worldwind/ogc/wms/WMSLogoURL.java b/src/gov/nasa/worldwind/ogc/wms/WMSLogoURL.java
index 4325a261f1..6b38450f31 100644
--- a/src/gov/nasa/worldwind/ogc/wms/WMSLogoURL.java
+++ b/src/gov/nasa/worldwind/ogc/wms/WMSLogoURL.java
@@ -45,9 +45,9 @@ public class WMSLogoURL extends WMSLayerInfoURL
protected Integer width;
protected Integer height;
- public WMSLogoURL(String namespaceURI)
- {
+ public WMSLogoURL(String namespaceURI) {
super(namespaceURI);
+
}
@Override
@@ -73,8 +73,11 @@ protected void doParseEventAttributes(XMLEventParserContext ctx, XMLEvent event,
if (attr.getName().getLocalPart().equals("height") && attr.getValue() != null)
{
Integer i = WWUtil.convertStringToInteger(attr.getValue());
- if (i != null)
- this.setHeight(i);
+ if (i != null) {
+ this.setHeight(i);
+ } else {
+ System.out.println("fallo parsear la altura para el logo de "+this.namespaceURI);
+ }
}
}
}
diff --git a/src/gov/nasa/worldwind/render/ContourLine.java b/src/gov/nasa/worldwind/render/ContourLine.java
index 3e487e2684..3fed60b524 100644
--- a/src/gov/nasa/worldwind/render/ContourLine.java
+++ b/src/gov/nasa/worldwind/render/ContourLine.java
@@ -423,7 +423,7 @@ protected int makePathsConnected(DrawContext dc, ArrayList inter,
line = new Path(positions);
line.setNumSubsegments(0);
line.setSurfacePath(true);
- var attrs = new BasicShapeAttributes();
+ BasicShapeAttributes attrs = new BasicShapeAttributes();
attrs.setOutlineWidth(this.getLineWidth());
attrs.setOutlineMaterial(new Material(this.getColor()));
line.setAttributes(attrs);
diff --git a/src/gov/nasa/worldwind/util/JOGLVersionInfo.java b/src/gov/nasa/worldwind/util/JOGLVersionInfo.java
index ba6ab8e612..43d050b886 100644
--- a/src/gov/nasa/worldwind/util/JOGLVersionInfo.java
+++ b/src/gov/nasa/worldwind/util/JOGLVersionInfo.java
@@ -48,11 +48,11 @@ private static Package pkgInfo(ClassLoader classLoader, String pkgName, String c
Package p = null;
try {
- classLoader.loadClass(pkgName + "." + className);
+ Class> clase = classLoader.loadClass(pkgName + "." + className);
// TODO: message logging
- p = classLoader.getDefinedPackage(pkgName);
- if (p == null) {
+ p = clase.getPackage();// p = classLoader.getDefinedPackage(pkgName);
+ if (pkgName == null) {
System.out.println("WARNING: Package.getPackage(" + pkgName + ") is null");
}
} catch (ClassNotFoundException e) {
diff --git a/src/gov/nasa/worldwind/util/WWUtil.java b/src/gov/nasa/worldwind/util/WWUtil.java
index abf9098d6c..e2a6193e71 100644
--- a/src/gov/nasa/worldwind/util/WWUtil.java
+++ b/src/gov/nasa/worldwind/util/WWUtil.java
@@ -58,7 +58,7 @@ public static Integer convertStringToInteger(String s)
if (s == null)
{
String message = Logging.getMessage("nullValue.StringIsNull");
- Logging.logger().severe(message);
+ Logging.logger().fine(message);
throw new IllegalArgumentException(message);
}
@@ -68,15 +68,20 @@ public static Integer convertStringToInteger(String s)
{
return null;
}
-
- return Integer.valueOf(s);
+ Number n = NumberFormat.getInstance().parse(s);
+ return n.intValue();
+ //return Integer.valueOf(s);
}
catch (NumberFormatException e)
{
String message = Logging.getMessage("generic.ConversionError", s);
- Logging.logger().log(java.util.logging.Level.SEVERE, message, e);
+ Logging.logger().log(java.util.logging.Level.FINE, message, e);
return null;
- }
+ } catch (ParseException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ return null;
+ }
}
/**
diff --git a/src/gov/nasa/worldwind/util/measure/MeasureTool.java b/src/gov/nasa/worldwind/util/measure/MeasureTool.java
index 65960b10c4..71112a5427 100644
--- a/src/gov/nasa/worldwind/util/measure/MeasureTool.java
+++ b/src/gov/nasa/worldwind/util/measure/MeasureTool.java
@@ -1777,7 +1777,7 @@ protected void updateMeasureShape() {
this.line = new Path();
setFollowTerrain(this.isFollowTerrain());
this.line.setPathType(this.getPathType());
- var attrs = new BasicShapeAttributes();
+ BasicShapeAttributes attrs = new BasicShapeAttributes();
attrs.setOutlineWidth(this.getLineWidth());
attrs.setOutlineMaterial(new Material(this.getLineColor()));
this.line.setAttributes(attrs);
diff --git a/src/gov/nasa/worldwind/util/measure/MeasureToolController.java b/src/gov/nasa/worldwind/util/measure/MeasureToolController.java
index 6b9b8eba5f..b4b2a12912 100644
--- a/src/gov/nasa/worldwind/util/measure/MeasureToolController.java
+++ b/src/gov/nasa/worldwind/util/measure/MeasureToolController.java
@@ -43,7 +43,8 @@
* @see MeasureTool
*/
public class MeasureToolController extends MouseAdapter
- implements MouseListener, MouseMotionListener, SelectListener, PositionListener, RenderingListener
+ implements MouseListener, MouseMotionListener,
+ SelectListener, PositionListener, RenderingListener
{
protected MeasureTool measureTool;
@@ -219,10 +220,9 @@ public void mousePressed(MouseEvent mouseEvent)
if (measureTool.addControlPoint() != null) // null when the cursor is off the globe
{
- if (measureTool.getControlPoints().size() == 1)
- {
- measureTool.addControlPoint(); // Simulate a second click
- }
+// if (measureTool.getControlPoints().size() == 1) {
+// measureTool.addControlPoint(); // Simulate a second click
+// }
// Set the rubber band target to the last control point or the relevant control for regular shapes.
if (measureTool.isRegularShape())
{
@@ -256,8 +256,8 @@ public void mouseReleased(MouseEvent mouseEvent)
{
if (this.isArmed() && this.isUseRubberBand() && mouseEvent.getButton() == MouseEvent.BUTTON1)
{
- if (measureTool.getPositions().size() == 1)
- measureTool.removeControlPoint();
+// if (measureTool.getPositions().size() == 1)
+// measureTool.removeControlPoint();
this.setActive(false);
rubberBandTarget = null;
// Disarm after second control point of a line or regular shape
diff --git a/src/gov/nasa/worldwindx/applications/glider/GliderImageLayer.java b/src/gov/nasa/worldwindx/applications/glider/GliderImageLayer.java
index 46ec864861..72baf93fc3 100644
--- a/src/gov/nasa/worldwindx/applications/glider/GliderImageLayer.java
+++ b/src/gov/nasa/worldwindx/applications/glider/GliderImageLayer.java
@@ -171,7 +171,7 @@ protected static List makePaths(GliderRegionOfInterest.RegionSet reg
for (GliderRegionOfInterest region : regions.regions) {
Path p = new Path(region.getLocations(), altitude);
- var attrs = new BasicShapeAttributes();
+ BasicShapeAttributes attrs = new BasicShapeAttributes();
attrs.setOutlineMaterial(new Material(region.getColor()));
p.setAttributes(attrs);
p.setSurfacePath(true);
diff --git a/src/gov/nasa/worldwindx/applications/sar/SAR2.java b/src/gov/nasa/worldwindx/applications/sar/SAR2.java
index 12bedb563d..4e823a70a4 100644
--- a/src/gov/nasa/worldwindx/applications/sar/SAR2.java
+++ b/src/gov/nasa/worldwindx/applications/sar/SAR2.java
@@ -807,7 +807,7 @@ public void windowClosed(WindowEvent event)
newTrack.setText("New Track...");
newTrack.setMnemonic('N');
newTrack.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
newTrack.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
@@ -822,7 +822,7 @@ public void actionPerformed(ActionEvent e)
openTrackFile.setText("Open Track File...");
openTrackFile.setMnemonic('O');
openTrackFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
openTrackFile.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
@@ -837,7 +837,7 @@ public void actionPerformed(ActionEvent e)
openTrackURL.setText("Open Track URL...");
openTrackURL.setMnemonic('U');
openTrackURL.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
openTrackURL.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
@@ -853,7 +853,7 @@ public void actionPerformed(ActionEvent e)
removeTrack.setMnemonic('C');
removeTrack.setAccelerator(KeyStroke.getKeyStroke(
Configuration.isMacOS() ? KeyEvent.VK_W : KeyEvent.VK_F4,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
removeTrack.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
@@ -871,7 +871,7 @@ public void actionPerformed(ActionEvent e)
saveTrack.setText("Save Track");
saveTrack.setMnemonic('S');
saveTrack.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
saveTrack.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
@@ -888,7 +888,7 @@ public void actionPerformed(ActionEvent event)
saveTrackAs.setText("Save Track As...");
saveTrackAs.setMnemonic('A');
saveTrackAs.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx() + java.awt.event.InputEvent.SHIFT_DOWN_MASK));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() + java.awt.event.InputEvent.SHIFT_DOWN_MASK));
saveTrackAs.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
@@ -904,7 +904,7 @@ public void actionPerformed(ActionEvent event)
screenShot.setIcon(null); // Make sure the menu items displays only text.
screenShot.setMnemonic('T');
screenShot.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
fileMenu.add(screenShot);
//--------
@@ -914,7 +914,7 @@ public void actionPerformed(ActionEvent event)
bulkDownload.setText("Bulk download...");
bulkDownload.setMnemonic('B');
bulkDownload.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
bulkDownload.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
@@ -1004,7 +1004,7 @@ public void actionPerformed(ActionEvent event)
metersMenuItem.setText("Meters");
metersMenuItem.setMnemonic('M');
metersMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_M,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
metersMenuItem.setActionCommand(UNIT_METRIC);
metersMenuItem.addActionListener(new ActionListener()
{
@@ -1042,7 +1042,7 @@ public void actionPerformed(ActionEvent e)
angleDDMenuItem.setText("Angles DD");
angleDDMenuItem.setMnemonic('D');
angleDDMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
angleDDMenuItem.setActionCommand(Angle.ANGLE_FORMAT_DD);
angleDDMenuItem.addActionListener(new ActionListener()
{
@@ -1086,7 +1086,7 @@ public void actionPerformed(ActionEvent e)
newAnnotation.setText("New Annotation...");
newAnnotation.setMnemonic('N');
newAnnotation.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
newAnnotation.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
@@ -1101,7 +1101,7 @@ public void actionPerformed(ActionEvent e)
removeAnnotation.setText("Remove Annotation");
removeAnnotation.setMnemonic('R');
removeAnnotation.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx() + java.awt.event.InputEvent.SHIFT_DOWN_MASK));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() + java.awt.event.InputEvent.SHIFT_DOWN_MASK));
removeAnnotation.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
@@ -1157,7 +1157,7 @@ public void itemStateChanged(ItemEvent e)
sarHelp.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0));
else
sarHelp.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_HELP,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
sarHelp.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
diff --git a/src/gov/nasa/worldwindx/applications/sar/TrackController.java b/src/gov/nasa/worldwindx/applications/sar/TrackController.java
index ae4eded386..c0d2715404 100644
--- a/src/gov/nasa/worldwindx/applications/sar/TrackController.java
+++ b/src/gov/nasa/worldwindx/applications/sar/TrackController.java
@@ -196,7 +196,7 @@ private void createPathTrackRepresentation(SARTrack track) {
Path airPath = new Path(track);
airPath.setOffset(track.getOffset());
airPath.setPathType(AVKey.RHUMB_LINE);
- var attrs = new BasicShapeAttributes();
+ BasicShapeAttributes attrs = new BasicShapeAttributes();
attrs.setOutlineMaterial(new Material(track.getColor()));
airPath.setAttributes(attrs);
diff --git a/src/gov/nasa/worldwindx/applications/sar/ViewMenu.java b/src/gov/nasa/worldwindx/applications/sar/ViewMenu.java
index 230aecba01..907a9a4390 100644
--- a/src/gov/nasa/worldwindx/applications/sar/ViewMenu.java
+++ b/src/gov/nasa/worldwindx/applications/sar/ViewMenu.java
@@ -67,7 +67,7 @@ public void setWwd(WorldWindow wwdInstance)
// Terrain profile
JMenuItem mi = new JMenuItem("Terrain profile...");
mi.setMnemonic('T');
- mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
+ mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
mi.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
@@ -80,7 +80,7 @@ public void actionPerformed(ActionEvent event)
// Cloud ceiling contour
mi = new JMenuItem("Cloud Contour...");
mi.setMnemonic('C');
- mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
+ mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
mi.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
diff --git a/src/gov/nasa/worldwindx/applications/sar/render/PlaneModel.java b/src/gov/nasa/worldwindx/applications/sar/render/PlaneModel.java
index 2d9eb42a72..0f537ccb92 100644
--- a/src/gov/nasa/worldwindx/applications/sar/render/PlaneModel.java
+++ b/src/gov/nasa/worldwindx/applications/sar/render/PlaneModel.java
@@ -163,7 +163,7 @@ private void createRenderables(DrawContext dc) {
this.planeModel.setPathType(AVKey.LINEAR);
this.planeModel.setFollowTerrain(false);
this.planeModel.setNumSubsegments(1);
- var attrs = new BasicShapeAttributes();
+ BasicShapeAttributes attrs = new BasicShapeAttributes();
attrs.setOutlineMaterial(new Material(this.color));
this.planeModel.setAttributes(attrs);
diff --git a/src/gov/nasa/worldwindx/applications/worldwindow/core/SimpleImporter.java b/src/gov/nasa/worldwindx/applications/worldwindow/core/SimpleImporter.java
index b99c59f59a..ca35dc2f7a 100644
--- a/src/gov/nasa/worldwindx/applications/worldwindow/core/SimpleImporter.java
+++ b/src/gov/nasa/worldwindx/applications/worldwindow/core/SimpleImporter.java
@@ -144,7 +144,7 @@ protected boolean isShapfile(Object source) {
}
protected void openShapefile(Object source) {
- var factory = new ShapefileLayerFactory();
+ ShapefileLayerFactory factory = new ShapefileLayerFactory();
Layer layer = (Layer) factory.createFromShapefileSource(source);
if (layer != null) {
layer.setName(formName(source, null));
diff --git a/src/gov/nasa/worldwindx/applications/worldwindow/features/MeasurementPanel.java b/src/gov/nasa/worldwindx/applications/worldwindow/features/MeasurementPanel.java
index f5c92840d2..a9119e52e4 100644
--- a/src/gov/nasa/worldwindx/applications/worldwindow/features/MeasurementPanel.java
+++ b/src/gov/nasa/worldwindx/applications/worldwindow/features/MeasurementPanel.java
@@ -215,7 +215,7 @@ private Renderable makeMeasureShape(String shapeType) {
Path line = new Path();
line.setPositions(new ArrayList<>());
line.setSurfacePath(true);
- var attrs = new BasicShapeAttributes();
+ BasicShapeAttributes attrs = new BasicShapeAttributes();
attrs.setOutlineWidth(shapeType.equals(FREEHAND) ? 2 : 4);
line.setAttributes(attrs);
return line;
diff --git a/src/gov/nasa/worldwindx/examples/AirspaceBuilder.java b/src/gov/nasa/worldwindx/examples/AirspaceBuilder.java
index 32dbb83776..c2da1f62cb 100644
--- a/src/gov/nasa/worldwindx/examples/AirspaceBuilder.java
+++ b/src/gov/nasa/worldwindx/examples/AirspaceBuilder.java
@@ -1323,7 +1323,7 @@ public static void makeMenuBar(JFrame frame, final AirspaceBuilderController con
{
JMenuItem item = new JMenuItem("Open...");
item.setAccelerator(KeyStroke.getKeyStroke(
- KeyEvent.VK_O, Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
+ KeyEvent.VK_O, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
item.setActionCommand(OPEN);
item.addActionListener(controller);
menu.add(item);
@@ -1335,7 +1335,7 @@ public static void makeMenuBar(JFrame frame, final AirspaceBuilderController con
item = new JMenuItem("Save...");
item.setAccelerator(KeyStroke.getKeyStroke(
- KeyEvent.VK_S, Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
+ KeyEvent.VK_S, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
item.setActionCommand(SAVE);
item.addActionListener(controller);
menu.add(item);
@@ -1379,7 +1379,7 @@ public static void makeMenuBar(JFrame frame, final AirspaceBuilderController con
{
JMenuItem item = new JMenuItem("Deselect");
item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
item.setActionCommand(CLEAR_SELECTION);
item.addActionListener(controller);
menu.add(item);
diff --git a/src/gov/nasa/worldwindx/examples/KeepingObjectsInView.java b/src/gov/nasa/worldwindx/examples/KeepingObjectsInView.java
index f6bab33ead..bfabb7095e 100644
--- a/src/gov/nasa/worldwindx/examples/KeepingObjectsInView.java
+++ b/src/gov/nasa/worldwindx/examples/KeepingObjectsInView.java
@@ -196,7 +196,7 @@ public static Iterable> createObjectsToTrack() {
randLocation2 = randomLocation(sector);
Path path = new Path(Arrays.asList(randLocation1, randLocation2), 0d);
path.setSurfacePath(true);
- var attrs = new BasicShapeAttributes();
+ BasicShapeAttributes attrs = new BasicShapeAttributes();
attrs.setOutlineWidth(3);
attrs.setOutlineMaterial(new Material(Color.RED));
path.setAttributes(attrs);
diff --git a/src/gov/nasa/worldwindx/examples/LineBackground.java b/src/gov/nasa/worldwindx/examples/LineBackground.java
index bc0b070a4d..0459be0337 100644
--- a/src/gov/nasa/worldwindx/examples/LineBackground.java
+++ b/src/gov/nasa/worldwindx/examples/LineBackground.java
@@ -94,7 +94,7 @@ public AppFrame() {
path2.setSurfacePath(true);
path2.setPathType(AVKey.RHUMB_LINE);
float[] c = backgroundAttrs.getOutlineMaterial().getDiffuse().getColorComponents(new float[3]);
- var attrs = new BasicShapeAttributes(backgroundAttrs);
+ BasicShapeAttributes attrs = new BasicShapeAttributes(backgroundAttrs);
attrs.setOutlineMaterial(new Material(new Color(c[0], c[1], c[2], (float) backgroundAttrs.getOutlineOpacity())));
path2.setAttributes(attrs);
path2.makeClosed();
diff --git a/src/gov/nasa/worldwindx/examples/SurfaceImages.java b/src/gov/nasa/worldwindx/examples/SurfaceImages.java
index 7d6ff88c16..c6057f3717 100644
--- a/src/gov/nasa/worldwindx/examples/SurfaceImages.java
+++ b/src/gov/nasa/worldwindx/examples/SurfaceImages.java
@@ -75,7 +75,7 @@ public AppFrame() {
Path boundary = new Path(si1.getCorners(), 0);
boundary.setSurfacePath(true);
boundary.setPathType(AVKey.RHUMB_LINE);
- var attrs = new BasicShapeAttributes();
+ BasicShapeAttributes attrs = new BasicShapeAttributes();
attrs.setOutlineMaterial(new Material(new Color(0, 255, 0)));
boundary.setAttributes(attrs);
boundary.makeClosed();
diff --git a/src/gov/nasa/worldwindx/examples/WorldWindDiagnostics.java b/src/gov/nasa/worldwindx/examples/WorldWindDiagnostics.java
index bafb38e916..3438656c86 100644
--- a/src/gov/nasa/worldwindx/examples/WorldWindDiagnostics.java
+++ b/src/gov/nasa/worldwindx/examples/WorldWindDiagnostics.java
@@ -134,9 +134,9 @@ public void init(GLAutoDrawable glAutoDrawable) {
sb.append("\nJOGL Values\n");
String pkgName = "com.jogamp.opengl";
try {
- getClass().getClassLoader().loadClass(pkgName + ".GL");
-
- Package p = getClass().getClassLoader().getDefinedPackage(pkgName);
+ Class> clase = getClass().getClassLoader().loadClass(pkgName + ".GL");
+
+ Package p = clase.getPackage();//getClass().getClassLoader().getDefinedPackage(pkgName);
if (p == null) {
sb.append("WARNING: Package.getPackage(" + pkgName + ") is null\n");
} else {
diff --git a/src/gov/nasa/worldwindx/examples/shapebuilder/ExtrudedPolygonBuilder.java b/src/gov/nasa/worldwindx/examples/shapebuilder/ExtrudedPolygonBuilder.java
index 2ff2494b27..218c4669d2 100644
--- a/src/gov/nasa/worldwindx/examples/shapebuilder/ExtrudedPolygonBuilder.java
+++ b/src/gov/nasa/worldwindx/examples/shapebuilder/ExtrudedPolygonBuilder.java
@@ -942,7 +942,7 @@ public static void makeMenuBar(JFrame frame, final PolygonBuilderController cont
{
JMenuItem item = new JMenuItem("Deselect");
item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
item.setActionCommand(CLEAR_SELECTION);
item.addActionListener(controller);
menu.add(item);
diff --git a/src/gov/nasa/worldwindx/examples/shapebuilder/RigidShapeBuilder.java b/src/gov/nasa/worldwindx/examples/shapebuilder/RigidShapeBuilder.java
index 63b27956f1..8bec948d05 100644
--- a/src/gov/nasa/worldwindx/examples/shapebuilder/RigidShapeBuilder.java
+++ b/src/gov/nasa/worldwindx/examples/shapebuilder/RigidShapeBuilder.java
@@ -1863,14 +1863,14 @@ public static void makeMenuBar(JFrame frame, final AbstractShapeBuilderControlle
{
JMenuItem item = new JMenuItem("Open...");
item.setAccelerator(KeyStroke.getKeyStroke(
- KeyEvent.VK_O, Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
+ KeyEvent.VK_O, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
item.setActionCommand(OPEN);
item.addActionListener(controller);
menu.add(item);
item = new JMenuItem("Save...");
item.setAccelerator(KeyStroke.getKeyStroke(
- KeyEvent.VK_S, Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
+ KeyEvent.VK_S, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
item.setActionCommand(SAVE);
item.addActionListener(controller);
menu.add(item);
@@ -1900,7 +1900,7 @@ public void actionPerformed(ActionEvent e)
{
JMenuItem item = new JMenuItem(mode.getMode());
item.setAccelerator(KeyStroke.getKeyStroke(mode.getShortcut(),
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
item.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
@@ -1936,7 +1936,7 @@ public void actionPerformed(ActionEvent e)
{
JMenuItem item = new JMenuItem("Deselect");
item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
item.setActionCommand(CLEAR_SELECTION);
item.addActionListener(controller);
menu.add(item);
diff --git a/src/overview.html b/src/overview.html
index faba690f87..5babc9c1cd 100644
--- a/src/overview.html
+++ b/src/overview.html
@@ -56,7 +56,7 @@
Data Retrieval
WorldWind works with enormous quantities of data and information, all of which exist primarily on remote data
servers. Retrieval and local caching of that data is therefore a primary feature of WorldWind. The classes that
implement retrieval are {@link gov.nasa.worldwind.retrieve.Retriever} and {@link
- gov.nasa.worldwind.retrieve.RetrievalService}.
+ gov.nasa.worldwind.retrieve.RetrievalService}.
{@link gov.nasa.worldwind.retrieve.Retriever} encapsulates a single network retrieval request. It is an interface.
@@ -79,7 +79,7 @@
Data Retrieval
for instance, can convert non-DDS formats to DDS, or simply store the data as-is in the file cache. {@link
gov.nasa.worldwind.terrain.BasicElevationModel} just persists the raw data. The post processor runs in the same
thread as the retriever, which is neither the event-dispatching (UI) thread nor the rendering thread, but the one
- created by the retrieval service for that retriever.
+ created by the retrieval service for that retriever.
Data that has been previously retrieved or is otherwise local (on disk) is brought into memory in a thread separate
@@ -97,7 +97,7 @@
Data Retrieval
java.lang.Runnable} to determine in a separate thread where the data must be drawn from, disk or network. If it's on
the disk then the task can simply read it and cache it right away. If it's remote then the task creates a
Retriever and requests retrieval. Later, after retrieval has placed the data on disk, the situation will be
- the local case and data can be loaded into memory within the Runnable.
+ the local case and data can be loaded into memory within the Runnable.
Memory Cache
@@ -156,7 +156,7 @@
Picking and Selection
receives the full list of picked items, with the truly visible ones marked as such.
WorldWind provides utility classes to make it simple for layers to participate in this picking scheme. See {@link
- gov.nasa.worldwind.pick.PickSupport}
+ gov.nasa.worldwind.pick.PickSupport}.
Use of Proxies
diff --git a/worldwind-2.4.0.jar b/worldwind-2.4.0.jar
new file mode 100644
index 0000000000..8bee44726c
Binary files /dev/null and b/worldwind-2.4.0.jar differ
diff --git a/worldwindx-2.4.0.jar b/worldwindx-2.4.0.jar
new file mode 100644
index 0000000000..6b89805d57
Binary files /dev/null and b/worldwindx-2.4.0.jar differ