Merge branch 'develop' into releases/Release_2_11_Branch
authorJim Procter <jprocter@issues.jalview.org>
Wed, 26 Jun 2019 17:26:31 +0000 (18:26 +0100)
committerJim Procter <jprocter@issues.jalview.org>
Wed, 26 Jun 2019 17:26:31 +0000 (18:26 +0100)
53 files changed:
build.gradle
getdown/lib/getdown-core.jar [moved from getdown/lib/getdown-core-1.8.3-SNAPSHOT.jar with 69% similarity]
getdown/lib/getdown-launcher.jar
getdown/src/getdown/ant/pom.xml
getdown/src/getdown/core/pom.xml
getdown/src/getdown/core/src/main/java/com/threerings/getdown/data/Application.java
getdown/src/getdown/launcher/pom.xml
getdown/src/getdown/launcher/src/main/java/com/threerings/getdown/launcher/Getdown.java
getdown/src/getdown/launcher/src/main/java/com/threerings/getdown/launcher/GetdownApp.java
getdown/src/getdown/launcher/src/main/java/com/threerings/getdown/launcher/StatusPanel.java
getdown/src/getdown/launcher/src/main/resources/com/threerings/getdown/messages.properties
getdown/src/getdown/launcher/src/main/resources/com/threerings/getdown/messages_de.properties
getdown/src/getdown/launcher/src/main/resources/com/threerings/getdown/messages_es.properties
getdown/src/getdown/launcher/src/main/resources/com/threerings/getdown/messages_fr.properties
getdown/src/getdown/launcher/src/main/resources/com/threerings/getdown/messages_it.properties
getdown/src/getdown/launcher/src/main/resources/com/threerings/getdown/messages_ja.properties
getdown/src/getdown/launcher/src/main/resources/com/threerings/getdown/messages_ko.properties
getdown/src/getdown/launcher/src/main/resources/com/threerings/getdown/messages_pt.properties
getdown/src/getdown/launcher/src/main/resources/com/threerings/getdown/messages_zh.properties
getdown/src/getdown/mvn_cmd [changed mode: 0644->0755]
getdown/src/getdown/pom.xml
gradle.properties
j11lib/getdown-core.jar
j8lib/getdown-core.jar
resources/images/file.png [changed mode: 0755->0644]
resources/images/jalview_logo_background_getdown-progress.png [deleted file]
resources/images/jalview_logos.icns [changed mode: 0755->0644]
resources/images/link.gif [changed mode: 0755->0644]
resources/images/logo_big_v2.gif [changed mode: 0755->0644]
resources/images/logo_v2.gif [changed mode: 0755->0644]
utils/archive_building.sh [new file with mode: 0644]
utils/getdown/jalview_logo_background_getdown-640x480.png [moved from resources/images/jalview_logo_background_getdown-640x480.png with 100% similarity]
utils/getdown/jalview_logo_background_getdown-progress-TEST2.png [moved from resources/images/jalview_logo_background_getdown-progress-TEST2.png with 100% similarity, mode: 0644]
utils/getdown/jalview_logo_background_getdown-progress.png [new file with mode: 0644]
utils/getdown/jalview_logo_background_getdown-progress1.png [moved from resources/images/jalview_logo_background_getdown-progress1.png with 100% similarity]
utils/getdown/jalview_logo_background_getdown-progress2.png [moved from resources/images/jalview_logo_background_getdown-progress2.png with 100% similarity]
utils/getdown/jalview_logo_background_getdown-progress3-0.png [new file with mode: 0644]
utils/getdown/jalview_logo_background_getdown-progress3-1.png [new file with mode: 0644]
utils/getdown/jalview_logo_background_getdown-progress3.xcf [new file with mode: 0644]
utils/getdown/jalview_logo_background_getdown-progress4.png [new file with mode: 0644]
utils/getdown/jalview_logo_background_getdown_error-640x480.png [new file with mode: 0644]
utils/getdown/jalview_logo_background_getdown_instant-640x480.png [new file with mode: 0644]
utils/getdown/jalview_logo_background_getdown_instant-640x480.xcf [new file with mode: 0644]
utils/install4j/Jalview-File.icns
utils/install4j/Jalview-File.ico
utils/install4j/Uninstall Old Jalview.app/Contents/Info.plist
utils/install4j/Uninstall Old Jalview.app/Contents/MacOS/applet
utils/install4j/Uninstall Old Jalview.app/Contents/Resources/Scripts/main.scpt
utils/install4j/Uninstall Old Jalview.app/Contents/Resources/applet.rsrc
utils/install4j/Uninstall Old Jalview.app/Contents/Resources/description.rtfd/TXT.rtf
utils/install4j/Uninstall Old Jalview.app/Contents/_CodeSignature/CodeResources
utils/install4j/Uninstall Old Jalview.scpt
utils/install4j/install4j_template.install4j

index 84d5f73..16c31b3 100644 (file)
@@ -51,15 +51,108 @@ def compile_source_compatibility
 def compile_target_compatibility
 
 ext {
-  // where the getdown channel will be built.
-  // TODO: consider allowing this expression to  be overridden by -P arg
   getdownWebsiteDir = jalviewDir + '/' + getdown_website_dir + '/' + JAVA_VERSION
+  getdownDir = ""
+  reportRsyncCmd = false
+  buildDist = true
+  buildProperties = buildPropertiesFile
+  switch (CHANNEL) {
+
+    case "BUILD":
+    // TODO: get bamboo build artifact URL for getdown artifacts
+    getdown_app_dir = getdown_app_dir_alt
+    buildProperties = jalviewDir + "/" + classesDir +"/" + buildPropertiesFile
+    break
+
+    case "RELEASE":
+    getdown_channel_name = CHANNEL.toLowerCase()
+    getdownDir = getdown_channel_name + "/" + JAVA_VERSION
+    getdown_app_base = getdown_channel_base + "/" + getdownDir
+    getdown_app_dir = getdown_app_dir_release
+    buildProperties = jalviewDir + "/" + classesDir +"/" + buildPropertiesFile
+    reportRsyncCommand = true
+    break
+
+    case "ARCHIVE":
+    getdown_channel_name = CHANNEL.toLowerCase()+"/"+JALVIEW_VERSION
+    getdownDir = getdown_channel_name + "/" + JAVA_VERSION
+    getdown_app_base = getdown_channel_base + "/" + getdownDir
+    getdown_app_dir = getdown_app_dir_alt
+    if (!file(ARCHIVEDIR+"/"+packageDir).exists()) {
+      print "Must provide an ARCHIVEDIR value to produce an archive distribution"
+      exit
+    } else {
+      packageDir = ARCHIVEDIR + "/" + packageDir
+      buildProperties = ARCHIVEDIR +"/" + classesDir + "/" + buildPropertiesFile
+      buildDist = false
+    }
+    reportRsyncCommand = true
+    break
+
+    case "ARCHIVELOCAL":
+    getdown_channel_name = "archive" + "/" + JALVIEW_VERSION
+    getdownDir = getdown_channel_name + "/" + JAVA_VERSION
+    getdown_app_base = file(getdownWebsiteDir).toURI().toString()
+    getdown_app_dir = getdown_app_dir_alt
+    if (!file(ARCHIVEDIR+"/"+packageDir).exists()) {
+      print "Must provide an ARCHIVEDIR value to produce an archive distribution"
+      exit
+    } else {
+      packageDir = ARCHIVEDIR + "/" + packageDir
+      buildProperties = ARCHIVEDIR +"/" + classesDir + "/" + buildPropertiesFile
+      buildDist = false
+    }
+    reportRsyncCommand = true
+    break
+
+    case "DEVELOP":
+    getdown_channel_name = CHANNEL.toLowerCase()
+    getdownDir = getdown_channel_name + "/" + JAVA_VERSION
+    getdown_app_base = getdown_channel_base + "/" + getdownDir
+    getdown_app_dir = getdown_app_dir_alt
+    buildProperties = jalviewDir + "/" + classesDir +"/" + buildPropertiesFile
+    reportRsyncCommand = true
+    break
+
+    case "TEST-RELEASE":
+    getdown_channel_name = CHANNEL.toLowerCase()
+    getdownDir = getdown_channel_name + "/" + JAVA_VERSION
+    getdown_app_base = getdown_channel_base + "/" + getdownDir
+    getdown_app_dir = getdown_app_dir_alt
+    buildProperties = jalviewDir + "/" + classesDir +"/" + buildPropertiesFile
+    reportRsyncCommand = true
+    break
+
+    case ~/^SCRATCH(|-\w*)$/:
+    getdown_channel_name = CHANNEL
+    getdownDir = getdown_channel_name + "/" + JAVA_VERSION
+    getdown_app_base = getdown_channel_base + "/" + getdownDir
+    getdown_app_dir = getdown_app_dir_alt
+    buildProperties = jalviewDir + "/" + classesDir +"/" + buildPropertiesFile
+    reportRsyncCommand = true
+    break
+
+    case "LOCAL":
+    getdown_app_base = file(getdownWebsiteDir).toURI().toString()
+    getdown_app_dir = getdown_app_dir_alt
+    buildProperties = jalviewDir + "/" + classesDir +"/" + buildPropertiesFile
+    break
+
+    default: // something wrong specified
+    print("CHANNEL must be one of BUILD, RELEASE, ARCHIVE, DEVELOP, TEST-RELEASE, SCRATCH-..., LOCAL [default]")
+    exit
+    break
+
+  }
+
+  println("Using a "+CHANNEL+" profile. appbase="+getdown_app_base)
   getdownAppDir = getdownWebsiteDir + '/' + getdown_app_dir
   //getdownJ11libDir = getdownWebsiteDir + '/' + getdown_j11lib_dir
   getdownResourceDir = getdownWebsiteDir + '/' + getdown_resource_dir
+  getdownInstallDir = getdownWebsiteDir + '/' + getdown_install_dir
   getdownLauncher = jalviewDir + '/' + getdown_launcher
   getdownFilesDir = jalviewDir + '/' + getdown_files_dir + '/' + JAVA_VERSION + '/'
-  getdown_app_base = getdown_channel_base+"/"+getdown_channel_name+"/"+JAVA_VERSION+"/"
+  getdownFilesInstallDir = getdownFilesDir+"/"+getdown_install_dir
   modules_compileClasspath = fileTree(dir: "$jalviewDir/$j11modDir", include: ["*.jar"])
   modules_runtimeClasspath = modules_compileClasspath
   gitHash = ""
@@ -94,8 +187,8 @@ if (JAVA_VERSION.equals("1.8")) {
   getdown_alt_multi_java_location = getdown_alt_java11_txt_multi_java_location
   eclipse_java_runtime_name = "JavaSE-11"
   additional_compiler_args += [
-    '--module-path', ext.modules_compileClasspath.asPath,
-    '--add-modules', j11modules
+  '--module-path', ext.modules_compileClasspath.asPath,
+  '--add-modules', j11modules
   ]
 } else if (JAVA_VERSION.equals("12") || JAVA_VERSION.equals("13")) {
   JAVA_INTEGER_VERSION = JAVA_VERSION
@@ -107,8 +200,8 @@ if (JAVA_VERSION.equals("1.8")) {
   getdown_alt_multi_java_location = getdown_alt_java11_txt_multi_java_location
   eclipse_java_runtime_name = "JavaSE-11"
   additional_compiler_args += [
-    '--module-path', ext.modules_compileClasspath.asPath,
-    '--add-modules', j11modules
+  '--module-path', ext.modules_compileClasspath.asPath,
+  '--add-modules', j11modules
   ]
 } else {
   throw new GradleException("JAVA_VERSION=$JAVA_VERSION not currently supported by Jalview")
@@ -168,7 +261,7 @@ sourceSets {
     } else {
       compileClasspath += files(sourceSets.main.java.outputDir)
     }
-    
+
     compileClasspath += fileTree(dir: "$jalviewDir/$utilsDir", include: ["**/*.jar"])
     compileClasspath += fileTree(dir: "$jalviewDir/$libDir", include: ["*.jar"])
 
@@ -194,8 +287,8 @@ eclipse {
     name = "Jalview with gradle build"
 
     natures 'org.eclipse.jdt.core.javanature',
-        'org.eclipse.jdt.groovy.core.groovyNature',
-        'org.eclipse.buildship.core.gradleprojectnature'
+    'org.eclipse.jdt.groovy.core.groovyNature',
+    'org.eclipse.buildship.core.gradleprojectnature'
 
     buildCommand 'org.eclipse.jdt.core.javabuilder'
     buildCommand 'org.eclipse.buildship.core.gradleprojectbuilder'
@@ -205,87 +298,87 @@ eclipse {
     //defaultOutputDir = sourceSets.main.java.outputDir
     def removeThese = []
     configurations.each{ if (it.isCanBeResolved()) {
-        removeThese += it
-      }
+      removeThese += it
     }
+  }
 
-    minusConfigurations += removeThese
-    plusConfigurations = [ ]
-    file {
-
-      whenMerged { cp ->
-        def removeTheseToo = []
-        HashMap<String, Boolean> addedSrcPath = new HashMap<>();
-        cp.entries.each { entry ->
-          if (entry.kind == 'src') {
-            if (addedSrcPath.getAt(entry.path) || !(entry.path == "src" || entry.path == "test")) {
-              removeTheseToo += entry
-            } else {
-              addedSrcPath.putAt(entry.path, true)
-            }
-          }
-        }
-        cp.entries.removeAll(removeTheseToo)
-        
-        print ("CP="+cp.inspect())
-        
-        cp.entries += new Output("bin/main")
-        cp.entries += new Library(fileReference(helpParentDir))
-        cp.entries += new Library(fileReference(resourceDir))
-        
-        HashMap<String, Boolean> addedLibPath = new HashMap<>();
-        
-        // changing from sourcesets.main.classpath to specific Java version lib
-        //sourceSets.main.compileClasspath.each{
-        fileTree("$jalviewDir/$libDistDir").include("**/*.jar").include("*.jar").each {
-          //don't want to add outputDir as eclipse is using its own output dir in bin/main
-          if (it.isDirectory() || ! it.exists()) {
-            // don't add dirs to classpath
-            return
-          }
-          def itPath = it.toString()
-          if (itPath.startsWith(jalviewDirAbsolutePath+"/")) {
-            itPath = itPath.substring(jalviewDirAbsolutePath.length()+1)
-          }
-          if (addedLibPath.get(itPath)) {
-            //println("Not adding duplicate entry "+itPath)
+  minusConfigurations += removeThese
+  plusConfigurations = [ ]
+  file {
+
+    whenMerged { cp ->
+      def removeTheseToo = []
+      HashMap<String, Boolean> addedSrcPath = new HashMap<>();
+      cp.entries.each { entry ->
+        if (entry.kind == 'src') {
+          if (addedSrcPath.getAt(entry.path) || !(entry.path == "src" || entry.path == "test")) {
+            removeTheseToo += entry
           } else {
-            //println("Adding entry "+itPath)
-            cp.entries += new Library(fileReference(itPath))
-            addedLibPath.put(itPath, true)
+            addedSrcPath.putAt(entry.path, true)
           }
         }
+      }
+      cp.entries.removeAll(removeTheseToo)
 
-        // changing from sourcesets.main.classpath to specific Java version lib
-        //sourceSets.test.compileClasspath.each{
-        fileTree(dir: "$jalviewDir/$utilsDir", include: ["**/*.jar"]).each {
-          //if ((it.isDirectory() || ! it.exists()) && ! (it.equals(sourceSets.main.java.outputDir))) {
-          //no longer want to add outputDir as eclipse is using its own output dir in bin/main
-          if (it.isDirectory() || ! it.exists()) {
-            // don't add dirs to classpath
-            return false // groovy "break" in .each loop
-          }
-          def itPath = it.toString()
-          if (itPath.startsWith(jalviewDirAbsolutePath+"/")) {
-            itPath = itPath.substring(jalviewDirAbsolutePath.length()+1)
-          }
-          if (addedLibPath.get(itPath)) {
-            // don't duplicate
-          } else {
-            def lib = new Library(fileReference(itPath))
-            // this doesn't work... yet.  Adding test=true attribute using withXml below
-            //def attrs = new Node(null, 'attributes', ["test":"true"])
-            //lib.appendNode(attrs) //
-            cp.entries += lib
-            addedLibPath.put(itPath, true)
-          }
+      print ("CP="+cp.inspect())
+
+      cp.entries += new Output("bin/main")
+      cp.entries += new Library(fileReference(helpParentDir))
+      cp.entries += new Library(fileReference(resourceDir))
+
+      HashMap<String, Boolean> addedLibPath = new HashMap<>();
+
+      // changing from sourcesets.main.classpath to specific Java version lib
+      //sourceSets.main.compileClasspath.each{
+      fileTree("$jalviewDir/$libDistDir").include("**/*.jar").include("*.jar").each {
+        //don't want to add outputDir as eclipse is using its own output dir in bin/main
+        if (it.isDirectory() || ! it.exists()) {
+          // don't add dirs to classpath
+          return
+        }
+        def itPath = it.toString()
+        if (itPath.startsWith(jalviewDirAbsolutePath+"/")) {
+          itPath = itPath.substring(jalviewDirAbsolutePath.length()+1)
         }
-      }  
+        if (addedLibPath.get(itPath)) {
+          //println("Not adding duplicate entry "+itPath)
+        } else {
+          //println("Adding entry "+itPath)
+          cp.entries += new Library(fileReference(itPath))
+          addedLibPath.put(itPath, true)
+        }
+      }
+
+      // changing from sourcesets.main.classpath to specific Java version lib
+      //sourceSets.test.compileClasspath.each{
+      fileTree(dir: "$jalviewDir/$utilsDir", include: ["**/*.jar"]).each {
+        //if ((it.isDirectory() || ! it.exists()) && ! (it.equals(sourceSets.main.java.outputDir))) {
+        //no longer want to add outputDir as eclipse is using its own output dir in bin/main
+        if (it.isDirectory() || ! it.exists()) {
+          // don't add dirs to classpath
+          return false // groovy "break" in .each loop
+        }
+        def itPath = it.toString()
+        if (itPath.startsWith(jalviewDirAbsolutePath+"/")) {
+          itPath = itPath.substring(jalviewDirAbsolutePath.length()+1)
+        }
+        if (addedLibPath.get(itPath)) {
+          // don't duplicate
+        } else {
+          def lib = new Library(fileReference(itPath))
+          // this doesn't work... yet.  Adding test=true attribute using withXml below
+          //def attrs = new Node(null, 'attributes', ["test":"true"])
+          //lib.appendNode(attrs) //
+          cp.entries += lib
+          addedLibPath.put(itPath, true)
+        }
+        }
+      }
 
       // withXml changes ignored by buildship, these add the "test=true" attribute
       withXml {
         def node = it.asNode()
-        
+
         def srcTestAttributes
         node.children().each{ cpe ->
           def attributes = cpe.attributes()
@@ -308,7 +401,7 @@ eclipse {
           def attributes = cpe.attributes()
           if (attributes.get("kind") == "lib" && attributes.get("path").startsWith("utils/")) {
             cpe.appendNode('attributes')
-                .appendNode('attribute', [name:"test", value:"true"])
+            .appendNode('attribute', [name:"test", value:"true"])
           }
         }
       } // withXML
@@ -337,10 +430,10 @@ eclipse {
       }
     }
   }
-  
+
   //synchronizationTasks eclipseClasspath
   //autoBuildTasks eclipseClasspath
-} 
+}
 
 task cloverInstr() {
   // only instrument source, we build test classes as normal
@@ -350,7 +443,7 @@ task cloverInstr() {
   doFirst {
     delete cloverInstrDir
     def argsList = ["--initstring", "${buildDir}/clover/clover.db",
-      "-d", "${buildDir}/${cloverSourcesInstrDir}"]
+    "-d", "${buildDir}/${cloverSourcesInstrDir}"]
     argsList.addAll(inputs.files.files.collect({ file ->
       file.absolutePath
     }))
@@ -359,25 +452,25 @@ task cloverInstr() {
     com.atlassian.clover.CloverInstr.mainImpl(args)
   }
 }
-  
+
 
 task cloverReport {
   group = "Verification"
-  description = "Createst the Clover report"
-  inputs.dir "${buildDir}/clover"
-  outputs.dir "${reportsDir}/clover"
-  onlyIf {
-    file("${buildDir}/clover/clover.db").exists()
-  }
+    description = "Createst the Clover report"
+    inputs.dir "${buildDir}/clover"
+    outputs.dir "${reportsDir}/clover"
+    onlyIf {
+      file("${buildDir}/clover/clover.db").exists()
+    }
   doFirst {
     def argsList = ["--initstring", "${buildDir}/clover/clover.db",
-      "-o", "${reportsDir}/clover"]
+    "-o", "${reportsDir}/clover"]
     String[] args = argsList.toArray()
     com.atlassian.clover.reporters.html.HtmlReporter.runReport(args)
 
     // and generate ${reportsDir}/clover/clover.xml
     args = ["--initstring", "${buildDir}/clover/clover.db",
-      "-o", "${reportsDir}/clover/clover.xml"].toArray()
+    "-o", "${reportsDir}/clover/clover.xml"].toArray()
     com.atlassian.clover.reporters.xml.XMLReporter.runReport(args)
   }
 }
@@ -464,7 +557,7 @@ task createBuildProperties(type: WriteProperties) {
   inputs.dir("$jalviewDir/$sourceDir")
   inputs.dir("$classes")
   inputs.dir("$jalviewDir/$resourceDir")
-  outputFile "$classes/$buildPropertiesFile"
+  outputFile (buildProperties)
   // taking time specific comment out to allow better incremental builds
   comment "--Jalview Build Details--\n"+getDate("yyyy-MM-dd HH:mm:ss")
   //comment "--Jalview Build Details--\n"+getDate("yyyy-MM-dd")
@@ -528,14 +621,14 @@ task copyHelp(type: Copy) {
   def outputDir = "$classes/$helpDir"
   from(inputDir) {
     exclude '**/*.gif'
-    exclude '**/*.jpg'
-    exclude '**/*.png'
-    filter(ReplaceTokens, beginToken: '$$', endToken: '$$', tokens: ['Version-Rel': JALVIEW_VERSION])
+      exclude '**/*.jpg'
+      exclude '**/*.png'
+      filter(ReplaceTokens, beginToken: '$$', endToken: '$$', tokens: ['Version-Rel': JALVIEW_VERSION])
   }
   from(inputDir) {
     include '**/*.gif'
-    include '**/*.jpg'
-    include '**/*.png'
+      include '**/*.jpg'
+      include '**/*.png'
   }
   into outputDir
 
@@ -575,7 +668,9 @@ test {
     dependsOn cloverInstr
   }
 
-  print("Running tests " + (use_clover?"WITH":"WITHOUT") + " clover [clover="+use_clover+"]\n")
+  if (use_clover) {
+    print("Running tests " + (use_clover?"WITH":"WITHOUT") + " clover [clover="+use_clover+"]\n")
+  }
 
   useTestNG() {
     includeGroups testngGroups
@@ -702,34 +797,51 @@ task cleanDist {
 
 shadowJar {
   group = "distribution"
-  dependsOn makeDist
+  if (buildDist) {
+    dependsOn makeDist
+  }
   from ("$jalviewDir/$libDistDir") {
     include("*.jar")
   }
+  manifest {
+    attributes 'Implementation-Version': JALVIEW_VERSION
+  }
   mainClassName = shadowJarMainClass
   mergeServiceFiles()
-  classifier = "all-"+JAVA_VERSION
+  classifier = "all-"+JALVIEW_VERSION+"-j"+JAVA_VERSION
   minimize()
 }
 
 task getdownWebsite() {
   group = "distribution"
   description = "Create the getdown minimal app folder, and website folder for this version of jalview. Website folder also used for offline app installer"
-  dependsOn makeDist
+  if (buildDist) {
+    dependsOn makeDist
+  }
+
+       // clean the getdown website and files dir before creating getdown folders
+       delete project.ext.getdownWebsiteDir
+       delete project.ext.getdownFilesDir
+
   def getdownWebsiteResourceFilenames = []
   def getdownTextString = ""
   def getdownResourceDir = project.ext.getdownResourceDir
   def getdownAppDir = project.ext.getdownAppDir
   def getdownResourceFilenames = []
+
   doFirst {
+    copy {
+      from buildProperties
+      rename(buildPropertiesFile, getdown_build_properties)
+      into project.ext.getdownWebsiteDir
+    }
+    getdownWebsiteResourceFilenames += getdown_build_properties
+
     // go through properties looking for getdown_txt_...
     def props = project.properties.sort { it.key }
     props.put("getdown_txt_java_min_version", getdown_alt_java_min_version)
     props.put("getdown_txt_multi_java_location", getdown_alt_multi_java_location)
 
-    if (getdown_local == "true") {
-      getdown_app_base = file(getdownWebsiteDir).toURI().toString()
-    }
     props.put("getdown_txt_appbase", getdown_app_base)
     props.each{ prop, val ->
       if (prop.startsWith("getdown_txt_") && val != null) {
@@ -741,7 +853,7 @@ task getdownWebsite() {
           }
         } else {
           // file values rationalised
-          if (val.indexOf('/') > -1) {
+          if (val.indexOf('/') > -1 || prop.startsWith("getdown_txt_resource")) {
             def r = null
             if (val.indexOf('/') == 0) {
               // absolute path
@@ -756,8 +868,10 @@ task getdownWebsite() {
               getdownResourceFilenames += r.getPath()
             }
           }
-          def line = prop.substring(12) + " = " + val + "\n"
-          getdownTextString += line
+          if (! prop.startsWith("getdown_txt_resource")) {
+            def line = prop.substring(12) + " = " + val + "\n"
+            getdownTextString += line
+          }
         }
       }
     }
@@ -773,7 +887,7 @@ task getdownWebsite() {
     }
 
     def codeFiles = []
-    makeDist.outputs.files.each{ f ->
+    fileTree(file(packageDir)).each{ f ->
       if (f.isDirectory()) {
         def files = fileTree(dir: f, include: ["*"]).getFiles()
         codeFiles += files
@@ -792,17 +906,17 @@ task getdownWebsite() {
 
     // NOT USING MODULES YET, EVERYTHING SHOULD BE IN dist
     /*
-     if (JAVA_VERSION.equals("11")) {
-     def j11libFiles = fileTree(dir: "$jalviewDir/$j11libDir", include: ["*.jar"]).getFiles()
-     j11libFiles.sort().each{f ->
-     def line = "code = " + getdown_j11lib_dir + '/' + f.getName() + "\n"
-     getdownTextString += line
-     copy {
-     from f.getPath()
-     into project.ext.getdownJ11libDir
-     }
-     }
-     }
+    if (JAVA_VERSION.equals("11")) {
+    def j11libFiles = fileTree(dir: "$jalviewDir/$j11libDir", include: ["*.jar"]).getFiles()
+    j11libFiles.sort().each{f ->
+    def line = "code = " + getdown_j11lib_dir + '/' + f.getName() + "\n"
+    getdownTextString += line
+    copy {
+    from f.getPath()
+    into project.ext.getdownJ11libDir
+    }
+    }
+    }
      */
 
     // getdown-launcher.jar should not be in main application class path so the main application can move it when updated.  Listed as a resource so it gets updated.
@@ -813,38 +927,51 @@ task getdownWebsite() {
     def getdown_txt = file(project.ext.getdownWebsiteDir + "/getdown.txt")
     getdown_txt.write(getdownTextString)
 
-    copy {
-      from getdown_txt
-      into project.ext.getdownFilesDir
-    }
+    def launch_jvl = file(project.ext.getdownWebsiteDir + "/" + getdown_launch_jvl)
+    launch_jvl.write("appbase="+props.get("getdown_txt_appbase"))
 
     copy {
       from getdownLauncher
-      into project.ext.getdownWebsiteDir
       rename(file(getdownLauncher).getName(), getdown_launcher_new)
+      into project.ext.getdownWebsiteDir
     }
 
     copy {
       from getdownLauncher
-      into project.ext.getdownFilesDir
+      into project.ext.getdownWebsiteDir
+    }
+
+    if (! (CHANNEL.startsWith("ARCHIVE") || CHANNEL.startsWith("DEVELOP"))) {
+      copy {
+        from getdown_txt
+        from getdownLauncher
+        from getdownWebsiteDir+"/"+getdown_build_properties
+        into getdownInstallDir
+      }
+
+      copy {
+        from getdownInstallDir
+        into getdownFilesInstallDir
+      }
     }
 
     copy {
+      from getdown_txt
+      from launch_jvl
       from getdownLauncher
-      into project.ext.getdownWebsiteDir
+      from getdownWebsiteDir+"/"+getdown_build_properties
+      into getdownFilesDir
     }
 
     copy {
-      from jalviewDir + '/' + project.getProperty('getdown_txt_ui.background_image')
-      from jalviewDir + '/' + project.getProperty('getdown_txt_ui.error_background')
-      from jalviewDir + '/' + project.getProperty('getdown_txt_ui.progress_image')
-      from jalviewDir + '/' + project.getProperty('getdown_txt_ui.icon')
-      from jalviewDir + '/' + project.getProperty('getdown_txt_ui.mac_dock_icon')
+         from getdownResourceDir
       into project.ext.getdownFilesDir + '/' + getdown_resource_dir
     }
   }
 
-  inputs.dir(jalviewDir + '/' + packageDir)
+  if (buildDist) {
+    inputs.dir(jalviewDir + '/' + packageDir)
+  }
   outputs.dir(project.ext.getdownWebsiteDir)
   outputs.dir(project.ext.getdownFilesDir)
 }
@@ -864,6 +991,22 @@ task getdown() {
   group = "distribution"
   description = "Create the minimal and full getdown app folder for installers and website and create digest file"
   dependsOn getdownDigest
+  doLast {
+    if (reportRsyncCommand) {
+      def fromDir = getdownWebsiteDir + (getdownWebsiteDir.endsWith("/")?"":"/")
+      def toDir = getdown_rsync_dest + "/" + getdownDir + (getdownDir.endsWith("/")?"":"/")
+      println "LIKELY RSYNC COMMAND:"
+      println "rsync -avh --delete '$fromDir' '$toDir'"
+      if (RUNRSYNC == "true") {
+        exec {
+          commandLine "mkdir", "-p", toDir
+        }
+        exec {
+          commandLine "rsync", "-avh", "--delete", fromDir, toDir
+        }
+      }
+    }
+  }
 }
 
 clean {
@@ -910,18 +1053,22 @@ task copyInstall4jTemplate(type: Copy) {
     rename (install4jTemplate, install4jConfFile)
     filter(ReplaceTokens, beginToken: '', endToken: '', tokens: ['9999999999': JAVA_VERSION])
     filter(ReplaceTokens, beginToken: '$$', endToken: '$$',
-      tokens: [
-        'JAVA_VERSION': JAVA_VERSION,
-        'JAVA_INTEGER_VERSION': JAVA_INTEGER_VERSION,
-        'VERSION': JALVIEW_VERSION,
-        'MACOS_JAVA_VM_DIR': macosJavaVMDir,
-        'MACOS_JAVA_VM_TGZ': macosJavaVMTgz,
-        'WINDOWS_JAVA_VM_DIR': windowsJavaVMDir,
-        'WINDOWS_JAVA_VM_TGZ': windowsJavaVMTgz,
-        'INSTALL4JINFOPLISTFILEASSOCIATIONS': install4jInfoPlistFileAssociations,
-        'COPYRIGHT_MESSAGE': install4jCopyrightMessage,
-        'MACOS_BUNDLE_ID': install4jMacOSBundleId
-      ]
+    tokens: [
+    'JAVA_VERSION': JAVA_VERSION,
+    'JAVA_INTEGER_VERSION': JAVA_INTEGER_VERSION,
+    'VERSION': JALVIEW_VERSION,
+    'MACOS_JAVA_VM_DIR': macosJavaVMDir,
+    'MACOS_JAVA_VM_TGZ': macosJavaVMTgz,
+    'WINDOWS_JAVA_VM_DIR': windowsJavaVMDir,
+    'WINDOWS_JAVA_VM_TGZ': windowsJavaVMTgz,
+    'INSTALL4JINFOPLISTFILEASSOCIATIONS': install4jInfoPlistFileAssociations,
+    'COPYRIGHT_MESSAGE': install4jCopyrightMessage,
+    'MACOS_BUNDLE_ID': install4jMacOSBundleId,
+    'GETDOWN_RESOURCE_DIR': getdown_resource_dir,
+    'GETDOWN_DIST_DIR': getdown_app_dir,
+    'GETDOWN_ALT_DIR': getdown_app_dir_alt,
+    'GETDOWN_INSTALL_DIR': getdown_install_dir
+    ]
     )
     if (OSX_KEYPASS=="") {
       filter(ReplaceTokens, beginToken: 'codeSigning macEnabled="', endToken: '"', tokens: ['true':'codeSigning macEnabled="false"'])
@@ -945,13 +1092,13 @@ task copyInstall4jTemplate(type: Copy) {
     // include uninstaller applescript app files in dmg
     def installerDMGUninstallerXml = file("$install4jDir/$install4jDMGUninstallerAppFiles").text
     ant.replaceregexp(
-      byline: false,
-      flags: "s",
-      match: '<file name="UNINSTALL_OLD_JALVIEW_APP_REPLACED_IN_GRADLE" file=.*?>',
-      replace: installerDMGUninstallerXml,
-      file: install4jConf
+    byline: false,
+    flags: "s",
+    match: '<file name="UNINSTALL_OLD_JALVIEW_APP_REPLACED_IN_GRADLE" file=.*?>',
+    replace: installerDMGUninstallerXml,
+    file: install4jConf
     )
-    */
+     */
   }
 }
 
@@ -968,16 +1115,18 @@ task installers(type: com.install4j.gradle.Install4jTask) {
 
   if (OSX_KEYPASS) {
     macKeystorePassword=OSX_KEYPASS
-    
+
   }
-  
+
   inputs.dir(project.ext.getdownWebsiteDir)
   inputs.file(install4jConf)
   inputs.dir(macosJavaVMDir)
   inputs.dir(windowsJavaVMDir)
   outputs.dir("$jalviewDir/$install4jBuildDir/$JAVA_VERSION")
+
 }
 
 clean {
   delete install4jConf
 }
+
similarity index 69%
rename from getdown/lib/getdown-core-1.8.3-SNAPSHOT.jar
rename to getdown/lib/getdown-core.jar
index 965e75d..7ee98a0 100644 (file)
Binary files a/getdown/lib/getdown-core-1.8.3-SNAPSHOT.jar and b/getdown/lib/getdown-core.jar differ
index dcede78..42efe3c 100644 (file)
Binary files a/getdown/lib/getdown-launcher.jar and b/getdown/lib/getdown-launcher.jar differ
index f8231aa..16af8b3 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>com.threerings.getdown</groupId>
     <artifactId>getdown</artifactId>
-    <version>1.8.3-SNAPSHOT</version>
+    <version>1.8.3-1.0_JVL</version>
   </parent>
 
   <artifactId>getdown-ant</artifactId>
index efec8b6..d8264b4 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>com.threerings.getdown</groupId>
     <artifactId>getdown</artifactId>
-    <version>1.8.3-SNAPSHOT</version>
+    <version>1.8.3-1.0_JVL</version>
   </parent>
 
   <artifactId>getdown-core</artifactId>
index 0de5c8a..c3a3d79 100644 (file)
@@ -70,13 +70,18 @@ public class Application
         public enum Step
         {
             UPDATE_JAVA(10),
-            VERIFY_METADATA(15, 65, 95),
-            DOWNLOAD(40),
+            //VERIFY_METADATA(15, 65, 95),
+            VERIFY_METADATA(15, 45, 90),
+            DOWNLOAD(50),
             PATCH(60),
-            VERIFY_RESOURCES(70, 97),
-            REDOWNLOAD_RESOURCES(90),
-            UNPACK(98),
-            LAUNCH(99);
+            //VERIFY_RESOURCES(70, 97),
+            VERIFY_RESOURCES(30, 60),
+            //REDOWNLOAD_RESOURCES(90),
+            REDOWNLOAD_RESOURCES(70),
+            //UNPACK(98),
+            UNPACK(90),
+            //LAUNCH(99);
+            LAUNCH(100);
 
             /** What is the final percent value for this step? */
             public final List<Integer> defaultPercents;
@@ -103,6 +108,9 @@ public class Application
         /** The paths (relative to the appdir) of images for the window icon. */
         public final List<String> iconImages;
 
+        /** The path (relative to the appdir) to a single background image to appear first. */
+        public final String instantBackgroundImage;
+
         /** The path (relative to the appdir) to a single background image. */
         public final String backgroundImage;
 
@@ -142,6 +150,18 @@ public class Application
         /** Whether progress text should be hidden or not. */
         public final boolean hideProgressText;
 
+        /** Whether the splash screen should retain focus. */
+        public final boolean progressSync;
+
+        /** Whether the splash screen should retain focus. */
+        public final boolean keepOnTop;
+
+        /** Whether to display the appbase. */
+        public final boolean displayAppbase;
+
+        /** Whether to display the version. */
+        public final boolean displayVersion;
+
         /** The minimum number of seconds to display the GUI. This is to prevent the GUI from
           * flashing up on the screen and immediately disappearing, which can be confusing to the
           * user. */
@@ -155,12 +175,13 @@ public class Application
         @Override
         public String toString ()
         {
-            return "[name=" + name + ", bg=" + background + ", bg=" + backgroundImage +
+            return "[name=" + name + ", bg=" + background + ", bg=" + backgroundImage + ", instant_bg=" + instantBackgroundImage +
                 ", pi=" + progressImage + ", prect=" + progress + ", pt=" + progressText +
                 ", pb=" + progressBar + ", srect=" + status + ", st=" + statusText +
                 ", shadow=" + textShadow + ", err=" + installError + ", nrect=" + patchNotes +
                 ", notes=" + patchNotesUrl + ", stepPercentages=" + stepPercentages +
-                ", hideProgressText" + hideProgressText + ", minShow=" + minShowSeconds + "]";
+                ", hideProgressText=" + hideProgressText + ", keepOnTop=" + keepOnTop + ", progressSync=" + progressSync + ", minShow=" + minShowSeconds +
+                ", displayAppbase=" + displayAppbase + ", displayVersion=" + displayVersion + "]";
         }
 
         public UpdateInterface (Config config)
@@ -169,6 +190,10 @@ public class Application
             this.progress = config.getRect("ui.progress", new Rectangle(5, 5, 300, 15));
             this.progressText = config.getColor("ui.progress_text", Color.BLACK);
             this.hideProgressText =  config.getBoolean("ui.hide_progress_text");
+            this.progressSync =  config.getBoolean("ui.progress_sync");
+            this.keepOnTop =  config.getBoolean("ui.keep_on_top");
+            this.displayAppbase =  config.getBoolean("ui.display_appbase");
+            this.displayVersion =  config.getBoolean("ui.display_version");
             this.minShowSeconds = config.getInt("ui.min_show_seconds", 5);
             this.progressBar = config.getColor("ui.progress_bar", 0x6699CC);
             this.status = config.getRect("ui.status", new Rectangle(5, 25, 500, 100));
@@ -176,6 +201,7 @@ public class Application
             this.textShadow = config.getColor("ui.text_shadow", Color.CLEAR);
             this.hideDecorations = config.getBoolean("ui.hide_decorations");
             this.backgroundImage = config.getString("ui.background_image");
+            this.instantBackgroundImage = config.getString("ui.instant_background_image");
             // default to black or white bg color, depending on the brightness of the progressText
             int defaultBackground = (0.5f < Color.brightness(this.progressText)) ?
                 Color.BLACK : Color.WHITE;
@@ -1866,22 +1892,27 @@ public class Application
       
       try {
         Config tmpConfig = null;
+        Map<String, Object> tmpData = new HashMap<>();
         if (_locatorFile.exists()) {
           tmpConfig = Config.parseConfig(_locatorFile,  opts);
+          // appbase is sanitised in HostWhitelist
+          Map<String, Object> tmpConfigData = tmpConfig.getData();
+          if (tmpConfig != null) {
+            for (Map.Entry<String, Object> entry : tmpConfigData.entrySet()) {
+              String key = entry.getKey();
+              Object value = entry.getValue();
+              String mkey = key.indexOf('.') > -1 ? key.substring(key.indexOf('.') + 1) : key;
+              if (Config.allowedReplaceKeys.contains(mkey) || Config.allowedMergeKeys.contains(mkey)) {
+                tmpData.put(key, value);
+              }
+            }
+          } else {
+            log.warning("Error occurred reading config file", "file", _locatorFile);
+          }
         } else {
           log.warning("Given locator file does not exist", "file", _locatorFile);
         }
         
-        // appbase is sanitised in HostWhitelist
-        Map<String, Object> tmpData = new HashMap<>();
-        for (Map.Entry<String, Object> entry : tmpConfig.getData().entrySet()) {
-          String key = entry.getKey();
-          Object value = entry.getValue();
-          String mkey = key.indexOf('.') > -1 ? key.substring(key.indexOf('.') + 1) : key;
-          if (Config.allowedReplaceKeys.contains(mkey) || Config.allowedMergeKeys.contains(mkey)) {
-            tmpData.put(key, value);
-          }
-        }
         locatorConfig = new Config(tmpData);
         
       } catch (Exception e) {
@@ -1893,6 +1924,10 @@ public class Application
       return locatorConfig;
     }
     
+    public String getAppbase() {
+       return _appbase;
+    }
+    
     protected final EnvConfig _envc;
     protected File _config;
     protected Digest _digest;
index e77061a..90e5c83 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>com.threerings.getdown</groupId>
     <artifactId>getdown</artifactId>
-    <version>1.8.3-SNAPSHOT</version>
+    <version>1.8.3-1.0_JVL</version>
   </parent>
 
   <artifactId>getdown-launcher</artifactId>
index d82ed15..ba238de 100644 (file)
@@ -231,6 +231,9 @@ public abstract class Getdown extends Thread
         Config config = _app.init(true);
         if (preloads) doPredownloads(_app.getResources());
         _ifc = new Application.UpdateInterface(config);
+        if (_status != null) {
+          _status.setAppbase(_app.getAppbase());
+        }
     }
 
     /**
@@ -570,7 +573,7 @@ public abstract class Getdown extends Thread
             // show the patch notes button, if applicable
             if (!StringUtil.isBlank(_ifc.patchNotesUrl)) {
                 createInterfaceAsync(false);
-                EventQueue.invokeLater(new Runnable() {
+                EQinvoke(new Runnable() {
                     public void run () {
                         _patchNotes.setVisible(true);
                     }
@@ -702,7 +705,7 @@ public abstract class Getdown extends Thread
                 } else {
                     proc = _app.createProcess(false);
                 }
-
+                
                 // close standard in to avoid choking standard out of the launched process
                 proc.getInputStream().close();
                 // close standard out, since we're not going to write to anything to it anyway
@@ -731,6 +734,9 @@ public abstract class Getdown extends Thread
                 }
             }
 
+            //_container.setVisible(true);
+            //_container.validate();
+
             // if we have a UI open and we haven't been around for at least 5 seconds (the default
             // for min_show_seconds), don't stick a fork in ourselves straight away but give our
             // lovely user a chance to see what we're doing
@@ -763,10 +769,10 @@ public abstract class Getdown extends Thread
         if (_silent || (_container != null && !reinit)) {
             return;
         }
-/*
-        EventQueue.invokeLater(new Runnable() {
+        
+        EQinvoke (new Runnable() {
             public void run () {
-*/
+               
                 if (_container == null || reinit) {
                     if (_container == null) {
                         _container = createContainer();
@@ -782,34 +788,41 @@ public abstract class Getdown extends Thread
                     try {
                       readConfig(false);
                       Graphics g = _container.getGraphics();
-                      String imageFile = _ifc.backgroundImage;
-                      BufferedImage bgImage = loadImage(_ifc.backgroundImage);
-                      int bwidth = bgImage.getWidth();
-                      int bheight = bgImage.getHeight();
-
-                      instantSplashPane = new JPanel() {
-                        @Override
-                        protected void paintComponent(Graphics g)
-                        {
-                          super.paintComponent(g);
-                          // attempt to draw a background image...
-                          if (bgImage != null) {
-                            g.drawImage(bgImage, 0, 0, this);
-                          }
-                        }
-                      };
-
-                      instantSplashPane.setSize(bwidth,bheight);
-                      instantSplashPane.setPreferredSize(new Dimension(bwidth,bheight));
-
-                      _layers.add(instantSplashPane, Integer.valueOf(0));
-                    
-                      _container.setPreferredSize(new Dimension(bwidth,bheight));
+                      BufferedImage iBgImage = loadImage(_ifc.instantBackgroundImage);
+                      boolean ibg = true;
+                      if (iBgImage == null) {
+                         iBgImage = loadImage(_ifc.backgroundImage);
+                         ibg = false;
+                      }
+                      if (iBgImage != null) {
+                                                 final BufferedImage bgImage = iBgImage;
+                                                 int bwidth = bgImage.getWidth();
+                                                 int bheight = bgImage.getHeight();
+                                                 
+                                                 log.info("Displaying instant background image", ibg?"instant_background_image":"background_image");
+
+                                                 instantSplashPane = new JPanel() {
+                                                       @Override
+                                                       protected void paintComponent(Graphics g)
+                                                       {
+                                                         super.paintComponent(g);
+                                                         // attempt to draw a background image...
+                                                         if (bgImage != null) {
+                                                               g.drawImage(bgImage, 0, 0, this);
+                                                         }
+                                                       }
+                                                 };
+
+                                                 instantSplashPane.setSize(bwidth,bheight);
+                                                 instantSplashPane.setPreferredSize(new Dimension(bwidth,bheight));
+
+                                                 _layers.add(instantSplashPane, Integer.valueOf(1));
+                                                 
+                                                 _container.setPreferredSize(new Dimension(bwidth,bheight));
+                      }
                     } catch (Exception e) {
-                      log.warning("Failed to set instant background image", "bg", _ifc.backgroundImage);
+                      log.warning("Failed to set instant background image", "ibg", _ifc.instantBackgroundImage);
                     }
-
-                    
                     
                     _container.add(_layers, BorderLayout.CENTER);
                     _patchNotes = new JButton(new AbstractAction(_msgs.getString("m.patch_notes")) {
@@ -820,14 +833,14 @@ public abstract class Getdown extends Thread
                     _patchNotes.setFont(StatusPanel.FONT);
                     _layers.add(_patchNotes);
                     _status = new StatusPanel(_msgs);
-                    _layers.add(_status, Integer.valueOf(10));
+                    setStatusAsync("m.initialising", 0, -1L, true);
+                    //_layers.add(_status, Integer.valueOf(2));
                     initInterface();
                 }
                 showContainer();
-/*
             }
         });
-*/
+        
     }
 
     /**
@@ -844,6 +857,7 @@ public abstract class Getdown extends Thread
         _status.init(_ifc, _background, getProgressImage());
         Dimension size = _status.getPreferredSize();
         _status.setSize(size);
+        //_status.updateStatusLabel();
         _layers.setPreferredSize(size);
 
         _patchNotes.setBounds(_ifc.patchNotes.x, _ifc.patchNotes.y,
@@ -944,9 +958,10 @@ public abstract class Getdown extends Thread
             createInterfaceAsync(false);
         }
 
-        EventQueue.invokeLater(new Runnable() {
+        EQinvoke(new Runnable() {
             public void run () {
-                if (_status == null) {
+
+               if (_status == null) {
                     if (message != null) {
                         log.info("Dropping status '" + message + "'.");
                     }
@@ -959,9 +974,19 @@ public abstract class Getdown extends Thread
                     _status.setProgress(0, -1L);
                 } else if (percent >= 0) {
                     _status.setProgress(percent, remaining);
+                } else {
+                       //_status.setStatus("m.initialising", false);
                 }
+                
             }
         });
+        
+        if (! _addedStatusLayer) {
+               _layers.add(_status, Integer.valueOf(2));
+               _addedStatusLayer = true;
+               initInterface();
+        }
+        
     }
 
     protected void reportTrackingEvent (String event, int progress)
@@ -1090,7 +1115,32 @@ public abstract class Getdown extends Thread
             setStatusAsync(null, stepToGlobalPercent(percent), -1L, false);
         }
     };
-
+    
+    // Asynchronous or synchronous progress updates
+    protected void EQinvoke(Runnable r) {
+      
+      try {
+        readConfig(false);
+      } catch (Exception e) {
+        log.warning("Could't read config when invoking GUI action", "Exception", e.getMessage());
+      }
+      if (_ifc != null && _ifc.progressSync) {
+        try {
+          EventQueue.invokeAndWait(r);
+          //r.run();
+        } catch (Exception e) {
+          log.warning("Tried to invokeAndWait but couldn't. Going to invokeLater instead", "Exception", e.getMessage());
+          EventQueue.invokeLater(r);
+        }
+      } else {
+        EventQueue.invokeLater(r);
+        //r.run();
+      }
+      
+      //try { Thread.sleep(500); } catch (Exception e) {}
+      
+    }
+    
     protected Application _app;
     protected Application.UpdateInterface _ifc = new Application.UpdateInterface(Config.EMPTY);
 
@@ -1103,12 +1153,13 @@ public abstract class Getdown extends Thread
     protected AbortPanel _abort;
     protected RotatingBackgrounds _background;
 
+    protected boolean _addedStatusLayer;
     protected boolean _dead;
     protected boolean _silent;
     protected boolean _launchInSilent;
     protected boolean _noUpdate;
     protected long _startup;
-
+    
     protected Set<Resource> _toInstallResources;
     protected boolean _readyToInstall;
 
index fd83de3..4adc77c 100644 (file)
@@ -7,7 +7,6 @@ package com.threerings.getdown.launcher;
 
 import java.awt.Color;
 import java.awt.Container;
-import java.awt.EventQueue;
 import java.awt.Image;
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
@@ -29,6 +28,7 @@ import javax.swing.WindowConstants;
 
 import com.samskivert.swing.util.SwingUtil;
 import com.threerings.getdown.data.Application;
+import com.threerings.getdown.data.Build;
 import com.threerings.getdown.data.EnvConfig;
 import com.threerings.getdown.data.SysProps;
 import com.threerings.getdown.util.LaunchUtil;
@@ -92,7 +92,7 @@ public class GetdownApp
     }
     if (abort) System.exit(-1);
 
-    log.info("Starting ....");
+    log.info("Starting ...");
     try
     {
       jalview.bin.StartupNotificationListener.setListener();
@@ -117,6 +117,7 @@ public class GetdownApp
     log.info("-- User Name: " + System.getProperty("user.name"));
     log.info("-- User Home: " + System.getProperty("user.home"));
     log.info("-- Cur dir: " + System.getProperty("user.dir"));
+       log.info("-- launcher version: "+Build.version());
     log.info("-- startupFilesParameterString: " + startupFilesParameterString);
     log.info("---------------------------------------------");
 
@@ -132,6 +133,19 @@ public class GetdownApp
               handleWindowClose();
             }
           });
+          
+          // keep_on_top
+          try {
+                 readConfig(false);
+          } catch (Exception e) {
+                 log.warning("Error reading config for keep_on_top");
+          }
+          // move window to top, always on top
+          if (_ifc.keepOnTop) {
+                 log.info("Keep on top set to ", "keep_on_top", _ifc.keepOnTop);
+                         _frame.setAlwaysOnTop(true);
+          }
+
           // handle close on ESC
           String cancelId = "Cancel"; // $NON-NLS-1$
           _frame.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
@@ -244,7 +258,7 @@ public class GetdownApp
         super.fail(message);
         // super.fail causes the UI to be created (if needed) on the next UI tick, so we
         // want to wait until that happens before we attempt to redecorate the window
-        EventQueue.invokeLater(new Runnable() {
+        EQinvoke(new Runnable() {
           @Override
           public void run() {
             // if the frame was set to be undecorated, make window decoration available
index 99f44ca..620182b 100644 (file)
@@ -28,6 +28,7 @@ import com.samskivert.swing.util.SwingUtil;
 import com.samskivert.util.Throttle;
 
 import com.threerings.getdown.data.Application.UpdateInterface;
+import com.threerings.getdown.data.Build;
 import com.threerings.getdown.util.MessageUtil;
 import com.threerings.getdown.util.Rectangle;
 import com.threerings.getdown.util.StringUtil;
@@ -106,7 +107,7 @@ public final class StatusPanel extends JComponent
         // maybe update the progress label
         if (_progress != percent) {
             _progress = percent;
-            if (!_ifc.hideProgressText) {
+            if (_ifc != null && !_ifc.hideProgressText) {
                 String msg = MessageFormat.format(get("m.complete"), percent);
                 _newplab = createLabel(msg, new Color(_ifc.progressText, true));
             }
@@ -128,7 +129,7 @@ public final class StatusPanel extends JComponent
             }
             remaining /= values;
 
-            if (!_ifc.hideProgressText) {
+            if (_ifc != null && !_ifc.hideProgressText) {
                 // now compute our display value
                 int minutes = (int)(remaining / 60), seconds = (int)(remaining % 60);
                 String remstr = minutes + ":" + ((seconds < 10) ? "0" : "") + seconds;
@@ -265,13 +266,28 @@ public final class StatusPanel extends JComponent
      */
     protected void updateStatusLabel ()
     {
+        if (_ifc == null) {
+               return;
+        }
         String status = _status;
         if (!_displayError) {
             for (int ii = 0; ii < _statusDots; ii++) {
                 status += " .";
             }
         }
-        _newlab = createLabel(status, new Color(_ifc.statusText, true));
+       StringBuilder labelText = new StringBuilder();
+       if (_ifc.displayVersion) {
+               labelText.append("launcher version: "+Build.version());
+               labelText.append("\n");
+       }
+       if (_ifc.displayAppbase) {
+               labelText.append("appbase: "+_appbase);
+               labelText.append("\n");
+       }
+       labelText.append(status); 
+        
+        _newlab = createLabel(labelText.toString(), new Color(_ifc.statusText, true));
         // set the width of the label to the width specified
         int width = _ifc.status.width;
         if (width == 0) {
@@ -370,6 +386,10 @@ public final class StatusPanel extends JComponent
             return key;
         }
     }
+    
+    public void setAppbase(String appbase) {
+       _appbase = appbase;
+    }
 
     protected Image _barimg;
     protected RotatingBackgrounds _bg;
@@ -393,4 +413,6 @@ public final class StatusPanel extends JComponent
     protected Throttle _rthrottle = new Throttle(1, 1000L);
 
     protected static final Font FONT = new Font("SansSerif", Font.BOLD, 12);
+    
+    public String _appbase;
 }
index 19b2999..19b5069 100644 (file)
@@ -108,3 +108,6 @@ m.invalid_appbase = The configuration file specifies an invalid 'appbase'.
 m.missing_class = The configuration file is missing the application class.
 m.missing_code = The configuration file specifies no code resources.
 m.invalid_digest_file = The digest file is invalid.
+
+# When at 0%
+m.initialising = Initialising
index 8e36835..9a60ccd 100644 (file)
@@ -114,3 +114,6 @@ m.missing_class = In der Konfigurationsdatei fehlt die Anwendungsklasse.
 m.missing_code = Die Konfigurationsdatei enth\u00e4lt keine Codequellen.
 m.invalid_digest_file = Die Hashwertedatei ist ung\u00fcltig.
 
+
+# When at 0%
+m.initialising = Initialising
index 609b025..ca01010 100644 (file)
@@ -113,3 +113,6 @@ m.missing_class = Al archivo de configuraci\u00f3n le falta la clase de aplicaci
 m.missing_code = El archivo de configuraci\u00f3n especifica que no hay recursos de c\u00f3digo.
 m.invalid_digest_file = El archivo digest no es v\u00e1lido.
 
+
+# When at 0%
+m.initialising = Initialising
index 3666204..73b8b7f 100644 (file)
@@ -109,3 +109,6 @@ m.invalid_appbase = Le fichier de configuration sp\u00e9cifie un 'appbase' inval
 m.missing_class = Le fichier de configuration ne contient pas la classe de l'application.
 m.missing_code = Le fichier de configuration ne sp\u00e9cifie aucune ressource de code.
 m.invalid_digest_file = Le fichier digest est invalide.
+
+# When at 0%
+m.initialising = Initialising
index 33b3260..2f4f701 100644 (file)
@@ -112,3 +112,6 @@ m.invalid_appbase = Il tag "appbase" non Ã¨ valido.
 m.missing_class = Il file di configurazione non contiene la classe da eseguire (tag "class").
 m.missing_code = Il file di configurazione non contiene alcuna risorsa (tag "code").
 m.invalid_digest_file = Il file di digest non Ã¨ valido.
+
+# When at 0%
+m.initialising = Initialising
index c344c16..7865ab3 100644 (file)
@@ -105,3 +105,6 @@ m.invalid_appbase = \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304c\u7121\u52b9\u306a
 m.missing_class = \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30af\u30e9\u30b9\u304c\u4e0d\u660e\u3067\u3059\u3002 
 m.missing_code = \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3067\u30b3\u30fc\u30c9\u30ea\u30bd\u30fc\u30b9\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 
 m.invalid_digest_file = \u30c0\u30a4\u30b8\u30a7\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u304c\u7121\u52b9\u3067\u3059\u3002 
+
+# When at 0%
+m.initialising = Initialising
index 3f8a47f..0968c43 100644 (file)
@@ -100,3 +100,6 @@ m.invalid_appbase = \uC124\uC815 \uD30C\uC77C\uC5D0 \uC798\uBABB\uB41C 'appbase'
 m.missing_class = \uC124\uC815 \uD30C\uC77C\uC5D0 \uC5B4\uD50C\uB9AC\uCF00\uC774\uC158 \uD074\uB798\uC2A4\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.
 m.missing_code = \uC124\uC815 \uD30C\uC77C\uC5D0 \uB9AC\uC18C\uC2A4\uC5D0 \uB300\uD55C \uCF54\uB4DC\uAC00 \uBA85\uC2DC\uB418\uC5B4 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
 m.invalid_digest_file = \uB2E4\uC774\uC81C\uC2A4\uD2B8 \uD30C\uC77C\uC774 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+
+# When at 0%
+m.initialising = Initialising
index 47db91c..71e19df 100644 (file)
@@ -116,3 +116,6 @@ m.invalid_appbase = O arquivo de configura\u00E7\u00E3o especifica um 'AppBase'
 m.missing_class = O arquivo de configura\u00E7\u00E3o n\u00E3o possui a classe de aplicativo.
 m.missing_code = O arquivo de configura\u00E7\u00E3o n\u00E3o especifica um recurso de c\u00F3digo.
 m.invalid_digest_file = O arquivo digest \u00E9 inv\u00E1lido.
+
+# When at 0%
+m.initialising = Initialising
index 2c27543..33e0a86 100644 (file)
@@ -59,3 +59,6 @@ m.invalid_appbase = \u914d\u7f6e\u6587\u4ef6\u6307\u5b9a\u4e86\u65e0\u6548\u7684
 m.missing_class = \u914d\u7f6e\u6587\u4ef6\u4e2d\u65e0\u6cd5\u627e\u5230\u7a0b\u5e8f\u6587\u4ef6\u3002
 m.missing_code = \u914d\u7f6e\u6587\u4ef6\u4e2d\u65e0\u6cd5\u627e\u5230\u6307\u5b9a\u7684\u8d44\u6e90\u3002
 m.invalid_digest_file = \u65e0\u6548\u7684\u914d\u7f6e\u6587\u4ef6\u3002
+
+# When at 0%
+m.initialising = Initialising
old mode 100644 (file)
new mode 100755 (executable)
index 0ce786f..6a14aea
@@ -1 +1,24 @@
-mvn clean package -Dgetdown.host.whitelist="jalview.org,*.jalview.org" && cp launcher/target/getdown-launcher-1.8.3-SNAPSHOT.jar ../../../getdown/lib/getdown-launcher.jar && cp core/target/getdown-core-1.8.3-SNAPSHOT.jar ../../../getdown/lib/getdown-core-1.8.3-SNAPSHOT.jar && cp core/target/getdown-core-1.8.3-SNAPSHOT.jar ../../../j8lib/getdown-core.jar && cp core/target/getdown-core-1.8.3-SNAPSHOT.jar ../../../j11lib/getdown-core.jar 
+#!/usr/bin/env bash
+
+if [ x$JVLVERSION != x ]; then
+  export VERSION=$JVLVERSION
+else
+  export VERSION=1.8.3-1.0_JVL
+fi
+
+if [ x${VERSION%_JVL} = x$VERSION ]; then
+  VERSION=${VERSION}_JVL
+fi
+
+echo "Setting VERSION to '$VERSION'"
+
+perl -p -i -e 's|(<version>)[^<]*JVL[^<]*(</version>)|${1}$ENV{VERSION}${2}|;' pom.xml */pom.xml
+
+mvn package -Dgetdown.host.whitelist="jalview.org,*.jalview.org"
+RET=$?
+if [ x$RET = x0 ]; then
+  cp launcher/target/getdown-launcher-$VERSION.jar ../../../getdown/lib/getdown-launcher.jar && echo "Copied getdown-launcher.jar to getdown/lib"
+  cp core/target/getdown-core-$VERSION.jar ../../../getdown/lib/getdown-core.jar && echo "Copied getdown-core.jar to getdown/lib"
+  cp core/target/getdown-core-$VERSION.jar ../../../j8lib/getdown-core.jar && echo "Copied getdown-core.jar to j8lib"
+  cp core/target/getdown-core-$VERSION.jar ../../../j11lib/getdown-core.jar && echo "Copied getdown-core.jar to j11lib"
+fi
index 78d67b0..3334828 100644 (file)
@@ -10,7 +10,7 @@
   <groupId>com.threerings.getdown</groupId>
   <artifactId>getdown</artifactId>
   <packaging>pom</packaging>
-  <version>1.8.3-SNAPSHOT</version>
+  <version>1.8.3-1.0_JVL</version>
 
   <name>getdown</name>
   <description>An application installer and updater.</description>
index b483978..6f3092e 100644 (file)
@@ -30,6 +30,7 @@ use_clover = false
 cloverClassesDir = clover-classes
 cloverSourcesInstrDir = sources-instr
 packageDir = dist
+ARCHIVEDIR =
 outputJar = jalview.jar
 
 testSourceDir = test
@@ -47,34 +48,38 @@ gradlePluginsDir = gradle/plugins
 getdown_local = false
 getdown_website_dir = getdown/website
 getdown_resource_dir = resource
-getdown_app_dir = dist
 #getdown_j11lib_dir = j11lib
 getdown_files_dir = getdown/files
 getdown_launcher = getdown/lib/getdown-launcher.jar
 getdown_launcher_new = getdown-launcher-new.jar
-getdown_core = getdown/lib/getdown-core-1.8.3-SNAPSHOT.jar
-getdown_base_txt = getdown/files/getdown.txt
+getdown_core = getdown/lib/getdown-core.jar
+getdown_launch_jvl = channel_launch.jvl
+getdown_build_properties = build_properties
 getdown_txt_title = Jalview
-getdown_channel_base = http://www.jalview.org/getdown/jalview
-getdown_channel_name = TEST
 getdown_txt_allow_offline = true
 getdown_txt_jalview.jvmmempc = 90
 getdown_txt_multi_jvmarg = -Dgetdownappdir=%APPDIR%
 getdown_txt_strict_comments = true
 getdown_txt_title = Jalview
 getdown_txt_ui.name = Jalview
+getdown_txt_ui.progress_sync = true
+getdown_txt_ui.keep_on_top = true
+getdown_txt_ui.display_appbase = true
+getdown_txt_ui.display_version = true
+getdown_txt_ui.min_show_seconds = 6
 getdown_txt_ui.background = FFFFFF
-getdown_txt_ui.background_image = resources/images/jalview_logo_background_getdown-640x480.png
-getdown_txt_ui.error_background = resources/images/jetset_jalview_splash.png
-getdown_txt_ui.progress_image = resources/images/jalview_logo_background_getdown-progress.png
+getdown_txt_ui.background_image = utils/getdown/jalview_logo_background_getdown-640x480.png
+getdown_txt_ui.instant_background_image = utils/getdown/jalview_logo_background_getdown_instant-640x480.png
+getdown_txt_ui.error_background = utils/getdown/jalview_logo_background_getdown_error-640x480.png
+getdown_txt_ui.progress_image = utils/getdown/jalview_logo_background_getdown-progress.png
 getdown_txt_ui.icon = resources/images/JalviewLogo_Huge.png
 getdown_txt_ui.progress = 20, 440, 600, 22
 getdown_txt_ui.progress_bar = AAAAFF
 getdown_txt_ui.progress_text = 000000
 getdown_txt_ui.status = 20, 380, 600, 58
 getdown_txt_ui.status_text = 000066
-getdown_txt_ui.text_shadow = EEEEFF
-getdown_txt_ui.install_error = http://www.jalview.org/download/error
+#getdown_txt_ui.text_shadow = FFFFFF
+getdown_txt_ui.install_error = http://www.jalview.org/faq/getdownerror
 getdown_txt_ui.mac_dock_icon = resources/images/jalview_logos.ico
 getdown_alt_java8_min_version  = 01080000
 getdown_alt_java11_min_version = 11000000
@@ -113,3 +118,12 @@ eclipse_extra_jdt_prefs_file = .settings/org.eclipse.jdt.core.jalview.prefs
 pandoc_exec = /usr/local/bin/pandoc,/usr/bin/pandoc
 dev = false
 
+CHANNEL=LOCAL
+getdown_channel_base = http://www.jalview.org/getdown
+getdown_channel_name = SCRATCH-DEFAULT
+getdown_app_dir_release = release
+getdown_install_dir = install
+getdown_app_dir_alt = alt
+getdown_rsync_dest = /Volumes/jalview/docroot/getdown
+reportRsyncCommand =
+RUNRSYNC=false
index 965e75d..7ee98a0 100644 (file)
Binary files a/j11lib/getdown-core.jar and b/j11lib/getdown-core.jar differ
index 965e75d..7ee98a0 100644 (file)
Binary files a/j8lib/getdown-core.jar and b/j8lib/getdown-core.jar differ
old mode 100755 (executable)
new mode 100644 (file)
diff --git a/resources/images/jalview_logo_background_getdown-progress.png b/resources/images/jalview_logo_background_getdown-progress.png
deleted file mode 100644 (file)
index fb87750..0000000
Binary files a/resources/images/jalview_logo_background_getdown-progress.png and /dev/null differ
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
diff --git a/utils/archive_building.sh b/utils/archive_building.sh
new file mode 100644 (file)
index 0000000..c29d824
--- /dev/null
@@ -0,0 +1,48 @@
+#!/usr/bin/env bash
+
+J8HOME=/path/to/java8/jdk
+J11HOME=/path/to/java11/jdk
+OLDBUILDDIR=/path/to/old/build/root
+JALVIEWDIR=/path/to/recent/jalview
+LOCALARCHIVEDIR=/path/to/where/to/store/archive/locally
+WEBSITEDOCROOTMOUNT=/path/to/mounted/website/docroot
+
+
+cd OLDBUILDDIR
+mkdir tar
+cd tar
+wget http://www.jalview.org/source/jalview_2_08b.tar.gz  http://www.jalview.org/source/jalview_2_2_1.tar.gz  http://www.jalview.org/source/jalview_2_3_buildfix.tar.gz http://www.jalview.org/source/jalview_2_4_0b2.tar.gz http://www.jalview.org/source/jalview_2_5_1.tar.gz http://www.jalview.org/source/jalview_2_6_1.tar.gz http://www.jalview.org/source/jalview_2_7.tar.gz http://www.jalview.org/source/jalview_2_8_2b1.tar.gz http://www.jalview.org/source/jalview_2_9_0b1.tar.gz http://www.jalview.org/source/jalview_2_10_5.tar.gz
+cd -
+
+export JAVA_HOME=J8HOME
+export PATH=$JAVA_HOME/bin:$PATH
+
+for x in tar/jalview_*.tar.gz
+do
+       V=${x#*jalview_}
+       V=${V%.tar.gz}
+       echo $V
+       tar --one-top-level -xvf $x
+       cd jalview_$V/jalview
+       ant makedist -DJALVIEW_VERSION="$V"
+       cd -
+done
+
+export JAVA_HOME=J11HOME
+export PATH=$JAVA_HOME/bin:$PATH
+
+cd $JALVIEWDIR
+for x in $OLDBUILDDIR/jalview_*/jalview
+do
+       V=${x##*jalview_}
+       V=${V%/jalview}
+       echo $V
+       [ -e getdown/website ] && /bin/rm -r getdown/website
+       [ -e getdown/files ] && /bin/rm -r getdown/website
+       gradle getdown -PCHANNEL=ARCHIVE -PJALVIEW_VERSION="$V" -PJAVA_VERSION=1.8 -PARCHIVEDIR=$x -Pgetdown_rsync_dest=$LOCALARCHIVEDIR -PRUNRSYNC=true
+done
+
+
+cd $LOCALARCHIVEDIR
+rsync -avh --delete $LOCALARCHIVEDIR/archive/ $WEBSITEDOCROOTMOUNT/getdown/archive/
+
diff --git a/utils/getdown/jalview_logo_background_getdown-progress.png b/utils/getdown/jalview_logo_background_getdown-progress.png
new file mode 100644 (file)
index 0000000..71066e8
Binary files /dev/null and b/utils/getdown/jalview_logo_background_getdown-progress.png differ
diff --git a/utils/getdown/jalview_logo_background_getdown-progress3-0.png b/utils/getdown/jalview_logo_background_getdown-progress3-0.png
new file mode 100644 (file)
index 0000000..cb1475c
Binary files /dev/null and b/utils/getdown/jalview_logo_background_getdown-progress3-0.png differ
diff --git a/utils/getdown/jalview_logo_background_getdown-progress3-1.png b/utils/getdown/jalview_logo_background_getdown-progress3-1.png
new file mode 100644 (file)
index 0000000..71066e8
Binary files /dev/null and b/utils/getdown/jalview_logo_background_getdown-progress3-1.png differ
diff --git a/utils/getdown/jalview_logo_background_getdown-progress3.xcf b/utils/getdown/jalview_logo_background_getdown-progress3.xcf
new file mode 100644 (file)
index 0000000..70b4f01
Binary files /dev/null and b/utils/getdown/jalview_logo_background_getdown-progress3.xcf differ
diff --git a/utils/getdown/jalview_logo_background_getdown-progress4.png b/utils/getdown/jalview_logo_background_getdown-progress4.png
new file mode 100644 (file)
index 0000000..bc7e125
Binary files /dev/null and b/utils/getdown/jalview_logo_background_getdown-progress4.png differ
diff --git a/utils/getdown/jalview_logo_background_getdown_error-640x480.png b/utils/getdown/jalview_logo_background_getdown_error-640x480.png
new file mode 100644 (file)
index 0000000..f2a6ce5
Binary files /dev/null and b/utils/getdown/jalview_logo_background_getdown_error-640x480.png differ
diff --git a/utils/getdown/jalview_logo_background_getdown_instant-640x480.png b/utils/getdown/jalview_logo_background_getdown_instant-640x480.png
new file mode 100644 (file)
index 0000000..8f88dd0
Binary files /dev/null and b/utils/getdown/jalview_logo_background_getdown_instant-640x480.png differ
diff --git a/utils/getdown/jalview_logo_background_getdown_instant-640x480.xcf b/utils/getdown/jalview_logo_background_getdown_instant-640x480.xcf
new file mode 100644 (file)
index 0000000..3e6cc24
Binary files /dev/null and b/utils/getdown/jalview_logo_background_getdown_instant-640x480.xcf differ
index a589f05..f8a5ec2 100644 (file)
Binary files a/utils/install4j/Jalview-File.icns and b/utils/install4j/Jalview-File.icns differ
index 694d180..110964a 100644 (file)
Binary files a/utils/install4j/Jalview-File.ico and b/utils/install4j/Jalview-File.ico differ
index 06399cf..649770d 100644 (file)
        <key>CFBundleIconFile</key>
        <string>applet</string>
        <key>CFBundleIdentifier</key>
-       <string>com.apple.ScriptEditor.id.Uninstall-Old-Jalview--optional</string>
+       <string>com.apple.ScriptEditor.id.Uninstall-Old-Jalview</string>
        <key>CFBundleInfoDictionaryVersion</key>
        <string>6.0</string>
        <key>CFBundleName</key>
-       <string>Uninstall Old Jalview (optional)</string>
+       <string>Uninstall Old Jalview</string>
        <key>CFBundlePackageType</key>
        <string>APPL</string>
        <key>CFBundleShortVersionString</key>
        </dict>
        <key>LSRequiresCarbon</key>
        <true/>
+       <key>NSAppleEventsUsageDescription</key>
+       <string>This script needs to control other applications to run.</string>
+       <key>NSAppleMusicUsageDescription</key>
+       <string>This script needs access to your music to run.</string>
+       <key>NSCalendarsUsageDescription</key>
+       <string>This script needs access to your calendars to run.</string>
+       <key>NSCameraUsageDescription</key>
+       <string>This script needs access to your camera to run.</string>
+       <key>NSContactsUsageDescription</key>
+       <string>This script needs access to your contacts to run.</string>
+       <key>NSHomeKitUsageDescription</key>
+       <string>This script needs access to your HomeKit Home to run.</string>
+       <key>NSMicrophoneUsageDescription</key>
+       <string>This script needs access to your microphone to run.</string>
+       <key>NSPhotoLibraryUsageDescription</key>
+       <string>This script needs access to your photos to run.</string>
+       <key>NSRemindersUsageDescription</key>
+       <string>This script needs access to your reminders to run.</string>
+       <key>NSSiriUsageDescription</key>
+       <string>This script needs access to Siri to run.</string>
+       <key>NSSystemAdministrationUsageDescription</key>
+       <string>This script needs access to administer this system to run.</string>
        <key>WindowState</key>
        <dict>
                <key>bundleDividerCollapsed</key>
@@ -36,7 +58,7 @@
                <key>bundlePositionOfDivider</key>
                <real>0.0</real>
                <key>dividerCollapsed</key>
-               <false/>
+               <true/>
                <key>eventLogLevel</key>
                <integer>2</integer>
                <key>name</key>
@@ -44,9 +66,9 @@
                <key>positionOfDivider</key>
                <real>421</real>
                <key>savedFrame</key>
-               <string>20 1180 700 672 0 0 3360 1867 </string>
+               <string>272 342 1754 910 0 0 3360 1867 </string>
                <key>selectedTab</key>
-               <string>description</string>
+               <string>result</string>
        </dict>
 </dict>
 </plist>
index 05e9c35..191894d 100755 (executable)
Binary files a/utils/install4j/Uninstall Old Jalview.app/Contents/MacOS/applet and b/utils/install4j/Uninstall Old Jalview.app/Contents/MacOS/applet differ
index 7afbebc..3147d89 100644 (file)
Binary files a/utils/install4j/Uninstall Old Jalview.app/Contents/Resources/Scripts/main.scpt and b/utils/install4j/Uninstall Old Jalview.app/Contents/Resources/Scripts/main.scpt differ
index cf9920e..8e05928 100644 (file)
Binary files a/utils/install4j/Uninstall Old Jalview.app/Contents/Resources/applet.rsrc and b/utils/install4j/Uninstall Old Jalview.app/Contents/Resources/applet.rsrc differ
index 76ac711..5f23fc5 100644 (file)
@@ -1,4 +1,4 @@
-{\rtf1\ansi\ansicpg1252\cocoartf1561\cocoasubrtf600
+{\rtf1\ansi\ansicpg1252\cocoartf1671\cocoasubrtf500
 {\fonttbl}
 {\colortbl;\red255\green255\blue255;}
 {\*\expandedcolortbl;;}
index 9e97319..04a1485 100644 (file)
@@ -6,7 +6,7 @@
        <dict>
                <key>Resources/Scripts/main.scpt</key>
                <data>
-               fqUypmAyNT7kgykBjNqtdjMM1Mg=
+               KEuZnZPFR5wgwG/qEhXMd5yBoi4=
                </data>
                <key>Resources/applet.icns</key>
                <data>
                </data>
                <key>Resources/applet.rsrc</key>
                <data>
-               aTN+E9yPFzj2wRwcmefcTGGpQYM=
+               oLbJze+WI6mK9fT14HFV6EwFoEI=
                </data>
                <key>Resources/description.rtfd/TXT.rtf</key>
                <data>
-               O79gUM5bdy3TK5k10nzhees3tLA=
+               JdCHmFsejhMRQNi2CzUAg7xM/6Q=
                </data>
        </dict>
        <key>files2</key>
                <dict>
                        <key>hash</key>
                        <data>
-                       fqUypmAyNT7kgykBjNqtdjMM1Mg=
+                       KEuZnZPFR5wgwG/qEhXMd5yBoi4=
                        </data>
                        <key>hash2</key>
                        <data>
-                       EQiIOT1XOBWGSwXZlfTXIrxNy+61mjRDze6gR+e3c2U=
+                       Y+OMztx129elZ3oX0uhaiMMNU87xhkEPVzSuhF528t0=
                        </data>
                </dict>
                <key>Resources/applet.icns</key>
                <dict>
                        <key>hash</key>
                        <data>
-                       aTN+E9yPFzj2wRwcmefcTGGpQYM=
+                       oLbJze+WI6mK9fT14HFV6EwFoEI=
                        </data>
                        <key>hash2</key>
                        <data>
-                       fQhBZ0v2JeXFde/OYcgUVYOfUcp426odn5rtdTkcdjc=
+                       6bi/D/GzKmLhXbbC8+OLEX9+44Au0XOyGRd+kfw6uzA=
                        </data>
                </dict>
                <key>Resources/description.rtfd/TXT.rtf</key>
                <dict>
                        <key>hash</key>
                        <data>
-                       O79gUM5bdy3TK5k10nzhees3tLA=
+                       JdCHmFsejhMRQNi2CzUAg7xM/6Q=
                        </data>
                        <key>hash2</key>
                        <data>
-                       qxVBcYejHswAjMa99pSek5Vgi52JP4dlQMTiIzbCkBs=
+                       e8RCmynIiyJGwHTnWQowZeGP0OUnjjA6SQTvIzP7Hxs=
                        </data>
                </dict>
        </dict>
index 7afbebc..3ab3516 100644 (file)
Binary files a/utils/install4j/Uninstall Old Jalview.scpt and b/utils/install4j/Uninstall Old Jalview.scpt differ
index bec9829..d1c85e9 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<install4j version="7.0.9" transformSequenceNumber="7">
+<install4j version="7.0.11" transformSequenceNumber="7">
   <directoryPresets config="." />
   <application name="Jalview" distributionSourceDir="" applicationId="6595-2347-1923-0725" mediaDir="../../build/install4j" mediaFilePattern="${compiler:sys.shortName}_${compiler:sys.platform}_${compiler:sys.version}" compression="6" lzmaCompression="true" pack200Compression="false" excludeSignedFromPacking="true" commonExternalFiles="false" createMd5Sums="true" shrinkRuntime="true" shortName="Jalview" publisher="University of Dundee" publisherWeb="http://www.jalview.org/" version="$$VERSION$$" allPathsRelative="true" backupOnSave="false" autoSave="false" convertDotsToUnderscores="true" macSignature="????" macVolumeId="5aac4968c304f65" javaMinVersion="9999999999" javaMaxVersion="" allowBetaVM="true" jdkMode="jdk" jdkName="JDK 11.0">
     <languages skipLanguageSelection="false" languageSelectionInPrincipalLanguage="false">
@@ -58,7 +58,7 @@
       <dirEntry mountPoint="885" file="$$WINDOWS_JAVA_VM_DIR$$" overwriteMode="4" shared="false" fileMode="755" uninstallMode="0" overrideFileMode="true" overrideOverwriteMode="false" overrideUninstallMode="true" entryMode="subdir" subDirectory="${compiler:JRE_DIR}" excludeSuffixes="" dirMode="755" overrideDirMode="false">
         <exclude />
       </dirEntry>
-      <dirEntry mountPoint="1875" file="../../getdown/website/$$JAVA_VERSION$$/dist" overwriteMode="1" shared="false" fileMode="644" uninstallMode="2" overrideFileMode="true" overrideOverwriteMode="true" overrideUninstallMode="true" entryMode="subdir" subDirectory="dist" excludeSuffixes="" dirMode="755" overrideDirMode="true">
+      <dirEntry mountPoint="1875" file="../../getdown/website/$$JAVA_VERSION$$/$$GETDOWN_DIST_DIR$$" overwriteMode="1" shared="false" fileMode="644" uninstallMode="2" overrideFileMode="true" overrideOverwriteMode="true" overrideUninstallMode="true" entryMode="subdir" subDirectory="$$GETDOWN_DIST_DIR$$" excludeSuffixes="" dirMode="755" overrideDirMode="true">
         <exclude />
       </dirEntry>
       <dirEntry mountPoint="2107" file="Uninstall Old Jalview.app" overwriteMode="4" shared="false" fileMode="755" uninstallMode="0" overrideFileMode="true" overrideOverwriteMode="false" overrideUninstallMode="false" entryMode="subdir" subDirectory="Uninstall Old Jalview.app" excludeSuffixes="" dirMode="755" overrideDirMode="true">
       <java mainClass="com.threerings.getdown.launcher.GetdownApp" mainMode="1" vmParameters="" arguments=". jalview" allowVMPassthroughParameters="true" preferredVM="" bundleRuntime="true">
         <classPath>
           <archive location="getdown-launcher.jar" failOnError="true" />
+          <scanDirectory location="$$GETDOWN_INSTALL_DIR$$" failOnError="false" />
         </classPath>
         <modulePath />
         <nativeLibraryDirectories />
       <java mainClass="com.threerings.getdown.launcher.GetdownApp" mainMode="1" vmParameters="" arguments=". jalview" allowVMPassthroughParameters="true" preferredVM="" bundleRuntime="true">
         <classPath>
           <archive location="getdown-launcher.jar" failOnError="true" />
+          <scanDirectory location="$$GETDOWN_INSTALL_DIR$$" failOnError="false" />
         </classPath>
         <modulePath />
         <nativeLibraryDirectories />
       </splashScreen>
       <java mainClass="jalview.bin.Launcher" mainMode="1" vmParameters="" arguments="" allowVMPassthroughParameters="true" preferredVM="" bundleRuntime="true">
         <classPath>
-          <scanDirectory location="dist" failOnError="false" />
+          <scanDirectory location="$$GETDOWN_DIST_DIR$$" failOnError="false" />
         </classPath>
         <modulePath />
         <nativeLibraryDirectories />
@@ -1123,7 +1125,7 @@ return console.askYesNo(message, true);
                   <java class="java.beans.XMLDecoder">
                     <object class="com.install4j.runtime.beans.actions.files.DeleteFileAction">
                       <void property="files">
-                        <array class="java.io.File" length="17">
+                        <array class="java.io.File" length="31">
                           <void index="0">
                             <object class="java.io.File">
                               <string>jre</string>
@@ -1131,84 +1133,154 @@ return console.askYesNo(message, true);
                           </void>
                           <void index="1">
                             <object class="java.io.File">
-                              <string>.install4j</string>
+                              <string>jre.jar</string>
                             </object>
                           </void>
                           <void index="2">
                             <object class="java.io.File">
-                              <string>dist</string>
+                              <string>.install4j</string>
                             </object>
                           </void>
                           <void index="3">
                             <object class="java.io.File">
-                              <string>resource</string>
+                              <string>$$GETDOWN_DIST_DIR$$</string>
                             </object>
                           </void>
                           <void index="4">
                             <object class="java.io.File">
-                              <string>getdown-launcher.jar</string>
+                              <string>$$GETDOWN_ALT_DIR$$</string>
                             </object>
                           </void>
                           <void index="5">
                             <object class="java.io.File">
-                              <string>getdown-launcher-old.jar</string>
+                              <string>$$GETDOWN_RESOURCE_DIR$$</string>
                             </object>
                           </void>
                           <void index="6">
                             <object class="java.io.File">
-                              <string>getdown-launcher-new.jar</string>
+                              <string>getdown-launcher.jar</string>
                             </object>
                           </void>
                           <void index="7">
                             <object class="java.io.File">
-                              <string>*.jarv</string>
+                              <string>getdown-launcher-old.jar</string>
                             </object>
                           </void>
                           <void index="8">
                             <object class="java.io.File">
-                              <string>gettingdown.lock</string>
+                              <string>getdown-launcher-new.jar</string>
                             </object>
                           </void>
                           <void index="9">
                             <object class="java.io.File">
-                              <string>*.log</string>
+                              <string>*.jarv</string>
                             </object>
                           </void>
                           <void index="10">
                             <object class="java.io.File">
-                              <string>*.txt</string>
+                              <string>gettingdown.lock</string>
                             </object>
                           </void>
                           <void index="11">
                             <object class="java.io.File">
-                              <string>*_new</string>
+                              <string>*.log</string>
                             </object>
                           </void>
                           <void index="12">
                             <object class="java.io.File">
-                              <string>digest.txt</string>
+                              <string>*.txt</string>
                             </object>
                           </void>
                           <void index="13">
                             <object class="java.io.File">
-                              <string>digest2.txt</string>
+                              <string>*_new</string>
                             </object>
                           </void>
                           <void index="14">
                             <object class="java.io.File">
-                              <string>getdown-launcher.jarv</string>
+                              <string>digest.txt</string>
                             </object>
                           </void>
                           <void index="15">
                             <object class="java.io.File">
-                              <string>launcher.log</string>
+                              <string>digest2.txt</string>
                             </object>
                           </void>
                           <void index="16">
                             <object class="java.io.File">
+                              <string>getdown-launcher.jarv</string>
+                            </object>
+                          </void>
+                          <void index="17">
+                            <object class="java.io.File">
+                              <string>getdown-launcher-new.jarv</string>
+                            </object>
+                          </void>
+                          <void index="18">
+                            <object class="java.io.File">
+                              <string>channel_launch.jvl</string>
+                            </object>
+                          </void>
+                          <void index="19">
+                            <object class="java.io.File">
+                              <string>launcher.log</string>
+                            </object>
+                          </void>
+                          <void index="20">
+                            <object class="java.io.File">
                               <string>proxy.txt</string>
                             </object>
                           </void>
+                          <void index="21">
+                            <object class="java.io.File">
+                              <string>META-INF</string>
+                            </object>
+                          </void>
+                          <void index="22">
+                            <object class="java.io.File">
+                              <string>install/getdown-launcher.jar</string>
+                            </object>
+                          </void>
+                          <void index="23">
+                            <object class="java.io.File">
+                              <string>install/getdown.txt</string>
+                            </object>
+                          </void>
+                          <void index="24">
+                            <object class="java.io.File">
+                              <string>install/build_properties</string>
+                            </object>
+                          </void>
+                          <void index="25">
+                            <object class="java.io.File">
+                              <string>build_properties</string>
+                            </object>
+                          </void>
+                          <void index="26">
+                            <object class="java.io.File">
+                              <string>install</string>
+                            </object>
+                          </void>
+                          <void index="27">
+                            <object class="java.io.File">
+                              <string>dist</string>
+                            </object>
+                          </void>
+                          <void index="28">
+                            <object class="java.io.File">
+                              <string>release</string>
+                            </object>
+                          </void>
+                          <void index="29">
+                            <object class="java.io.File">
+                              <string>alt</string>
+                            </object>
+                          </void>
+                          <void index="30">
+                            <object class="java.io.File">
+                              <string>resource</string>
+                            </object>
+                          </void>
                         </array>
                       </void>
                       <void property="recursive">
@@ -1537,7 +1609,7 @@ return console.askYesNo(message, true);
               <group name="" id="49" customizedId="" beanClass="com.install4j.runtime.beans.groups.VerticalFormComponentGroup" enabled="true" commentSet="false" comment="" actionElevationType="inherit" useExternalParametrization="true" externalParametrizationName="Customize title bar" externalParametrizationMode="include">
                 <serializedBean>
                   <java class="java.beans.XMLDecoder">
-                    <object class="com.install4j.runtime.beans.groups.VerticalFormComponentGroup">
+                    <object class="com.install4j.runtime.beans.groups.VerticalFormComponentGroup" id="VerticalFormComponentGroup0">
                       <void property="backgroundColor">
                         <object class="java.awt.Color">
                           <int>255</int>
@@ -1567,19 +1639,21 @@ return console.askYesNo(message, true);
                           <string>icon:${installer:sys.installerApplicationMode}_header.png</string>
                         </object>
                       </void>
+                      <void id="Integer0" property="cellSpacing" />
+                      <void id="Integer1" property="borderWidth" />
                       <void property="imageInsets">
                         <object class="java.awt.Insets">
-                          <int>0</int>
+                          <object idref="Integer0" />
                           <int>5</int>
-                          <int>1</int>
-                          <int>1</int>
+                          <object idref="Integer1" />
+                          <object idref="Integer1" />
                         </object>
                       </void>
                       <void property="insets">
                         <object class="java.awt.Insets">
-                          <int>0</int>
+                          <object idref="Integer0" />
                           <int>20</int>
-                          <int>0</int>
+                          <object idref="Integer0" />
                           <int>10</int>
                         </object>
                       </void>
@@ -1661,16 +1735,17 @@ return console.askYesNo(message, true);
               <group name="" id="53" customizedId="" beanClass="com.install4j.runtime.beans.groups.HorizontalFormComponentGroup" enabled="true" commentSet="false" comment="" actionElevationType="inherit" useExternalParametrization="false" externalParametrizationName="" externalParametrizationMode="all">
                 <serializedBean>
                   <java class="java.beans.XMLDecoder">
-                    <object class="com.install4j.runtime.beans.groups.HorizontalFormComponentGroup">
+                    <object class="com.install4j.runtime.beans.groups.HorizontalFormComponentGroup" id="HorizontalFormComponentGroup0">
                       <void property="alignFirstLabel">
                         <boolean>false</boolean>
                       </void>
+                      <void id="Integer0" property="cellSpacing" />
                       <void property="insets">
                         <object class="java.awt.Insets">
                           <int>3</int>
-                          <int>5</int>
+                          <object idref="Integer0" />
                           <int>8</int>
-                          <int>5</int>
+                          <object idref="Integer0" />
                         </object>
                       </void>
                     </object>