JAL-3210 merging in Jalview-JS/develop
authorBen Soares <b.soares@dundee.ac.uk>
Sun, 10 Nov 2019 16:33:56 +0000 (16:33 +0000)
committerBen Soares <b.soares@dundee.ac.uk>
Sun, 10 Nov 2019 16:33:56 +0000 (16:33 +0000)
build.gradle
gradle.properties
utils/jalviewjs/_j2sclasslist.txt
utils/jalviewjs/_j2sclasslist_jmol.txt [new file with mode: 0644]
utils/jalviewjs/classlists/jalview.txt [moved from classlists/jalview.txt with 100% similarity]
utils/jalviewjs/classlists/jvexamplefile.txt [moved from classlists/jvexamplefile.txt with 100% similarity]

index 535f3b9..9798062 100644 (file)
@@ -246,6 +246,7 @@ if (JAVA_VERSION.equals("1.8")) {
   throw new GradleException("JAVA_VERSION=${JAVA_VERSION} not currently supported by Jalview")
 }
 
+
 sourceSets {
 
   main {
@@ -310,6 +311,7 @@ sourceSets {
   }
 }
 
+
 // clover bits
 dependencies {
   if (use_clover) {
@@ -318,11 +320,13 @@ dependencies {
   }
 }
 
+
 configurations {
   cloverRuntime
   cloverRuntime.extendsFrom cloverCompile
 }
 
+
 eclipse {
   project {
     name = eclipse_project_name
@@ -395,12 +399,13 @@ eclipse {
         }
 
         //fileTree(dir: "$jalviewDir/$utilsDir", include: ["test*/*.jar"]).each {
-        sourceSets.test.compileClasspath.findAll { it.name.endsWith(".jar") }.each {
+        sourceSets.test.compileClasspath.findAll { it.name.endsWith(".jar") }.any {
           //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 closure
+            return false // groovy "continue" in .any closure
           }
+
           def itPath = it.toString()
           if (itPath.startsWith("${jalviewDirAbsolutePath}/")) {
             itPath = itPath.substring(jalviewDirAbsolutePath.length()+1)
@@ -451,6 +456,7 @@ eclipse {
 
 }
 
+
 task cloverInstr() {
   // only instrument source, we build test classes as normal
   inputs.files files (sourceSets.main.allJava) // , fileTree(dir:"$jalviewDir/$testSourceDir", include: ["**/*.java"]))
@@ -490,7 +496,6 @@ task cloverReport {
     com.atlassian.clover.reporters.xml.XMLReporter.runReport(args)
   }
 }
-
 // end clover bits
 
 
@@ -505,6 +510,7 @@ compileJava {
 
 }
 
+
 compileTestJava {
   if (use_clover) {
     dependsOn compileCloverJava
@@ -532,12 +538,14 @@ compileCloverJava {
   classpath += configurations.cloverRuntime
 }
 
+
 clean {
   doFirst {
     delete sourceSets.main.java.outputDir
   }
 }
 
+
 cleanTest {
   doFirst {
     delete sourceSets.test.java.outputDir
@@ -545,12 +553,14 @@ cleanTest {
   }
 }
 
+
 // format is a string like date.format("dd MMMM yyyy")
 def getDate(format) {
   def date = new Date()
   return date.format(format)
 }
 
+
 task setGitVals {
   def hashStdOut = new ByteArrayOutputStream()
   exec {
@@ -572,6 +582,7 @@ task setGitVals {
   outputs.upToDateWhen { false }
 }
 
+
 task createBuildProperties(type: WriteProperties) {
   dependsOn setGitVals
   inputs.dir("${jalviewDir}/${sourceDir}")
@@ -587,6 +598,7 @@ task createBuildProperties(type: WriteProperties) {
   outputs.file(outputFile)
 }
 
+
 def buildingHTML = "${jalviewDir}/${docDir}/building.html"
 task cleanBuildingHTML(type: Delete) {
   doFirst {
@@ -594,6 +606,7 @@ task cleanBuildingHTML(type: Delete) {
   }
 }
 
+
 task convertBuildingMD(type: Exec) {
   dependsOn cleanBuildingHTML
   def buildingMD = "${jalviewDir}/${docDir}/building.md"
@@ -628,12 +641,14 @@ task convertBuildingMD(type: Exec) {
   outputs.file(buildingHTML)
 }
 
+
 clean {
   doFirst {
     delete buildingHTML
   }
 }
 
+
 task syncDocs(type: Sync) {
   dependsOn convertBuildingMD
   def syncDir = "${classes}/${docDir}"
@@ -642,8 +657,8 @@ task syncDocs(type: Sync) {
 
 }
 
-def helpFile = "${classes}/${helpDir}/help.jhm"
 
+def helpFile = "${classes}/${helpDir}/help.jhm"
 task copyHelp(type: Copy) {
   def inputDir = "${jalviewDir}/${helpParentDir}/${helpDir}"
   def outputDir = "${classes}/${helpDir}"
@@ -665,12 +680,14 @@ task copyHelp(type: Copy) {
   outputs.dir(outputDir)
 }
 
+
 task syncLib(type: Sync) {
   def syncDir = "${classes}/${libDistDir}"
   from fileTree("${jalviewDir}/${libDistDir}")
   into syncDir
 }
 
+
 task syncResources(type: Sync) {
   from "${jalviewDir}/${resourceDir}"
   include "**/*.*"
@@ -680,6 +697,7 @@ task syncResources(type: Sync) {
   }
 }
 
+
 task prepare {
   dependsOn syncResources
   dependsOn syncDocs
@@ -713,6 +731,7 @@ test {
 
 }
 
+
 task buildIndices(type: JavaExec) {
   dependsOn copyHelp
   classpath = sourceSets.main.compileClasspath
@@ -732,6 +751,7 @@ task buildIndices(type: JavaExec) {
   outputs.file("${workingDir}/JavaHelpSearch/TMAP")
 }
 
+
 task compileLinkCheck(type: JavaCompile) {
   options.fork = true
   classpath = files("${jalviewDir}/${utilsDir}")
@@ -744,6 +764,7 @@ task compileLinkCheck(type: JavaCompile) {
   outputs.file("${jalviewDir}/${utilsDir}/BufferedLineReader.class")
 }
 
+
 task linkCheck(type: JavaExec) {
   dependsOn prepare, compileLinkCheck
 
@@ -804,11 +825,13 @@ jar {
   outputs.file("${jalviewDir}/${packageDir}/${archiveName}")
 }
 
+
 task copyJars(type: Copy) {
   from fileTree(dir: "${classes}", include: "**/*.jar").files
   into "${jalviewDir}/${packageDir}"
 }
 
+
 // doing a Sync instead of Copy as Copy doesn't deal with "outputs" very well
 task syncJars(type: Sync) {
   from fileTree(dir: "${jalviewDir}/${libDistDir}", include: "**/*.jar").files
@@ -818,6 +841,7 @@ task syncJars(type: Sync) {
   }
 }
 
+
 task makeDist {
   group = "build"
   description = "Put all required libraries in dist"
@@ -830,6 +854,7 @@ task makeDist {
   outputs.dir("${jalviewDir}/${packageDir}")
 }
 
+
 task cleanDist {
   dependsOn cleanPackageDir
   dependsOn cleanTest
@@ -853,6 +878,7 @@ shadowJar {
   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"
@@ -1033,6 +1059,7 @@ task getdownWebsite() {
   outputs.dir(project.ext.getdownFilesDir)
 }
 
+
 task getdownDigest(type: JavaExec) {
   group = "distribution"
   description = "Digest the getdown website folder"
@@ -1046,6 +1073,7 @@ task getdownDigest(type: JavaExec) {
   outputs.file("${project.ext.getdownWebsiteDir}/digest2.txt")
 }
 
+
 task getdown() {
   group = "distribution"
   description = "Create the minimal and full getdown app folder for installers and website and create digest file"
@@ -1068,6 +1096,7 @@ task getdown() {
   }
 }
 
+
 clean {
   doFirst {
     delete project.ext.getdownWebsiteDir
@@ -1075,6 +1104,7 @@ clean {
   }
 }
 
+
 install4j {
   def install4jHomeDir = "/opt/install4j"
   def hostname = "hostname".execute().text.trim()
@@ -1095,6 +1125,7 @@ install4j {
   }
 }
 
+
 def install4jConf
 def macosJavaVMDir
 def macosJavaVMTgz
@@ -1163,6 +1194,7 @@ task copyInstall4jTemplate(type: Copy) {
   }
 }
 
+
 task installers(type: com.install4j.gradle.Install4jTask) {
   group = "distribution"
   description = "Create the install4j installers"
@@ -1188,12 +1220,14 @@ task installers(type: com.install4j.gradle.Install4jTask) {
   outputs.dir("${jalviewDir}/${install4jBuildDir}/${JAVA_VERSION}")
 }
 
+
 clean {
   doFirst {
     delete install4jConf
   }
 }
 
+
 task sourceDist (type: Tar) {
   
   def VERSION_UNDERSCORES = JALVIEW_VERSION.replaceAll("\\.", "_")
@@ -1264,6 +1298,7 @@ task sourceDist (type: Tar) {
 //  }
 }
 
+
 task helppages  {
   dependsOn copyHelp
   dependsOn pubhtmlhelp
@@ -1272,18 +1307,24 @@ task helppages  {
   outputs.dir("${helpOutputDir}")
 }
 
+
 def jalviewjsBuildDir
 def jalviewjsSiteDir
-def jalviewjsTransferSiteJSDir
+def jalviewjsTransferSiteJsDir
 def jalviewjsTransferSiteLibDir
+def jalviewjsTransferSiteSwingJsDir
+def jalviewjsTransferSiteCoreDir
 task jalviewjsSitePath {
   def relativeBuildDir = file(jalviewDirAbsolutePath).toPath().relativize(buildDir.toPath())
   jalviewjsBuildDir = "${relativeBuildDir}/jalviewjs"
   jalviewjsSiteDir = "${jalviewjsBuildDir}/${jalviewjs_site_dir}"
-  jalviewjsTransferSiteJSDir = "${jalviewjsBuildDir}/tmp/${jalviewjs_site_dir}_js"
+  jalviewjsTransferSiteJsDir = "${jalviewjsBuildDir}/tmp/${jalviewjs_site_dir}_js"
   jalviewjsTransferSiteLibDir = "${jalviewjsBuildDir}/tmp/${jalviewjs_site_dir}_lib"
+  jalviewjsTransferSiteSwingJsDir = "${jalviewjsBuildDir}/tmp/${jalviewjs_site_dir}_swingjs"
+  jalviewjsTransferSiteCoreDir = "${jalviewjsBuildDir}/tmp/${jalviewjs_site_dir}_core"
 }
 
+
 def eclipseWorkspace
 task jalviewjsSetEclipseWorkspace {
   def propKey = "jalviewjs_eclipse_workspace"
@@ -1329,8 +1370,9 @@ task jalviewjsSetEclipseWorkspace {
     println("ECLIPSE WORKSPACE: "+eclipseWorkspace.getPath())
   }
 
-  inputs.property(propKey, eclipseWsDir)
+  //inputs.property(propKey, eclipseWsDir) // eclipseWsDir only gets set once this task runs, so will be out-of-date
   outputs.file(propsFileName)
+  outputs.upToDateWhen { eclipseWorkspace.exists() }
 }
 
 
@@ -1351,7 +1393,7 @@ task jalviewjsEclipsePaths {
     eclipseProduct = "${eclipseRoot}/Contents/Eclipse/.eclipseproduct"
   } else if (OperatingSystem.current().isWindows()) { // check these paths!!
     if (file("${eclipseRoot}/eclipse").isDirectory() && file("${eclipseRoot}/eclipse/.eclipseproduct").exists()) {
-      eclipseRoot += "/eclipse"
+      eclipseRoot += "/eclipse.exe"
     }
     eclipseBinary = "${eclipseRoot}/eclipse"
     eclipseProduct = "${eclipseRoot}/.eclipseproduct"
@@ -1363,7 +1405,7 @@ task jalviewjsEclipsePaths {
     eclipseProduct = "${eclipseRoot}/.eclipseproduct"
   }
 
-  eclipseVersion = "4.12" // default
+  eclipseVersion = "4.13" // default
   def assumedVersion = true
   if (file(eclipseProduct).exists()) {
     def fis = new FileInputStream(eclipseProduct)
@@ -1373,17 +1415,6 @@ task jalviewjsEclipsePaths {
     fis.close()
     assumedVersion = false
   }
-  /*
-  String[] v = eclipseVersion.split("\\.")
-  def v0 = Integer.valueOf(v[0])
-  def v1 = Integer.valueOf(v[1])
-  if (v0 < 4 || ( v0 == 4 && v1 < 13 )) {
-    eclipseVersionSuffix = "_4.12"
-  } else {
-    eclipseVersionSuffix = "_4.13"
-  }
-  */
-
   
   def propKey = "eclipse_debug"
   eclipseDebug = (project.hasProperty(propKey) && project.getProperty(propKey).equals("true"))
@@ -1395,35 +1426,13 @@ task jalviewjsEclipsePaths {
   }
 }
 
+
 task eclipseSetup {
   dependsOn eclipseProject
   dependsOn eclipseClasspath
   dependsOn eclipseJdt
 }
 
-/* using the Copy task below
-task OLDjalviewjsEclipseCopyDropins {
-  dependsOn jalviewjsEclipsePaths
-  dependsOn jalviewjsCleanEclipse
-  def inputFiles = fileTree(dir: "${jalviewDir}/${jalviewjs_eclipse_dropins_dir}", include: "*.jar")
-  inputFiles += file(jalviewjs_j2s_plugin)
-  def outputDir = "${buildDir}/jalviewjs
-
-  inputs.files inputFiles
-  inputFiles.each { file ->
-    outputs.file("${outputDir}/${file.name}")
-  }
-
-  doLast {
-    inputFiles.each { file ->
-      copy {
-        from file
-        into outputDir
-      }
-    }
-  }
-}
-*/
 
 // this version (type: Copy) will delete anything in the eclipse dropins folder that isn't in fromDropinsDir
 task jalviewjsEclipseCopyDropins(type: Copy) {
@@ -1437,6 +1446,7 @@ task jalviewjsEclipseCopyDropins(type: Copy) {
   into outputDir
 }
 
+
 // this eclipse -clean doesn't actually work
 task jalviewjsCleanEclipse(type: Exec) {
   dependsOn eclipseSetup
   def inputByteStream = new ByteArrayInputStream(inputString.getBytes())
   standardInput = inputByteStream
 }
+
 /* not really working yet
 jalviewjsEclipseCopyDropins.finalizedBy jalviewjsCleanEclipse
 */
 
-def jalviewjsTransferSiteUnzipDir
+
+task jalviewjsTransferUnzipSwingJs {
+  dependsOn jalviewjsSitePath
+
+  def file_zip = "${jalviewDir}/${jalviewjs_swingjs_zip}"
+
+  doLast {
+    copy {
+      from zipTree(file_zip)
+      into "${jalviewDir}/${jalviewjsTransferSiteSwingJsDir}"
+    }
+  }
+
+  inputs.file file_zip
+  outputs.dir "${jalviewDir}/${jalviewjsTransferSiteSwingJsDir}"
+}
+
+
 task jalviewjsTransferUnzipLib {
   dependsOn jalviewjsSitePath
 
   def zipFiles = fileTree(dir: "${jalviewDir}/${jalviewjs_libjs_dir}", include: "*.zip")
-  zipFiles += "${jalviewDir}/${jalviewjs_swingjs_zip}"
 
   doLast {
     zipFiles.each { file_zip -> 
@@ -1480,6 +1507,13 @@ task jalviewjsTransferUnzipLib {
   outputs.dir "${jalviewDir}/${jalviewjsTransferSiteLibDir}"
 }
 
+
+task jalviewjsTransferUnzipAllLibs {
+  dependsOn jalviewjsTransferUnzipSwingJs
+  dependsOn jalviewjsTransferUnzipLib
+}
+
+
 task jalviewjsCreateJ2sSettings(type: WriteProperties) {
   group "JalviewJS"
   description "Create the .j2s file from the j2s.* properties"
@@ -1494,30 +1528,33 @@ task jalviewjsCreateJ2sSettings(type: WriteProperties) {
     if (val != null) {
       if (prop == siteDirProperty) {
         if (!(val.startsWith('/') || val.startsWith("file://") )) {
-          val = "${jalviewDir}/${jalviewjsTransferSiteJSDir}/${val}"
+          val = "${jalviewDir}/${jalviewjsTransferSiteJsDir}/${val}"
         }
         setSiteDir = true
       }
       property(prop,val)
     }
     if (!setSiteDir) { // default site location, don't override specifically set property
-      property(siteDirProperty,"${jalviewDir}/${jalviewjsTransferSiteJSDir}")
+      property(siteDirProperty,"${jalviewDir}/${jalviewjsTransferSiteJsDir}")
     }
   }
   inputs.properties(j2s_props)
   outputs.file(outputFile)
 }
 
+
 task jalviewjsEclipseSetup {
   dependsOn jalviewjsEclipseCopyDropins
   dependsOn jalviewjsSetEclipseWorkspace
   dependsOn jalviewjsCreateJ2sSettings
 }
 
-task jalviewjsSyncLib (type: Sync) {
+
+task jalviewjsSyncAllLibs (type: Sync) {
   dependsOn jalviewjsSitePath
-  dependsOn jalviewjsTransferUnzipLib
+  dependsOn jalviewjsTransferUnzipAllLibs
   def inputFiles = fileTree(dir: "${jalviewDir}/${jalviewjsTransferSiteLibDir}")
+  inputFiles += fileTree(dir: "${jalviewDir}/${jalviewjsTransferSiteSwingJsDir}")
   def outputDir = "${jalviewDir}/${jalviewjsSiteDir}"
 
   from inputFiles
@@ -1534,6 +1571,7 @@ task jalviewjsSyncLib (type: Sync) {
   inputs.files inputFiles
 }
 
+
 task jalviewjsSyncResources (type: Sync) {
   dependsOn jalviewjsSitePath
   def inputFiles = fileTree(dir: "${jalviewDir}/${resourceDir}")
@@ -1553,6 +1591,7 @@ task jalviewjsSyncResources (type: Sync) {
   inputs.files inputFiles
 }
 
+
 task jalviewjsSyncSiteResources (type: Sync) {
   dependsOn jalviewjsSitePath
   def inputFiles = fileTree(dir: "${jalviewDir}/${jalviewjs_site_resource_dir}")
@@ -1572,6 +1611,7 @@ task jalviewjsSyncSiteResources (type: Sync) {
   inputs.files inputFiles
 }
 
+
 task jalviewjsSyncBuildProperties (type: Sync) {
   dependsOn jalviewjsSitePath
   dependsOn createBuildProperties
@@ -1592,12 +1632,21 @@ task jalviewjsSyncBuildProperties (type: Sync) {
   inputs.files inputFiles
 }
 
+
 task jalviewjsProjectImport(type: Exec) {
   dependsOn eclipseSetup
   dependsOn jalviewjsEclipsePaths
   dependsOn jalviewjsEclipseSetup
 
-  def projdir = eclipseWorkspace.getPath()+"/.metadata/.plugins/org.eclipse.core.resources/.projects/jalview/org.eclipse.jdt.core"
+  doFirst {
+    // do not run a headless import when we claim to be in Eclipse
+    if (ECLIPSE_IDE_DEVELOPER.equals("true")) {
+      throw new StopExecutionException("Not running headless import whilst ECLIPSE_IDE_DEVELOPER is '"+ECLIPSE_IDE_DEVELOPER+"'")
+    }
+  }
+
+  //def projdir = eclipseWorkspace.getPath()+"/.metadata/.plugins/org.eclipse.core.resources/.projects/jalview/org.eclipse.jdt.core"
+  def projdir = eclipseWorkspace.getPath()+"/.metadata/.plugins/org.eclipse.core.resources/.projects/jalview"
   executable(eclipseBinary)
   args(["-nosplash", "--launcher.suppressErrors", "-application", "com.seeq.eclipse.importprojects.headlessimport", "-data", eclipseWorkspace.getPath(), "-import", jalviewDirAbsolutePath])
   if (eclipseDebug) {
@@ -1606,14 +1655,24 @@ task jalviewjsProjectImport(type: Exec) {
   args += [ "--launcher.appendVmargs", "-vmargs", "-Dorg.eclipse.equinox.p2.reconciler.dropins.directory=${jalviewDirAbsolutePath}/${jalviewjsBuildDir}/${jalviewjs_eclipse_tmp_dropins_dir}" ]
 
   inputs.file("${jalviewDir}/.project")
-  outputs.upToDateWhen { file(projdir).exists() }
+  outputs.upToDateWhen { 
+    file(projdir).exists()
+  }
 }
 
+
 task jalviewjsTranspile(type: Exec) {
   dependsOn jalviewjsEclipseSetup 
   dependsOn jalviewjsProjectImport
   dependsOn jalviewjsEclipsePaths
 
+  doFirst {
+    // do not run a headless transpile when we claim to be in Eclipse
+    if (ECLIPSE_IDE_DEVELOPER.equals("true")) {
+      throw new StopExecutionException("Not running headless transpile whilst ECLIPSE_IDE_DEVELOPER is '"+ECLIPSE_IDE_DEVELOPER+"'")
+    }
+  }
+
   executable(eclipseBinary)
   args(["-nosplash", "--launcher.suppressErrors", "-application", "org.eclipse.jdt.apt.core.aptBuild", "-data", eclipseWorkspace, "-${jalviewjs_eclipse_build_arg}", eclipse_project_name ])
   if (eclipseDebug) {
@@ -1627,7 +1686,7 @@ task jalviewjsTranspile(type: Exec) {
     stdout = new ByteArrayOutputStream()
     stderr = new ByteArrayOutputStream()
 
-    def logOutFileName = "${jalviewDirAbsolutePath}/${jalviewjsBuildDir}/${jalviewjs_j2s_stdout}"
+    def logOutFileName = "${jalviewDirAbsolutePath}/${jalviewjsBuildDir}/${jalviewjs_j2s_transpile_stdout}"
     def logOutFile = file(logOutFileName)
     logOutFile.createNewFile()
     logOutFile.text = """ROOT: ${jalviewjs_eclipse_root}
@@ -1638,10 +1697,6 @@ DEBUG: ${eclipseDebug}
 ----
 """
     def logOutFOS = new FileOutputStream(logOutFile, true) // true == append
-    //def logErrFileName = "${jalviewDir}/${jalviewjsBuildDir}/${jalviewjs_j2s_stderr}"
-    //def logErrFile = file(logFileName)
-    //logErrFile.createNewFile()
-    //def logErrFOS = new FileErrputStream(logErrFile, false)
     // combine stdout and stderr
     def logErrFOS = logOutFOS
 
@@ -1669,25 +1724,261 @@ DEBUG: ${eclipseDebug}
   doLast {
     if (stdout.toString().contains("Error processing ")) {
       // j2s did not complete transpile
-      throw new GradleException("Error during transpilation:\n${stderr}\nSee eclipse transpile log file '${jalviewDir}/${jalviewjsBuildDir}/${jalviewjs_j2s_stdout}'")
+      //throw new TaskExecutionException("Error during transpilation:\n${stderr}\nSee eclipse transpile log file '${jalviewDir}/${jalviewjsBuildDir}/${jalviewjs_j2s_transpile_stdout}'")
+      throw new GradleException("Error during transpilation:\n${stderr}\nSee eclipse transpile log file '${jalviewDir}/${jalviewjsBuildDir}/${jalviewjs_j2s_transpile_stdout}'")
     }
   }
 
   inputs.dir("${jalviewDir}/${sourceDir}")
-  outputs.dir("${jalviewDir}/${jalviewjsTransferSiteJSDir}")
-  outputs.upToDateWhen( { file("${jalviewDir}/${jalviewjsTransferSiteJSDir}${jalviewjs_server_resource}").exists() } )
+  outputs.dir("${jalviewDir}/${jalviewjsTransferSiteJsDir}")
+  outputs.upToDateWhen( { file("${jalviewDir}/${jalviewjsTransferSiteJsDir}${jalviewjs_server_resource}").exists() } )
+}
+
+
+def jalviewjsCallCore(FileCollection list, String prefixFile, String suffixFile, String jsfile, String zjsfile, File logOutFile, Boolean logOutConsole) {
+
+  def stdout = new ByteArrayOutputStream()
+  def stderr = new ByteArrayOutputStream()
+
+  def coreFile = file(jsfile)
+  def msg = ""
+  msg = "Generating ${jsfile}"
+  println(msg)
+  logOutFile.createNewFile()
+  logOutFile.append(msg+"\n")
+
+  def coreTop = file(prefixFile)
+  def coreBottom = file(suffixFile)
+  coreFile.getParentFile().mkdirs()
+  coreFile.createNewFile()
+  coreFile.write( coreTop.text )
+  list.each {
+    f ->
+    if (f.exists()) {
+      def t = f.text
+      t.replaceAll("Clazz\\.","Clazz_")
+      t.replaceAll("Class__","Clazz._")
+      coreFile.append( t )
+    } else {
+      msg = "...file '"+f.getPath()+"' does not exist, skipping"
+      println(msg)
+      logOutFile.append(msg+"\n")
+    }
+  }
+  coreFile.append( coreBottom.text )
+
+  msg = "Generating ${zjsfile}"
+  println(msg)
+  logOutFile.append(msg+"\n")
+  def logOutFOS = new FileOutputStream(logOutFile, true) // true == append
+  def logErrFOS = logOutFOS
+
+  javaexec {
+    classpath = files(["${jalviewDir}/tools/closure_compiler.jar"])
+    args = [ "--js", jsfile, "--js_output_file", zjsfile ]
+
+    msg = "\nRunning '"+commandLine.join(' ')+"'\n"
+    println(msg)
+    logOutFile.append(msg+"\n")
+
+    if (logOutConsole) {
+      standardOutput = new org.apache.tools.ant.util.TeeOutputStream(
+        new org.apache.tools.ant.util.TeeOutputStream(
+          logOutFOS,
+          stdout),
+        standardOutput)
+        errorOutput = new org.apache.tools.ant.util.TeeOutputStream(
+          new org.apache.tools.ant.util.TeeOutputStream(
+            logErrFOS,
+            stderr),
+          errorOutput)
+    } else {
+      standardOutput = new org.apache.tools.ant.util.TeeOutputStream(
+        logOutFOS,
+        stdout)
+        errorOutput = new org.apache.tools.ant.util.TeeOutputStream(
+          logErrFOS,
+          stderr)
+    }
+  }
+  msg = "--"
+  println(msg)
+  logOutFile.append(msg+"\n")
+}
+
+
+def jalviewjsJalviewTemplateName = "JalviewJS"
+def jalviewjsJalviewCoreName = "_jalview"
+task jalviewjsNoTranspileBuildAllCores {
+  dependsOn jalviewjsSitePath
+  dependsOn jalviewjsTransferUnzipSwingJs
+
+  def j2sDir = "${jalviewDir}/${jalviewjsTransferSiteJsDir}/${jalviewjs_j2s_subdir}"
+  def jsDir = "${jalviewDir}/${jalviewjsTransferSiteSwingJsDir}/${jalviewjs_js_subdir}"
+  def outputDir = "${jalviewDir}/${jalviewjsTransferSiteCoreDir}/${jalviewjs_j2s_subdir}/core"
+  def prefixFile = "${jsDir}/core/coretop2.js"
+  def suffixFile = "${jsDir}/core/corebottom2.js"
+
+  inputs.file prefixFile
+  inputs.file suffixFile
+
+  def classlistFiles = []
+  // add the classlists found int the jalviewjs_classlists_dir
+  fileTree(dir: "${jalviewDir}/${jalviewjs_classlists_dir}", include: "*.txt").each {
+    file ->
+    def name = file.getName() - ".txt"
+    classlistFiles += [
+      'file': file,
+      'name': name
+    ]
+  }
+
+  // _jmol and _jalview cores. Add any other peculiar classlist.txt files here
+  classlistFiles += [ 'file': file("${jalviewDir}/${jalviewjs_classlist_jmol}"), 'name': "_jvjmol" ]
+  classlistFiles += [ 'file': file("${jalviewDir}/${jalviewjs_classlist_jalview}"), 'name': jalviewjsJalviewCoreName ]
+
+  def classlists = []
+
+  classlistFiles.each {
+    hash ->
+
+    def file = hash['file']
+    if (! file.exists()) {
+      println("...classlist file '"+file.getPath()+"' does not exist, skipping")
+      return false // this is a "continue" in groovy .each closure
+    }
+    def name = hash['name']
+    if (name == null) {
+      name = file.getName() - ".txt"
+    }
+
+    def filelist = []
+    file.eachLine {
+      line ->
+        filelist += line
+    }
+    def list = fileTree(dir: j2sDir, includes: filelist)
+
+    def jsfile = "${outputDir}/core${name}.js"
+    def zjsfile = "${outputDir}/core${name}.z.js"
+
+    classlists += [
+    'jsfile': jsfile,
+    'zjsfile': zjsfile,
+    'list': list
+    ]
+
+    inputs.file(file)
+    inputs.files(list)
+    outputs.file(jsfile)
+    outputs.file(zjsfile)
+  }
+  
+  // _stevesoft core. add any cores without a classlist here (and the inputs and outputs)
+  def stevesoftClasslist = [
+    'jsfile': "${outputDir}/core_stevesoft.js",
+    'zjsfile': "${outputDir}/core_stevesoft.z.js",
+    'list': fileTree(dir: j2sDir, include: "com/stevesoft/pat/**/*.js")
+  ]
+  classlists += stevesoftClasslist
+  inputs.files(stevesoftClasslist['list'])
+  outputs.file(stevesoftClasslist['jsfile'])
+  outputs.file(stevesoftClasslist['zjsfile'])
+
+  doFirst {
+    def logOutFile = file("${jalviewDirAbsolutePath}/${jalviewjsBuildDir}/${jalviewjs_j2s_closure_stdout}")
+    logOutFile.getParentFile().mkdirs()
+    logOutFile.createNewFile()
+    logOutFile.write(getDate("yyyy-MM-dd HH:mm:ss")+" jalviewjsNoTranspileBuildAllCores\n----\n")
+
+    classlists.each {
+      jalviewjsCallCore(it.list, prefixFile, suffixFile, it.jsfile, it.zjsfile, logOutFile, jalviewjs_j2s_to_console.equals("true"))
+    }
+  }
+
+}
+
+
+jalviewjsNoTranspileBuildAllCores.mustRunAfter jalviewjsTranspile
+
+
+task jalviewjsBuildAllCores {
+  group "JalviewJS"
+  description "Build the core js lib closures listed in the classlists dir"
+  dependsOn jalviewjsTranspile
+  dependsOn jalviewjsNoTranspileBuildAllCores
+}
+
+
+def jalviewjsJalviewCoreHtmlFile
+task jalviewjsPublishCoreTemplate(type: Sync) {
+  dependsOn jalviewjsSitePath
+  dependsOn jalviewjsBuildAllCores
+
+  def inputFile = file("${jalviewDir}/${j2s_template_html}")
+  def outputDir = "${jalviewDir}/${jalviewjsTransferSiteCoreDir}"
+
+  from inputFile
+  into outputDir
+  def outputFiles = []
+  jalviewjsJalviewCoreHtmlFile = "${jalviewjsJalviewTemplateName}_${jalviewjsJalviewCoreName}.html"
+  rename { filename ->
+    outputFiles += "${outputDir}/${filename}"
+    if (filename.equals(inputFile.getName())) {
+      return jalviewjsJalviewCoreHtmlFile 
+    }
+    return null
+  }
+  filter(ReplaceTokens, beginToken: '_', endToken: '_', tokens: ['MAIN': '"'+mainClass+'"', 'CODE': "null", 'NAME': jalviewjsJalviewTemplateName])
+  filter(ReplaceTokens, beginToken: '', endToken: '', tokens: ['NONE': jalviewjsJalviewCoreName])
+  preserve {
+    include "**"
+  }
+  outputs.files outputFiles
+  inputs.files inputFile
+}
+
+
+task jalviewjsNoTranspileSyncCore (type: Sync) {
+  dependsOn jalviewjsSitePath
+  dependsOn jalviewjsNoTranspileBuildAllCores
+  dependsOn jalviewjsPublishCoreTemplate
+  def inputFiles = fileTree(dir: "${jalviewDir}/${jalviewjsTransferSiteCoreDir}")
+  def outputDir = "${jalviewDir}/${jalviewjsSiteDir}"
+
+  from inputFiles
+  into outputDir
+  def outputFiles = []
+  rename { filename ->
+    outputFiles += "${outputDir}/${filename}"
+    null
+  }
+  preserve {
+    include "**"
+  }
+  outputs.files outputFiles
+  inputs.files inputFiles
 }
 
-// this Copy version of TransferSite will delete anything else in the target dir
-task jalviewjsCopyTransferSite(type: Copy) {
+
+task jalviewjsSyncCore (type: Sync) {
+  dependsOn jalviewjsTranspile
+  dependsOn jalviewjsNoTranspileSyncCore
+  dependsOn "jalviewjsBuildAllCores"
+}
+
+
+// this Copy version of TransferSiteJs will delete anything else in the target dir
+task jalviewjsCopyTransferSiteJs(type: Copy) {
   dependsOn jalviewjsTranspile
-  from "${jalviewDir}/${jalviewjsTransferSiteJSDir}"
+  from "${jalviewDir}/${jalviewjsTransferSiteJsDir}"
   into "${jalviewDir}/${jalviewjsSiteDir}"
 }
 
+
 // this Sync version of TransferSite is used by buildship to keep the website automatically up to date when a file changes
-task jalviewjsSyncTransferSite(type: Sync) {
-  from "${jalviewDir}/${jalviewjsTransferSiteJSDir}"
+task jalviewjsNoTranspileSyncTransferSiteJs(type: Sync) {
+  from "${jalviewDir}/${jalviewjsTransferSiteJsDir}"
   include "**/*.*"
   into "${jalviewDir}/${jalviewjsSiteDir}"
   preserve {
@@ -1695,39 +1986,56 @@ task jalviewjsSyncTransferSite(type: Sync) {
   }
 }
 
-jalviewjsSyncLib.mustRunAfter jalviewjsCopyTransferSite
-jalviewjsSyncResources.mustRunAfter jalviewjsCopyTransferSite
-jalviewjsSyncSiteResources.mustRunAfter jalviewjsCopyTransferSite
-jalviewjsSyncBuildProperties.mustRunAfter jalviewjsCopyTransferSite
+jalviewjsSyncAllLibs.mustRunAfter jalviewjsCopyTransferSiteJs
+jalviewjsSyncResources.mustRunAfter jalviewjsCopyTransferSiteJs
+jalviewjsSyncSiteResources.mustRunAfter jalviewjsCopyTransferSiteJs
+jalviewjsSyncBuildProperties.mustRunAfter jalviewjsCopyTransferSiteJs
+
+jalviewjsSyncAllLibs.mustRunAfter jalviewjsNoTranspileSyncTransferSiteJs
+jalviewjsSyncResources.mustRunAfter jalviewjsNoTranspileSyncTransferSiteJs
+jalviewjsSyncSiteResources.mustRunAfter jalviewjsNoTranspileSyncTransferSiteJs
+jalviewjsSyncBuildProperties.mustRunAfter jalviewjsNoTranspileSyncTransferSiteJs
+
+
+task jalviewjsNoTranspilePrepareSite {
+  dependsOn jalviewjsSyncAllLibs
+  dependsOn jalviewjsSyncResources
+  dependsOn jalviewjsSyncSiteResources
+  dependsOn jalviewjsSyncBuildProperties
+  dependsOn jalviewjsNoTranspileSyncCore
+}
 
-jalviewjsSyncLib.mustRunAfter jalviewjsSyncTransferSite
-jalviewjsSyncResources.mustRunAfter jalviewjsSyncTransferSite
-jalviewjsSyncSiteResources.mustRunAfter jalviewjsSyncTransferSite
-jalviewjsSyncBuildProperties.mustRunAfter jalviewjsSyncTransferSite
 
 task jalviewjsPrepareSite {
   group "JalviewJS"
   description "Prepares the website folder including unzipping files and copying resources"
-  dependsOn jalviewjsSyncLib
+  dependsOn jalviewjsSyncAllLibs
   dependsOn jalviewjsSyncResources
   dependsOn jalviewjsSyncSiteResources
   dependsOn jalviewjsSyncBuildProperties
+  dependsOn jalviewjsSyncCore
 }
 
+
 task jalviewjsBuildSite {
   group "JalviewJS"
   description "Builds the whole website including transpiled code"
-  dependsOn jalviewjsCopyTransferSite
+  dependsOn jalviewjsCopyTransferSiteJs
   dependsOn jalviewjsPrepareSite
 }
 
+
 task cleanJalviewjsSite {
   doFirst {
-    delete "${jalviewDir}/${jalviewjsTransferSiteJSDir}"
+    delete "${jalviewDir}/${jalviewjsTransferSiteJsDir}"
+    delete "${jalviewDir}/${jalviewjsTransferSiteLibDir}"
+    delete "${jalviewDir}/${jalviewjsTransferSiteSwingJsDir}"
+    delete "${jalviewDir}/${jalviewjsTransferSiteCoreDir}"
     delete "${jalviewDir}/${jalviewjsSiteDir}"
   }
 }
 
+
 task jalviewjsSiteTar(type: Tar) {
   group "JalviewJS"
   description "Creates a tar.gz file for the website"
@@ -1747,6 +2055,7 @@ task jalviewjsSiteTar(type: Tar) {
   inputs.dir("${jalviewDir}/${jalviewjsSiteDir}")
 }
 
+
 task jalviewjsServer {
   group "JalviewJS"
   def filename = "jalviewjsTest.html"
@@ -1760,19 +2069,23 @@ task jalviewjsServer {
     def start = port
     def running = false
     def url
+    def urlcore
     while(port < start+1000 && !running) {
       try {
         def doc_root = new File("${jalviewDirAbsolutePath}/${jalviewjsSiteDir}")
         def jalviewjsServer = factory.start(doc_root, port)
         running = true
         url = jalviewjsServer.getResourceUrl(jalviewjs_server_resource)
+        urlcore = jalviewjsServer.getResourceUrl(jalviewjsJalviewCoreHtmlFile)
         println("SERVER STARTED with document root ${doc_root}.")
         println("Go to "+url+" . Run  gradle --stop  to stop (kills all gradle daemons).")
         println("For debug: "+url+"?j2sdebug")
+        println("For core: "+urlcore)
 
         file(htmlFile).text = """
-        <p><a href="${url}">Jalview JS Test. &lt;${url}&gt;</a></p>
-        <p><a href="${url}?j2sdebug">Jalview JS Test with debug. &lt;${url}?j2sdebug&lt;</a></p>
+        <p><a href="${url}">JalviewJS Test. &lt;${url}&gt;</a></p>
+        <p><a href="${url}?j2sdebug">JalviewJS Test with debug. &lt;${url}?j2sdebug&lt;</a></p>
+        <p><a href="${urlcore}">${jalviewjsJalviewTemplateName} Core Test. &lt;${urlcore}&gt;</a></p>
         """
 
       } catch (Exception e) {
@@ -1786,6 +2099,7 @@ task jalviewjsServer {
   outputs.upToDateWhen({false})
 }
 
+
 task cleanJalviewjsAll {
   group "JalviewJS"
   description "Delete all configuration and build artifacts to do with JalviewJS build"
@@ -1804,51 +2118,72 @@ task cleanJalviewjsAll {
   outputs.upToDateWhen( { false } )
 }
 
-task jalviewjs {
-  group "JalviewJS"
-  description "Build the site"
-  dependsOn jalviewjsBuildSite
-}
 
 
-task jalviewjsIDE_CopyTransferSite(type: Copy) {
-  from "${jalviewDir}/${jalviewjsTransferSiteJSDir}"
+task jalviewjsIDE_CopyTransferSiteJs(type: Copy) {
+  from "${jalviewDir}/${jalviewjsTransferSiteJsDir}"
   into "${jalviewDir}/${jalviewjsSiteDir}"
 }
 
-task jalviewjsIDE_j2s {
+
+task jalviewjsIDE_j2sFile {
   group "00 JalviewJS in Eclipse"
   description "Creates the .j2s file"
   dependsOn jalviewjsCreateJ2sSettings
 }
 
+
+task jalviewjsIDE_BuildAllCores {
+  group "00 JalviewJS in Eclipse"
+  description "Build the core js lib closures listed in the classlists dir"
+  dependsOn jalviewjsNoTranspileBuildAllCores
+}
+
+
 task jalviewjsIDE_AssembleSite {
   group "00 JalviewJS in Eclipse"
   description "Assembles the Eclipse transpiled site and unzips supporting zipfiles"
-  dependsOn jalviewjsIDE_CopyTransferSite
-  dependsOn jalviewjsPrepareSite
+  dependsOn jalviewjsIDE_CopyTransferSiteJs
+  dependsOn jalviewjsNoTranspilePrepareSite
 }
 
+
 task jalviewjsIDE_SiteClean {
   group "00 JalviewJS in Eclipse"
   description "Deletes the Eclipse transpiled site"
   dependsOn cleanJalviewjsSite
 }
 
+
 task jalviewjsIDE_Server {
   group "00 JalviewJS in Eclipse"
   description "Starts a webserver on localhost to test the website"
   dependsOn jalviewjsServer
 }
 
+
 // buildship runs this at import
 task eclipseSynchronizationTask {
   dependsOn eclipseSetup
-  dependsOn jalviewjsIDE_j2s
+  dependsOn jalviewjsIDE_j2sFile
 }
 
+
 // buildship runs this at build time
 task eclipseAutoBuildTask {
-  dependsOn jalviewjsSyncTransferSite
-  dependsOn jalviewjsPrepareSite
+  dependsOn jalviewjsNoTranspileSyncTransferSiteJs
+  dependsOn jalviewjsNoTranspilePrepareSite
+}
+
+
+
+
+
+
+
+
+task jalviewjs {
+  group "JalviewJS"
+  description "Build the site"
+  dependsOn jalviewjsBuildSite
 }
index fe03c9c..710e942 100644 (file)
@@ -3,6 +3,8 @@ jalviewDir = .
 #JAVA_VERSION = 1.8
 JAVA_VERSION = 11
 
+ECLIPSE_IDE_DEVELOPER = false
+
 sourceDir = src
 #sourceDir = utils/jalviewjs/test/src
 
@@ -155,13 +157,19 @@ jalviewjs_swingjs_zip = swingjs/SwingJS-site.zip
 jalviewjs_j2s_plugin = swingjs/net.sf.j2s.core.jar
 jalviewjs_libjs_dir = utils/jalviewjs/libjs
 jalviewjs_site_resource_dir = utils/jalviewjs/site-resources
+jalviewjs_classlists_dir = utils/jalviewjs/classlists
+jalviewjs_classlist_jmol = utils/jalviewjs/_j2sclasslist_jmol.txt
+jalviewjs_classlist_jalview = utils/jalviewjs/_j2sclasslist.txt
 jalviewjs_j2s_settings = .j2s
 #jalviewjs_eclipse_workspace = ~/tmp/eclipse-workspace
 # these 3 files/dirs found in build/jalviewjs
 jalviewjs_eclipse_tmp_dropins_dir = eclipse_dropins
 jalviewjs_eclipse_workspace_location_file = eclipse_workspace_location
 jalviewjs_site_dir = site
+# these dirs are subdirs of the site dir
+jalviewjs_swingjs_subdir = swingjs
 jalviewjs_j2s_subdir = swingjs/j2s
+jalviewjs_js_subdir = swingjs/js
 #jalviewjs_eclipseBuildArg = build
 jalviewjs_eclipse_build_arg = cleanBuild
 jalviewjs_server_port = 9001
@@ -182,6 +190,7 @@ j2s.excluded.paths = test;testng;util
 #a semicolon-separated list of package (foo.) or class (foo.bar) replacements to be made 
 j2s.class.replacements = org.apache.log4j.->jalview.javascript.log4j.
 j2s.template.html = utils/jalviewjs/template.html
+j2s_template_html = utils/jalviewjs/template.html
 #output file name for logging methods declared - delete the file to regenerate a listing 
 #j2s.prop.j2s.log.methods.declared=swingjs/methodsDeclared_csv
 #output file name for logging methods called - delete the file to regenerate a listing
@@ -191,9 +200,10 @@ j2s.template.html = utils/jalviewjs/template.html
 #output will be comma-separated: called method,caller class 
 #j2s.prop.j2s.log.all.calls=true
 
-jalviewjs_j2s_stdout = j2s-transpile.out
+jalviewjs_j2s_transpile_stdout = j2s-transpile.out
 #jalviewjs_j2s_stderr = j2s-transpile.err # all going into out
 jalviewjs_j2s_to_console = true
+jalviewjs_j2s_closure_stdout = j2s-closure.out
 
 
 testp=gradle.properties
index e35111e..425e51f 100644 (file)
-java/applet/Applet.js
+jalview/analysis/AAFrequency.js
+jalview/analysis/AlignSeq.js
+jalview/analysis/AlignmentAnnotationUtils.js
+jalview/analysis/AlignmentUtils.js
+jalview/analysis/AlignmentSorter.js
+jalview/analysis/AnnotationSorter.js
+jalview/analysis/Conservation.js
+jalview/analysis/CrossRef.js
+jalview/analysis/NJTree.js
+jalview/analysis/SeqsetUtils.js
+jalview/analysis/SequenceIdMatcher.js
+jalview/analysis/TreeBuilder.js
+jalview/analysis/TreeModel.js
+jalview/analysis/scoremodels/DistanceScoreModel.js
+jalview/analysis/scoremodels/FeatureDistanceModel.js
+jalview/analysis/scoremodels/PIDModel.js
+jalview/analysis/scoremodels/ScoreMatrix.js
+jalview/analysis/scoremodels/ScoreModels.js
+jalview/analysis/scoremodels/SimilarityParams.js
+jalview/analysis/scoremodels/SimilarityScoreModel.js
+jalview/api/AlignCalcManagerI.js
+jalview/api/AlignCalcWorkerI.js
+jalview/api/AlignViewControllerGuiI.js
+jalview/api/AlignViewControllerI.js
+jalview/api/AlignFrameI.js
+jalview/api/AlignViewportI.js
+jalview/api/AlignmentViewPanel.js
+jalview/api/BuildDetailsI.js
+jalview/api/FeatureColourI.js
+jalview/api/FeatureRenderer.js
+jalview/api/FeaturesDisplayedI.js
+jalview/api/JalviewApp.js
+jalview/api/OOMHandlerI.js
+jalview/api/SequenceRenderer.js
+jalview/api/StructureSelectionManagerProvider.js
+jalview/api/ViewStyleI.js
+jalview/api/analysis/PairwiseScoreModelI.js
+jalview/api/analysis/ScoreModelI.js
+jalview/api/analysis/SimilarityParamsI.js
+jalview/bin/AppletParams.js
+jalview/bin/ApplicationSingletonProvider.js
+jalview/bin/ArgsParser.js
+jalview/bin/BuildDetails.js
+jalview/bin/Cache.js
+jalview/bin/Jalview.js
+jalview/bin/JalviewAppLoader.js
+jalview/commands/CommandI.js
+jalview/commands/OrderCommand.js
+jalview/controller/AlignViewController.js
+jalview/datamodel/ASequence.js
+jalview/datamodel/ASequenceI.js
+jalview/datamodel/Alignment.js
+jalview/datamodel/AlignmentAnnotation.js
+jalview/datamodel/AlignmentI.js
+jalview/datamodel/AlignmentView.js
+jalview/datamodel/AnnotatedCollectionI.js
+jalview/datamodel/Annotation.js
+jalview/datamodel/BinaryNode.js
+jalview/datamodel/CigarArray.js
+jalview/datamodel/CigarBase.js
+jalview/datamodel/CigarSimple.js
+jalview/datamodel/ColumnSelection.js
+jalview/datamodel/ContiguousI.js
+jalview/datamodel/DBRefSource.js
+jalview/datamodel/HiddenColumns.js
+jalview/datamodel/HiddenColumnsCursor.js
+jalview/datamodel/HiddenCursorPosition.js
+jalview/datamodel/HiddenSequences.js
+jalview/datamodel/PDBEntry.js
+jalview/datamodel/Profile.js
+jalview/datamodel/ProfileI.js
+jalview/datamodel/Profiles.js
+jalview/datamodel/ProfilesI.js
+jalview/datamodel/Range.js
+jalview/datamodel/RangeIterator.js
+jalview/datamodel/ResidueCount.js
+jalview/datamodel/SearchResults.js
+jalview/datamodel/SearchResultsI.js
+jalview/datamodel/SeqCigar.js
+jalview/datamodel/Sequence.js
+jalview/datamodel/SequenceCollectionI.js
+jalview/datamodel/SequenceCursor.js
+jalview/datamodel/SequenceFeature.js
+jalview/datamodel/SequenceGroup.js
+jalview/datamodel/SequenceI.js
+jalview/datamodel/SequenceNode.js
+jalview/datamodel/features/FeatureLocationI.js
+jalview/datamodel/features/FeatureMatcher.js
+jalview/datamodel/features/FeatureMatcherI.js
+jalview/datamodel/features/FeatureMatcherSet.js
+jalview/datamodel/features/FeatureMatcherSetI.js
+jalview/datamodel/features/FeatureStore.js
+jalview/datamodel/features/FeatureStoreI.js
+jalview/datamodel/features/FeatureStoreJS.js
+
+jalview/datamodel/features/SequenceFeatures.js
+jalview/datamodel/features/SequenceFeaturesI.js
+jalview/gui/AlignFrame.js
+jalview/gui/AlignViewport.js
+jalview/gui/AlignmentPanel.js
+jalview/gui/AnnotationLabels.js
+jalview/gui/AnnotationPanel.js
+jalview/gui/CalculationChooser.js
+jalview/gui/ColourMenuHelper.js
+jalview/gui/ComboBoxTooltipRenderer.js
+jalview/gui/Desktop.js
+jalview/gui/FeatureRenderer.js
+jalview/gui/IProgressIndicator.js
+jalview/gui/IdCanvas.js
+jalview/gui/IdPanel.js
+jalview/gui/IdwidthAdjuster.js
+jalview/gui/JalviewChangeSupport.js
+jalview/gui/JvSwingUtils.js
+jalview/gui/PaintRefresher.js
+jalview/gui/PopupMenu.js
+jalview/gui/Preferences.js
+jalview/gui/ProgressBar.js
+jalview/gui/ScalePanel.js
+jalview/gui/SeqCanvas.js
+jalview/gui/SeqPanel.js
+jalview/gui/SequenceRenderer.js
+jalview/gui/TreeCanvas.js
+jalview/gui/TreePanel.js
+jalview/gui/ViewSelectionMenu.js
+jalview/io/AlignFile.js
+jalview/io/AlignmentFileReaderI.js
+jalview/io/AlignmentFileWriterI.js
+jalview/io/AppletFormatAdapter.js
+jalview/io/DataSourceType.js
+jalview/io/FileFormat.js
+jalview/io/FileFormatI.js
+jalview/io/FileFormats.js
+jalview/io/FileLoader.js
+jalview/io/FileParse.js
+jalview/io/IdentifyFile.js
+jalview/io/NewickFile.js
+jalview/io/PIRFile.js
+jalview/io/ScoreMatrixFile.js
+jalview/io/SequenceAnnotationReport.js
+jalview/javascript/JalviewLiteJSApi.js
+jalview/javascript/log4j/ConsoleAppender.js
+jalview/javascript/log4j/Layout.js
+jalview/javascript/log4j/Level.js
+jalview/javascript/log4j/Logger.js
+jalview/javascript/log4j/Priority.js
+jalview/javascript/log4j/SimpleLayout.js
+jalview/javascript/log4j/spi/OptionHandler.js
+jalview/jbgui/GAlignFrame.js
+jalview/jbgui/GAlignmentPanel.js
+jalview/jbgui/GDesktop.js
+jalview/jbgui/GPreferences.js
+jalview/jbgui/GTreePanel.js
+jalview/math/Matrix.js
+jalview/math/MatrixI.js
+jalview/project/Jalview2XML.js
+jalview/renderer/AnnotationRenderer.js
+jalview/renderer/AwtRenderPanelI.js
+jalview/renderer/ResidueColourFinder.js
+jalview/renderer/ResidueShader.js
+jalview/renderer/ResidueShaderI.js
+jalview/renderer/ScaleRenderer.js
+jalview/renderer/seqfeatures/FeatureRenderer.js
+jalview/schemes/Blosum62ColourScheme.js
+jalview/schemes/BuriedColourScheme.js
+jalview/schemes/ClustalxColourScheme.js
+jalview/schemes/ColourSchemeI.js
+jalview/schemes/ColourSchemeProperty.js
+jalview/schemes/ColourSchemes.js
+jalview/schemes/ColourSchemeLoader.js
+jalview/schemes/UserColourScheme.js
+jalview/schemes/Consensus.js
+jalview/schemes/FeatureColour.js
+jalview/schemes/HelixColourScheme.js
+jalview/schemes/HydrophobicColourScheme.js
+jalview/schemes/JalviewColourScheme.js
+jalview/schemes/NucleotideColourScheme.js
+jalview/schemes/PIDColourScheme.js
+jalview/schemes/PurinePyrimidineColourScheme.js
+jalview/schemes/RNAHelicesColour.js
+jalview/schemes/ResidueColourScheme.js
+jalview/schemes/ResidueProperties.js
+jalview/schemes/ScoreColourScheme.js
+jalview/schemes/StrandColourScheme.js
+jalview/schemes/TCoffeeColourScheme.js
+jalview/schemes/TaylorColourScheme.js
+jalview/schemes/TurnColourScheme.js
+jalview/schemes/UserColourScheme.js
+jalview/schemes/ZappoColourScheme.js
+jalview/structure/CommandListener.js
+jalview/structure/SelectionListener.js
+jalview/structure/SelectionSource.js
+jalview/structure/SequenceListener.js
+jalview/structure/StructureImportSettings.js
+jalview/structure/StructureSelectionManager.js
+jalview/structure/VamsasSource.js
+jalview/urls/CustomUrlProvider.js
+jalview/urls/IdOrgSettings.js
+jalview/urls/IdentifiersUrlProvider.js
+jalview/urls/UrlLinkDisplay.js
+jalview/urls/UrlLinkTableModel.js
+jalview/urls/UrlProvider.js
+jalview/urls/UrlProviderImpl.js
+jalview/urls/api/UrlProviderFactoryI.js
+jalview/urls/api/UrlProviderI.js
+jalview/urls/desktop/DesktopUrlProviderFactory.js
+jalview/util/ColorUtils.js
+jalview/util/Comparison.js
+jalview/util/DBRefUtils.js
+jalview/util/Format.js
+jalview/util/MessageManager.js
+jalview/util/Platform.js
+jalview/util/QuickSort.js
+jalview/util/StringUtils.js
+jalview/util/UrlLink.js
+jalview/util/jarInputStreamProvider.js
+jalview/util/matcher/Condition.js
+jalview/util/matcher/Matcher.js
+jalview/util/matcher/MatcherI.js
+jalview/viewmodel/AlignmentViewport.js
+jalview/viewmodel/ViewportListenerI.js
+jalview/viewmodel/ViewportProperties.js
+jalview/viewmodel/ViewportRanges.js
+jalview/viewmodel/seqfeatures/FeatureRendererModel.js
+jalview/viewmodel/seqfeatures/FeatureRendererSettings.js
+jalview/viewmodel/seqfeatures/FeaturesDisplayed.js
+jalview/viewmodel/styles/ViewStyle.js
+jalview/workers/AlignCalcManager.js
+jalview/workers/AlignCalcWorker.js
+jalview/workers/ConsensusThread.js
+jalview/workers/ConservationThread.js
+jalview/ws/sifts/SiftsSettings.js
+jalview/xml/binding/jalview/Annotation.js
+jalview/xml/binding/jalview/AnnotationElement.js
+jalview/xml/binding/jalview/Feature.js
+jalview/xml/binding/jalview/FeatureMatcher.js
+jalview/xml/binding/jalview/FeatureMatcherSet.js
+jalview/xml/binding/jalview/FilterBy.js
+jalview/xml/binding/jalview/JalviewModel.js
+jalview/xml/binding/jalview/NoValueColour.js
+jalview/xml/binding/jalview/Pdbentry.js
+jalview/xml/binding/jalview/Sequence.js
+jalview/xml/binding/jalview/SequenceSet.js
+jalview/xml/binding/jalview/SequenceType.js
+jalview/xml/binding/jalview/VAMSAS.js
+jalview/xml/binding/jalview/WebServiceParameterSet.js
 java/applet/AppletContext.js
 java/applet/AppletStub.js
 java/applet/JSApplet.js
-java/awt/ActiveEvent.js
-java/awt/Adjustable.js
 java/awt/AWTEvent.js
 java/awt/AWTEventMulticaster.js
 java/awt/AWTKeyStroke.js
+java/awt/ActiveEvent.js
+java/awt/Adjustable.js
+java/awt/AlphaComposite.js
 java/awt/BasicStroke.js
 java/awt/BorderLayout.js
-java/awt/Button.js
 java/awt/Color.js
-java/awt/color/ColorSpace.js
 java/awt/Component.js
 java/awt/ComponentOrientation.js
-java/awt/ContainerOrderFocusTraversalPolicy.js
+java/awt/Composite.js
 java/awt/Container.js
+java/awt/ContainerOrderFocusTraversalPolicy.js
 java/awt/Cursor.js
 java/awt/DefaultFocusTraversalPolicy.js
 java/awt/DefaultKeyboardFocusManager.js
 java/awt/Dialog.js
 java/awt/Dimension.js
+java/awt/EventDispatchThread.js
+java/awt/EventFilter.js
+java/awt/EventQueue.js
+java/awt/EventQueueItem.js
+java/awt/FlowLayout.js
+java/awt/FocusTraversalPolicy.js
+java/awt/Font.js
+java/awt/FontMetrics.js
+java/awt/GraphicsCallback.js
+java/awt/GraphicsConfiguration.js
+java/awt/GraphicsDevice.js
+java/awt/GraphicsEnvironment.js
+java/awt/GridLayout.js
+java/awt/Image.js
+java/awt/Insets.js
+java/awt/ItemSelectable.js
+java/awt/JSComponent.js
+java/awt/JSDialog.js
+java/awt/JSFrame.js
+java/awt/JSPanel.js
+java/awt/KeyEventDispatcher.js
+java/awt/KeyEventPostProcessor.js
+java/awt/KeyboardFocusManager.js
+java/awt/LayoutManager.js
+java/awt/LayoutManager2.js
+java/awt/LightweightDispatcher.js
+java/awt/Paint.js
+java/awt/Point.js
+java/awt/Queue.js
+java/awt/Rectangle.js
+java/awt/RenderingHints.js
+java/awt/SentEvent.js
+java/awt/Shape.js
+java/awt/Stroke.js
+java/awt/Toolkit.js
+java/awt/Transparency.js
+java/awt/VKCollection.js
+java/awt/Window.js
+java/awt/color/ColorSpace.js
+java/awt/datatransfer/ClipboardOwner.js
+java/awt/datatransfer/FlavorMap.js
+java/awt/datatransfer/FlavorTable.js
+java/awt/datatransfer/SystemFlavorMap.js
+java/awt/dnd/DropTarget.js
+java/awt/dnd/DropTargetContext.js
+java/awt/dnd/DropTargetListener.js
 java/awt/dnd/peer/DropTargetPeer.js
+java/awt/event/AWTEventListener.js
+java/awt/event/ActionEvent.js
 java/awt/event/ActionListener.js
 java/awt/event/AdjustmentEvent.js
 java/awt/event/AdjustmentListener.js
-java/awt/event/AWTEventListener.js
 java/awt/event/ComponentAdapter.js
 java/awt/event/ComponentEvent.js
 java/awt/event/ComponentListener.js
+java/awt/event/ContainerEvent.js
 java/awt/event/ContainerListener.js
+java/awt/event/FocusAdapter.js
 java/awt/event/FocusEvent.js
 java/awt/event/FocusListener.js
 java/awt/event/HierarchyBoundsListener.js
@@ -39,9 +332,13 @@ java/awt/event/InputMethodListener.js
 java/awt/event/InvocationEvent.js
 java/awt/event/ItemEvent.js
 java/awt/event/ItemListener.js
+java/awt/event/KeyAdapter.js
+java/awt/event/KeyEvent.js
 java/awt/event/KeyListener.js
+java/awt/event/MouseAdapter.js
 java/awt/event/MouseEvent.js
 java/awt/event/MouseListener.js
+java/awt/event/MouseMotionAdapter.js
 java/awt/event/MouseMotionListener.js
 java/awt/event/MouseWheelListener.js
 java/awt/event/TextListener.js
@@ -50,103 +347,124 @@ java/awt/event/WindowEvent.js
 java/awt/event/WindowFocusListener.js
 java/awt/event/WindowListener.js
 java/awt/event/WindowStateListener.js
-java/awt/EventDispatchThread.js
-java/awt/EventFilter.js
-java/awt/EventQueue.js
-java/awt/EventQueueItem.js
-java/awt/FlowLayout.js
-java/awt/FocusTraversalPolicy.js
-java/awt/Font.js
 java/awt/font/FontRenderContext.js
-java/awt/FontMetrics.js
-java/awt/Frame.js
 java/awt/geom/AffineTransform.js
 java/awt/geom/Dimension2D.js
 java/awt/geom/Path2D.js
 java/awt/geom/PathIterator.js
 java/awt/geom/Point2D.js
+java/awt/geom/RectIterator.js
 java/awt/geom/Rectangle2D.js
 java/awt/geom/RectangularShape.js
-java/awt/geom/RectIterator.js
-java/awt/GraphicsCallback.js
-java/awt/GraphicsConfiguration.js
-java/awt/GraphicsDevice.js
-java/awt/GraphicsEnvironment.js
+java/awt/image/BufferedImage.js
+java/awt/image/ColorModel.js
+java/awt/image/DataBuffer.js
+java/awt/image/DataBufferInt.js
+java/awt/image/DirectColorModel.js
 java/awt/image/ImageObserver.js
-java/awt/Insets.js
-java/awt/ItemSelectable.js
-java/awt/JSComponent.js
-java/awt/JSDialog.js
-java/awt/JSFrame.js
-java/awt/JSPanel.js
-java/awt/KeyboardFocusManager.js
-java/awt/KeyEventDispatcher.js
-java/awt/KeyEventPostProcessor.js
-java/awt/Label.js
-java/awt/LayoutManager.js
-java/awt/LayoutManager2.js
-java/awt/LightweightDispatcher.js
-java/awt/Paint.js
-java/awt/Panel.js
+java/awt/image/PackedColorModel.js
+java/awt/image/Raster.js
+java/awt/image/RenderedImage.js
+java/awt/image/SampleModel.js
+java/awt/image/SinglePixelPackedSampleModel.js
+java/awt/image/WritableRaster.js
 java/awt/peer/ComponentPeer.js
 java/awt/peer/ContainerPeer.js
 java/awt/peer/FramePeer.js
 java/awt/peer/KeyboardFocusManagerPeer.js
 java/awt/peer/LightweightPeer.js
 java/awt/peer/WindowPeer.js
-java/awt/Point.js
-java/awt/Queue.js
-java/awt/Rectangle.js
-java/awt/RenderingHints.js
-java/awt/Scrollbar.js
-java/awt/ScrollPane.js
-java/awt/Shape.js
-java/awt/Stroke.js
-java/awt/TextArea.js
-java/awt/TextComponent.js
-java/awt/TextField.js
-java/awt/Toolkit.js
-java/awt/Transparency.js
-java/awt/Window.js
+java/awt/print/Printable.js
 java/beans/ChangeListenerMap.js
 java/beans/PropertyChangeEvent.js
 java/beans/PropertyChangeListener.js
 java/beans/PropertyChangeSupport.js
+java/io/BufferedInputStream.js
+java/io/BufferedReader.js
+java/io/ByteArrayInputStream.js
+java/io/Closeable.js
+java/io/File.js
+java/io/FileDescriptor.js
+java/io/FileInputStream.js
+java/io/FileReader.js
+java/io/FileSystem.js
+java/io/FilterInputStream.js
+java/io/InputStream.js
+java/io/InputStreamReader.js
+java/io/PushbackInputStream.js
+java/io/Reader.js
 java/lang/AbstractStringBuilder.js
+java/lang/AutoCloseable.js
 java/lang/Class.js
 java/lang/Enum.js
 java/lang/Iterable.js
-java/lang/reflect/Constructor.js
-java/lang/reflect/Method.js
+java/lang/Readable.js
+java/lang/Runtime.js
 java/lang/StringBuffer.js
 java/lang/StringBuilder.js
 java/lang/Thread.js
 java/lang/ThreadGroup.js
+java/lang/reflect/Constructor.js
+java/lang/reflect/Method.js
+java/math/BigDecimal.js
+java/math/BigInteger.js
+java/math/MathContext.js
 java/math/RoundingMode.js
+java/net/HttpURLConnection.js
+java/net/MalformedURLException.js
 java/net/URL.js
+java/net/URLConnection.js
+java/net/URLDecoder.js
+java/net/URLStreamHandler.js
 java/net/URLStreamHandlerFactory.js
+java/nio/Bits.js
+java/nio/Buffer.js
+java/nio/ByteBuffer.js
+java/nio/ByteOrder.js
+java/nio/CharBuffer.js
+java/nio/HeapByteBuffer.js
+java/nio/HeapCharBuffer.js
+java/nio/charset/Charset.js
+java/nio/charset/CharsetDecoder.js
+java/nio/charset/CoderResult.js
+java/nio/charset/CodingErrorAction.js
+java/security/AccessControlContext.js
+java/security/AccessController.js
+java/security/PrivilegedAction.js
+java/security/PrivilegedExceptionAction.js
+java/text/AttributedCharacterIterator.js
 java/text/CharacterIterator.js
+java/text/DateFormat.js
+java/text/DateFormatSymbols.js
 java/text/DecimalFormat.js
 java/text/DecimalFormatSymbols.js
 java/text/DigitList.js
 java/text/FieldPosition.js
 java/text/Format.js
+java/text/MessageFormat.js
 java/text/NumberFormat.js
+java/text/SimpleDateFormat.js
 java/util/AbstractCollection.js
 java/util/AbstractList.js
 java/util/AbstractMap.js
+java/util/AbstractQueue.js
 java/util/AbstractSequentialList.js
 java/util/AbstractSet.js
+java/util/ArrayDeque.js
 java/util/ArrayList.js
 java/util/Arrays.js
+java/util/BitSet.js
+java/util/Calendar.js
 java/util/Collection.js
 java/util/Collections.js
 java/util/Comparator.js
 java/util/Deque.js
 java/util/Dictionary.js
+java/util/DualPivotQuicksort.js
 java/util/Enumeration.js
 java/util/EventListener.js
 java/util/EventObject.js
+java/util/GregorianCalendar.js
 java/util/HashMap.js
 java/util/HashSet.js
 java/util/Hashtable.js
@@ -155,26 +473,75 @@ java/util/Iterator.js
 java/util/LinkedHashMap.js
 java/util/LinkedList.js
 java/util/List.js
+java/util/ListIterator.js
 java/util/ListResourceBundle.js
 java/util/Locale.js
 java/util/Map.js
+java/util/NavigableMap.js
+java/util/NavigableSet.js
 java/util/Objects.js
+java/util/Properties.js
+java/util/PropertyResourceBundle.js
 java/util/Queue.js
-java/util/Random.js
 java/util/RandomAccess.js
 java/util/ResourceBundle.js
 java/util/Set.js
+java/util/SortedMap.js
+java/util/SortedSet.js
+java/util/StringTokenizer.js
 java/util/TimSort.js
+java/util/TimeZone.js
+java/util/TreeMap.js
+java/util/TreeSet.js
 java/util/Vector.js
+java/util/concurrent/AbstractExecutorService.js
+java/util/concurrent/BlockingQueue.js
+java/util/concurrent/ConcurrentHashMap.js
+java/util/concurrent/ConcurrentMap.js
+java/util/concurrent/Executor.js
+java/util/concurrent/ExecutorService.js
+java/util/concurrent/Executors.js
+java/util/concurrent/LinkedBlockingQueue.js
+java/util/concurrent/RejectedExecutionHandler.js
+java/util/concurrent/Semaphore.js
+java/util/concurrent/ThreadFactory.js
+java/util/concurrent/ThreadPoolExecutor.js
+java/util/concurrent/TimeUnit.js
+java/util/concurrent/atomic/AtomicBoolean.js
+java/util/concurrent/atomic/AtomicInteger.js
+java/util/concurrent/locks/AbstractOwnableSynchronizer.js
+java/util/concurrent/locks/AbstractQueuedSynchronizer.js
+java/util/concurrent/locks/Condition.js
+java/util/concurrent/locks/Lock.js
+java/util/concurrent/locks/ReadWriteLock.js
+java/util/concurrent/locks/ReentrantLock.js
+java/util/concurrent/locks/ReentrantReadWriteLock.js
+java/util/jar/JarEntry.js
+java/util/jar/JarInputStream.js
+java/util/logging/Level.js
+java/util/logging/Logger.js
+java/util/regex/MatchResult.js
+java/util/regex/Matcher.js
+java/util/regex/Pattern.js
+java/util/zip/CRC32.js
+java/util/zip/Inflater.js
+java/util/zip/InflaterInputStream.js
+java/util/zip/ZipConstants.js
+java/util/zip/ZipEntry.js
+java/util/zip/ZipInputStream.js
+javajs/api/GenericLineReader.js
 javajs/api/JSFunction.js
+javajs/api/JSONEncodable.js
+javajs/util/AU.js
 javajs/util/AjaxURLConnection.js
+javajs/util/AjaxURLStreamHandler.js
 javajs/util/AjaxURLStreamHandlerFactory.js
-javajs/util/AU.js
+javajs/util/Encoding.js
 javajs/util/JSThread.js
 javajs/util/Lst.js
 javajs/util/PT.js
+javajs/util/Rdr.js
 javajs/util/SB.js
-javax/net/ssl/HttpsUrlConnection.js
 javax/swing/AbstractAction.js
 javax/swing/AbstractButton.js
 javax/swing/AbstractListModel.js
@@ -182,13 +549,6 @@ javax/swing/Action.js
 javax/swing/ActionMap.js
 javax/swing/AncestorNotifier.js
 javax/swing/ArrayTable.js
-javax/swing/border/AbstractBorder.js
-javax/swing/border/BevelBorder.js
-javax/swing/border/Border.js
-javax/swing/border/CompoundBorder.js
-javax/swing/border/EmptyBorder.js
-javax/swing/border/EtchedBorder.js
-javax/swing/border/LineBorder.js
 javax/swing/BorderFactory.js
 javax/swing/BoundedRangeModel.js
 javax/swing/BoxLayout.js
@@ -196,24 +556,14 @@ javax/swing/ButtonGroup.js
 javax/swing/ButtonModel.js
 javax/swing/ClientPropertyKey.js
 javax/swing/ComboBoxModel.js
+javax/swing/ComponentInputMap.js
 javax/swing/DefaultBoundedRangeModel.js
 javax/swing/DefaultButtonModel.js
 javax/swing/DefaultComboBoxModel.js
+javax/swing/DefaultDesktopManager.js
+javax/swing/DefaultListCellRenderer.js
 javax/swing/DefaultSingleSelectionModel.js
-javax/swing/DropMode.js
-javax/swing/event/AncestorEvent.js
-javax/swing/event/AncestorListener.js
-javax/swing/event/CaretEvent.js
-javax/swing/event/CaretListener.js
-javax/swing/event/ChangeEvent.js
-javax/swing/event/ChangeListener.js
-javax/swing/event/DocumentEvent.js
-javax/swing/event/DocumentListener.js
-javax/swing/event/EventListenerList.js
-javax/swing/event/ListDataEvent.js
-javax/swing/event/ListDataListener.js
-javax/swing/event/UndoableEditEvent.js
-javax/swing/event/UndoableEditListener.js
+javax/swing/DesktopManager.js
 javax/swing/FocusManager.js
 javax/swing/InternalFrameFocusTraversalPolicy.js
 javax/swing/LayoutComparator.js
@@ -228,7 +578,10 @@ javax/swing/JCheckBox.js
 javax/swing/JCheckBoxMenuItem.js
 javax/swing/JComboBox.js
 javax/swing/JComponent.js
+javax/swing/JDesktopPane.js
+javax/swing/JDialog.js
 javax/swing/JFrame.js
+javax/swing/JInternalFrame.js
 javax/swing/JLabel.js
 javax/swing/JLayeredPane.js
 javax/swing/JMenu.js
@@ -236,124 +589,182 @@ javax/swing/JMenuBar.js
 javax/swing/JMenuItem.js
 javax/swing/JPanel.js
 javax/swing/JPopupMenu.js
+javax/swing/JProgressBar.js
+javax/swing/JRadioButton.js
 javax/swing/JRadioButtonMenuItem.js
 javax/swing/JRootPane.js
 javax/swing/JScrollBar.js
 javax/swing/JScrollPane.js
 javax/swing/JSeparator.js
-javax/swing/JTextArea.js
-javax/swing/JTextField.js
+javax/swing/JTabbedPane.js
 javax/swing/JToggleButton.js
+javax/swing/JToolTip.js
 javax/swing/JViewport.js
-javax/swing/KeyboardManager.js
+javax/swing/JWindow.js
 javax/swing/KeyStroke.js
+javax/swing/KeyboardManager.js
+javax/swing/ListCellRenderer.js
 javax/swing/ListModel.js
 javax/swing/LookAndFeel.js
 javax/swing/MenuElement.js
+javax/swing/MenuSelectionManager.js
 javax/swing/MutableComboBoxModel.js
-javax/swing/plaf/ActionMapUIResource.js
-javax/swing/plaf/basic/BasicBorders.js
-javax/swing/plaf/BorderUIResource.js
-javax/swing/plaf/ColorUIResource.js
-javax/swing/plaf/ComponentUI.js
-javax/swing/plaf/DimensionUIResource.js
-javax/swing/plaf/FontUIResource.js
-javax/swing/plaf/InputMapUIResource.js
-javax/swing/plaf/InsetsUIResource.js
-javax/swing/plaf/UIResource.js
+javax/swing/Popup.js
+javax/swing/PopupFactory.js
 javax/swing/RepaintManager.js
 javax/swing/RootPaneContainer.js
-javax/swing/Scrollable.js
 javax/swing/ScrollPaneConstants.js
 javax/swing/ScrollPaneLayout.js
+javax/swing/Scrollable.js
 javax/swing/SingleSelectionModel.js
 javax/swing/SizeRequirements.js
 javax/swing/SwingConstants.js
 javax/swing/SwingPaintEventDispatcher.js
 javax/swing/SwingUtilities.js
-javax/swing/text/AbstractDocument.js
-javax/swing/text/AttributeSet.js
-javax/swing/text/Caret.js
-javax/swing/text/DefaultCaret.js
-javax/swing/text/DefaultEditorKit.js
-javax/swing/text/Document.js
-javax/swing/text/EditorKit.js
-javax/swing/text/Element.js
-javax/swing/text/GapContent.js
-javax/swing/text/GapVector.js
-javax/swing/text/JTextComponent.js
-javax/swing/text/MutableAttributeSet.js
-javax/swing/text/PlainDocument.js
-javax/swing/text/PlainView.js
-javax/swing/text/Position.js
-javax/swing/text/Segment.js
-javax/swing/text/SegmentCache.js
-javax/swing/text/SimpleAttributeSet.js
-javax/swing/text/Style.js
-javax/swing/text/StyleConstants.js
-javax/swing/text/StyleContext.js
-javax/swing/text/TabExpander.js
-javax/swing/text/TextAction.js
-javax/swing/text/Utilities.js
-javax/swing/text/View.js
-javax/swing/tree/TreeNode.js
+javax/swing/Timer.js
+javax/swing/ToolTipManager.js
 javax/swing/UIDefaults.js
 javax/swing/UIManager.js
-javax/swing/undo/AbstractUndoableEdit.js
-javax/swing/undo/CompoundEdit.js
-javax/swing/undo/UndoableEdit.js
 javax/swing/ViewportLayout.js
 javax/swing/WindowConstants.js
-sun/awt/AppContext.js
+javax/swing/border/AbstractBorder.js
+javax/swing/border/BevelBorder.js
+javax/swing/border/Border.js
+javax/swing/border/CompoundBorder.js
+javax/swing/border/EmptyBorder.js
+javax/swing/border/EtchedBorder.js
+javax/swing/border/LineBorder.js
+javax/swing/border/TitledBorder.js
+javax/swing/event/AncestorEvent.js
+javax/swing/event/AncestorListener.js
+javax/swing/event/ChangeEvent.js
+javax/swing/event/ChangeListener.js
+javax/swing/event/EventListenerList.js
+javax/swing/event/InternalFrameAdapter.js
+javax/swing/event/InternalFrameEvent.js
+javax/swing/event/InternalFrameListener.js
+javax/swing/event/ListDataListener.js
+javax/swing/event/MenuKeyListener.js
+javax/swing/event/MenuListener.js
+javax/swing/event/TableModelListener.js
+javax/swing/plaf/ActionMapUIResource.js
+javax/swing/plaf/BorderUIResource.js
+javax/swing/plaf/ColorUIResource.js
+javax/swing/plaf/ComponentInputMapUIResource.js
+javax/swing/plaf/ComponentUI.js
+javax/swing/plaf/DimensionUIResource.js
+javax/swing/plaf/FontUIResource.js
+javax/swing/plaf/InsetsUIResource.js
+javax/swing/plaf/UIResource.js
+javax/swing/plaf/basic/BasicBorders.js
+javax/swing/table/AbstractTableModel.js
+javax/swing/table/TableModel.js
+javax/xml/bind/ContextFinder.js
+javax/xml/bind/GetPropertyAction.js
+javax/xml/bind/JAXBContext.js
+javax/xml/bind/JAXBContextFactory.js
+javax/xml/bind/JAXBElement.js
+javax/xml/bind/ModuleUtil.js
+javax/xml/bind/ServiceLoaderUtil.js
+javax/xml/bind/Unmarshaller.js
+javax/xml/bind/ValidationEventHandler.js
+javax/xml/bind/annotation/adapters/CollapsedStringAdapter.js
+javax/xml/bind/annotation/adapters/XmlAdapter.js
+javax/xml/bind/helpers/AbstractUnmarshallerImpl.js
+javax/xml/bind/helpers/DefaultValidationEventHandler.js
+javax/xml/datatype/DatatypeFactory.js
+javax/xml/datatype/XMLGregorianCalendar.js
+javax/xml/namespace/QName.js
+javax/xml/stream/XMLInputFactory.js
+javax/xml/stream/XMLStreamReader.js
+org/apache/xerces/jaxp/datatype/DatatypeFactoryImpl.js
+org/apache/xerces/jaxp/datatype/XMLGregorianCalendarImpl.js
+org/json/simple/parser/JSONParser.js
+org/json/simple/parser/ParseException.js
+org/json/simple/parser/Yylex.js
+org/xml/sax/AttributeList.js
+org/xml/sax/Attributes.js
+org/xml/sax/ContentHandler.js
+org/xml/sax/InputSource.js
+org/xml/sax/Parser.js
+org/xml/sax/XMLReader.js
+org/xml/sax/ext/Attributes2.js
 sun/awt/AWTAutoShutdown.js
+sun/awt/AppContext.js
 sun/awt/CausedFocusEvent.js
 sun/awt/ComponentFactory.js
+sun/awt/EventQueueItem.js
 sun/awt/KeyboardFocusManagerPeerProvider.js
 sun/awt/MostRecentKeyValue.js
 sun/awt/MostRecentThreadAppContext.js
 sun/awt/PaintEventDispatcher.js
 sun/awt/PostEventQueue.js
 sun/awt/RequestFocusController.js
+sun/awt/SunGraphicsCallback.js
 sun/awt/SunToolkit.js
 sun/awt/WindowClosingListener.js
 sun/awt/WindowClosingSupport.js
+sun/awt/image/DataStealer.js
+sun/awt/image/IntegerComponentRaster.js
+sun/awt/image/IntegerInterleavedRaster.js
+sun/awt/image/SunWritableRaster.js
 sun/font/FontDesignMetrics.js
+sun/java2d/StateTrackable.js
+sun/java2d/StateTrackableDelegate.js
+sun/nio/cs/ArrayDecoder.js
+sun/nio/cs/HistoricallyNamedCharset.js
+sun/nio/cs/StandardCharsets.js
+sun/nio/cs/ThreadLocalCoders.js
+sun/nio/cs/UTF_8.js
+sun/nio/cs/Unicode.js
 sun/swing/DefaultLookup.js
 sun/swing/SwingLazyValue.js
+sun/swing/UIAction.js
 sun/text/resources/FormatData.js
 sun/text/resources/FormatData_en.js
+sun/util/calendar/AbstractCalendar.js
+sun/util/calendar/BaseCalendar.js
+sun/util/calendar/CalendarDate.js
+sun/util/calendar/CalendarSystem.js
+sun/util/calendar/CalendarUtils.js
+sun/util/calendar/Gregorian.js
+sun/util/calendar/ZoneInfo.js
 sun/util/resources/LocaleData.js
-swingjs/a2s/A2SContainer.js
-swingjs/a2s/A2SEvent.js
-swingjs/a2s/A2SListener.js
-swingjs/a2s/Applet.js
-swingjs/a2s/Button.js
-swingjs/a2s/Label.js
-swingjs/a2s/Panel.js
-swingjs/a2s/Scrollbar.js
-swingjs/a2s/ScrollPane.js
-swingjs/a2s/TextArea.js
-swingjs/a2s/TextField.js
-swingjs/api/Interface.js
-swingjs/api/js/DOMNode.js
-swingjs/api/js/HTML5CanvasContext2D.js
-swingjs/api/js/JSInterface.js
-swingjs/jquery/JQueryUI.js
 swingjs/JSApp.js
 swingjs/JSAppletThread.js
 swingjs/JSAppletViewer.js
+swingjs/JSCharSet.js
+swingjs/JSDummyApplet.js
 swingjs/JSFocusPeer.js
 swingjs/JSFontMetrics.js
 swingjs/JSFrameViewer.js
 swingjs/JSGraphics2D.js
+swingjs/JSGraphicsCompositor.js
 swingjs/JSGraphicsConfiguration.js
 swingjs/JSGraphicsEnvironment.js
+swingjs/JSKeyEvent.js
+swingjs/JSMenuManager.js
 swingjs/JSMouse.js
-swingjs/JSNullComponentPeer.js
 swingjs/JSScreenDevice.js
 swingjs/JSThreadGroup.js
 swingjs/JSToolkit.js
 swingjs/JSUtil.js
+swingjs/a2s/Dialog.js
+swingjs/api/Interface.js
+swingjs/api/js/DOMNode.js
+swingjs/api/js/HTML5CanvasContext2D.js
+swingjs/api/js/JSInterface.js
+swingjs/jquery/JQueryUI.js
+swingjs/jzlib/Adler32.js
+swingjs/jzlib/CRC32.js
+swingjs/jzlib/Checksum.js
+swingjs/jzlib/InfBlocks.js
+swingjs/jzlib/InfCodes.js
+swingjs/jzlib/InfTree.js
+swingjs/jzlib/Inflate.js
+swingjs/jzlib/Inflater.js
+swingjs/jzlib/InflaterInputStream.js
+swingjs/jzlib/ZStream.js
 swingjs/plaf/ButtonListener.js
 swingjs/plaf/DefaultMenuLayout.js
 swingjs/plaf/HTML5LookAndFeel.js
@@ -363,9 +774,12 @@ swingjs/plaf/JSCheckBoxMenuItemUI.js
 swingjs/plaf/JSCheckBoxUI.js
 swingjs/plaf/JSComboBoxUI.js
 swingjs/plaf/JSComponentUI.js
+swingjs/plaf/JSDesktopIconUI.js
+swingjs/plaf/JSDesktopPaneUI.js
 swingjs/plaf/JSEventHandler.js
 swingjs/plaf/JSFrameUI.js
 swingjs/plaf/JSGraphicsUtils.js
+swingjs/plaf/JSInternalFrameUI.js
 swingjs/plaf/JSLabelUI.js
 swingjs/plaf/JSLayeredPaneUI.js
 swingjs/plaf/JSLightweightUI.js
@@ -375,6 +789,8 @@ swingjs/plaf/JSMenuUI.js
 swingjs/plaf/JSPanelUI.js
 swingjs/plaf/JSPopupMenuSeparatorUI.js
 swingjs/plaf/JSPopupMenuUI.js
+swingjs/plaf/JSPopupUI.js
+swingjs/plaf/JSProgressBarUI.js
 swingjs/plaf/JSRadioButtonMenuItemUI.js
 swingjs/plaf/JSRadioButtonUI.js
 swingjs/plaf/JSRootPaneUI.js
@@ -382,14 +798,201 @@ swingjs/plaf/JSScrollBarUI.js
 swingjs/plaf/JSScrollPaneUI.js
 swingjs/plaf/JSSeparatorUI.js
 swingjs/plaf/JSSliderUI.js
-swingjs/plaf/JSTextAreaUI.js
-swingjs/plaf/JSTextFieldUI.js
-swingjs/plaf/JSTextUI.js
-swingjs/plaf/JSTextViewUI.js
+swingjs/plaf/JSTabbedPaneUI.js
+swingjs/plaf/JSToolTipUI.js
 swingjs/plaf/JSViewportUI.js
 swingjs/plaf/JSWindowUI.js
 swingjs/plaf/LazyActionMap.js
 swingjs/plaf/Resizer.js
+swingjs/xml/JSJAXBClass.js
+swingjs/xml/JSJAXBContext.js
+swingjs/xml/JSJAXBContextFactory.js
+swingjs/xml/JSJAXBField.js
+swingjs/xml/JSJAXBUnmarshaller.js
+swingjs/xml/JSSAXAttributes.js
+swingjs/xml/JSSAXParser.js
+swingjs/xml/JSXMLGregorianCalendarImpl.js
+swingjs/xml/JSXMLInputFactory.js
+swingjs/xml/JSXMLStreamReader.js
+intervalstore/api/IntervalI.js
+intervalstore/api/IntervalStoreI.js
+intervalstore/nonc/IntervalStore.js
+jalview/analysis/GeneticCodeI.js
+jalview/analysis/GeneticCodes.js
+jalview/api/FeaturesSourceI.js
+jalview/io/FastaFile.js
+jalview/io/FeaturesFile.js
+jalview/io/FormatAdapter.js
+jalview/schemes/IdColourScheme.js
+jalview/util/LinkedIdentityHashSet.js
+jalview/util/ParseHtmlBodyAndLinks.js
+java/util/function/Function.js
+swingjs/a2s/A2SContainer.js
+
+jalview/fts/api/FTSData.js
+jalview/fts/api/FTSDataColumnI.js
+jalview/fts/api/FTSRestClientI.js
+jalview/fts/core/DecimalFormatTableCellRenderer.js
+jalview/fts/core/FTSDataColumnPreferences.js
+jalview/fts/core/FTSRestClient.js
+jalview/fts/core/FTSRestRequest.js
+jalview/fts/core/FTSRestResponse.js
+jalview/fts/service/pdb/PDBFTSRestClient.js
+jalview/gui/StructureChooser.js
+jalview/javascript/json/JSON.js
+jalview/javascript/web/Client.js
+jalview/javascript/web/ClientResponse.js
+jalview/javascript/web/WebResource.js
+jalview/jbgui/BackupFilesPresetEntry.js
+jalview/jbgui/GStructureChooser.js
+jalview/jbgui/IntKeyStringValueEntry.js
+java/awt/CardLayout.js
+java/awt/TextComponent.js
+java/awt/image/ImageConsumer.js
+java/io/ObjectStreamField.js
+java/net/URI.js
+java/util/ComparableTimSort.js
+java/util/LinkedHashSet.js
+java/util/WeakHashMap.js
+javajs/util/Base64.js
+javax/net/ssl/HttpsURLConnection.js
+javax/swing/CellRendererPane.js
+javax/swing/DefaultListSelectionModel.js
+javax/swing/DefaultRowSorter.js
+javax/swing/DropMode.js
+javax/swing/Icon.js
+javax/swing/ImageIcon.js
+javax/swing/JTable.js
+javax/swing/JTextField.js
+javax/swing/ListSelectionModel.js
+javax/swing/RowSorter.js
+javax/swing/SortOrder.js
+javax/swing/event/CaretEvent.js
+javax/swing/event/CaretListener.js
+javax/swing/event/CellEditorListener.js
+javax/swing/event/DocumentListener.js
+javax/swing/event/ListSelectionEvent.js
+javax/swing/event/ListSelectionListener.js
+javax/swing/event/MouseInputListener.js
+javax/swing/event/RowSorterEvent.js
+javax/swing/event/RowSorterListener.js
+javax/swing/event/SwingPropertyChangeSupport.js
+javax/swing/event/TableColumnModelEvent.js
+javax/swing/event/TableColumnModelListener.js
+javax/swing/event/TableModelEvent.js
+javax/swing/plaf/InputMapUIResource.js
+javax/swing/table/DefaultTableCellRenderer.js
+javax/swing/table/DefaultTableColumnModel.js
+javax/swing/table/DefaultTableModel.js
+javax/swing/table/JTableHeader.js
+javax/swing/table/TableCellRenderer.js
+javax/swing/table/TableColumn.js
+javax/swing/table/TableColumnModel.js
+javax/swing/table/TableRowSorter.js
+javax/swing/text/Caret.js
+javax/swing/text/DefaultCaret.js
+javax/swing/text/DefaultEditorKit.js
+javax/swing/text/Document.js
+javax/swing/text/EditorKit.js
+javax/swing/text/Element.js
+javax/swing/text/JTextComponent.js
+javax/swing/text/Position.js
+javax/swing/text/TextAction.js
+javax/swing/text/View.js
+net/miginfocom/layout/AC.js
+net/miginfocom/layout/AnimSpec.js
+net/miginfocom/layout/BoundSize.js
+net/miginfocom/layout/CC.js
+net/miginfocom/layout/ComponentWrapper.js
+net/miginfocom/layout/ConstraintParser.js
+net/miginfocom/layout/ContainerWrapper.js
+net/miginfocom/layout/DimConstraint.js
+net/miginfocom/layout/Grid.js
+net/miginfocom/layout/LC.js
+net/miginfocom/layout/LayoutUtil.js
+net/miginfocom/layout/LinkHandler.js
+net/miginfocom/layout/PlatformDefaults.js
+net/miginfocom/layout/ResizeConstraint.js
+net/miginfocom/layout/UnitValue.js
+net/miginfocom/swing/MigLayout.js
+net/miginfocom/swing/SwingComponentWrapper.js
+net/miginfocom/swing/SwingContainerWrapper.js
+sun/swing/StringUIClientPropertyKey.js
+sun/swing/SwingUtilities2.js
+sun/swing/UIClientPropertyKey.js
+sun/swing/table/DefaultTableCellHeaderRenderer.js
+swingjs/JSImage.js
+swingjs/JSImagekit.js
+swingjs/json/JSON.js
+swingjs/plaf/BasicHTML.js
+swingjs/plaf/CellHolder.js
+swingjs/plaf/JSTableHeaderUI.js
+swingjs/plaf/JSTableUI.js
+swingjs/plaf/JSTextFieldUI.js
+swingjs/plaf/JSTextUI.js
 swingjs/plaf/TextListener.js
 
+com/stevesoft/pat/Bracket.js
+com/stevesoft/pat/CaseMgr.js
+com/stevesoft/pat/FastMulti.js
+com/stevesoft/pat/NUnicodeAlpha.js
+com/stevesoft/pat/NUnicodeCurrency.js
+com/stevesoft/pat/NUnicodeDigit.js
+com/stevesoft/pat/NUnicodeMath.js
+com/stevesoft/pat/NUnicodePunct.js
+com/stevesoft/pat/NUnicodeW.js
+com/stevesoft/pat/NUnicodeWhite.js
+com/stevesoft/pat/NoPattern.js
+com/stevesoft/pat/Or.js
+com/stevesoft/pat/OrMark.js
+com/stevesoft/pat/Pattern.js
+com/stevesoft/pat/PatternSub.js
+com/stevesoft/pat/Pthings.js
+com/stevesoft/pat/Range.js
+com/stevesoft/pat/RegOpt.js
+com/stevesoft/pat/RegRes.js
+com/stevesoft/pat/Regex.js
+com/stevesoft/pat/Rthings.js
+com/stevesoft/pat/StrPos.js
+com/stevesoft/pat/StringLike.js
+com/stevesoft/pat/SubMark.js
+com/stevesoft/pat/UniValidator.js
+com/stevesoft/pat/UnicodeAlpha.js
+com/stevesoft/pat/UnicodeCurrency.js
+com/stevesoft/pat/UnicodeDigit.js
+com/stevesoft/pat/UnicodeLower.js
+com/stevesoft/pat/UnicodeMath.js
+com/stevesoft/pat/UnicodePunct.js
+com/stevesoft/pat/UnicodeUpper.js
+com/stevesoft/pat/UnicodeW.js
+com/stevesoft/pat/UnicodeWhite.js
+com/stevesoft/pat/Validator.js
+com/stevesoft/pat/oneChar.js
+com/stevesoft/pat/parsePerl.js
+com/stevesoft/pat/patInt.js
+com/stevesoft/pat/wrap/StringWrap.js
+
+jalview/api/DBRefEntryI.js
+jalview/api/SequenceStructureBinding.js
+jalview/api/structures/JalviewStructureDisplayI.js
+jalview/datamodel/DBRefEntry.js
+jalview/datamodel/Mapping.js
+jalview/datamodel/features/FeatureAttributes.js
 
+intervalstore/impl/BinarySearcher.js
+intervalstore/impl/IntervalStore.js
+jalview/api/AlignmentColsCollectionI.js
+jalview/api/AlignmentRowsCollectionI.js
+jalview/api/RendererListenerI.js
+jalview/bin/JalviewJSApi.js
+jalview/datamodel/VisibleColsCollection.js
+jalview/datamodel/VisibleRowsCollection.js
+jalview/datamodel/VisibleRowsIterator.js
+jalview/gui/OverviewCanvas.js
+jalview/gui/OverviewPanel.js
+jalview/gui/ProgressPanel.js
+jalview/renderer/OverviewRenderer.js
+jalview/renderer/OverviewResColourFinder.js
+jalview/renderer/seqfeatures/FeatureColourFinder.js
+jalview/viewmodel/OverviewDimensions.js
+jalview/viewmodel/OverviewDimensionsHideHidden.js
diff --git a/utils/jalviewjs/_j2sclasslist_jmol.txt b/utils/jalviewjs/_j2sclasslist_jmol.txt
new file mode 100644 (file)
index 0000000..5c86baf
--- /dev/null
@@ -0,0 +1,233 @@
+jalview/ext/jmol/JalviewJmolBinding.js
+jalview/ext/jmol/JmolCommands.js
+jalview/ext/jmol/JmolParser.js
+jalview/gui/AppJmol.js
+jalview/gui/AppJmolBinding.js
+jalview/gui/StructureViewerBase.js
+jalview/io/StructureFile.js
+jalview/jbgui/GStructureViewer.js
+jalview/renderer/seqfeatures/FeatureColourFinder.js
+jalview/structure/StructureListener.js
+jalview/structure/StructureMapping.js
+jalview/structure/StructureMappingcommandSet.js
+jalview/structures/models/AAStructureBindingModel.js
+jalview/structures/models/SequenceStructureBindingModel.js
+jalview/util/CaseInsensitiveString.js
+jalview/util/HttpUtils.js
+jalview/util/MapList.js
+jalview/ws/dbsources/EbiFileRetrievedProxy.js
+jalview/ws/dbsources/Pdb.js
+jalview/ws/seqfetcher/DbSourceProxy.js
+jalview/ws/seqfetcher/DbSourceProxyImpl.js
+jalview/ws/seqfetcher/DbSourceProxyRoot.js
+java/awt/font/TextAttribute.js
+java/awt/image/ImageProducer.js
+java/awt/image/PixelGrabber.js
+java/io/BufferedWriter.js
+java/io/FilterOutputStream.js
+java/io/OutputStream.js
+java/io/OutputStreamWriter.js
+java/io/PrintStream.js
+java/io/StringWriter.js
+java/io/Writer.js
+javajs/api/BytePoster.js
+javajs/api/GenericOutputChannel.js
+javajs/util/A4.js
+javajs/util/BS.js
+javajs/util/CU.js
+javajs/util/DF.js
+javajs/util/LimitedLineReader.js
+javajs/util/M3.js
+javajs/util/M34.js
+javajs/util/M4.js
+javajs/util/Measure.js
+javajs/util/OC.js
+javajs/util/P3.js
+javajs/util/P3i.js
+javajs/util/P4.js
+javajs/util/T3.js
+javajs/util/T3i.js
+javajs/util/T4.js
+javajs/util/V3.js
+mc_view/Atom.js
+mc_view/Bond.js
+mc_view/PDBChain.js
+mc_view/Residue.js
+org/jmol/adapter/readers/pdb/PdbReader.js
+org/jmol/adapter/smarter/Atom.js
+org/jmol/adapter/smarter/AtomIterator.js
+org/jmol/adapter/smarter/AtomSetCollection.js
+org/jmol/adapter/smarter/AtomSetCollectionReader.js
+org/jmol/adapter/smarter/AtomSetObject.js
+org/jmol/adapter/smarter/Bond.js
+org/jmol/adapter/smarter/BondIterator.js
+org/jmol/adapter/smarter/Resolver.js
+org/jmol/adapter/smarter/SmarterJmolAdapter.js
+org/jmol/adapter/smarter/Structure.js
+org/jmol/api/AtomIndexIterator.js
+org/jmol/api/EventManager.js
+org/jmol/api/GenericFileInterface.js
+org/jmol/api/GenericMouseInterface.js
+org/jmol/api/GenericPlatform.js
+org/jmol/api/Interface.js
+org/jmol/api/JmolAdapter.js
+org/jmol/api/JmolAdapterAtomIterator.js
+org/jmol/api/JmolAdapterBondIterator.js
+org/jmol/api/JmolCallbackListener.js
+org/jmol/api/JmolGraphicsInterface.js
+org/jmol/api/JmolPropertyManager.js
+org/jmol/api/JmolRendererInterface.js
+org/jmol/api/JmolRepaintManager.js
+org/jmol/api/JmolScriptEvaluator.js
+org/jmol/api/JmolScriptFunction.js
+org/jmol/api/JmolScriptManager.js
+org/jmol/api/JmolSelectionListener.js
+org/jmol/api/JmolStatusListener.js
+org/jmol/api/JmolViewer.js
+org/jmol/api/PlatformViewer.js
+org/jmol/api/Translator.js
+org/jmol/atomdata/AtomDataServer.js
+org/jmol/atomdata/RadiusData.js
+org/jmol/awt/AwtFile.js
+org/jmol/awt/AwtFont.js
+org/jmol/awt/Display.js
+org/jmol/awt/Image.js
+org/jmol/awt/Mouse.js
+org/jmol/awt/Platform.js
+org/jmol/bspt/Bspf.js
+org/jmol/bspt/Bspt.js
+org/jmol/bspt/CubeIterator.js
+org/jmol/bspt/Element.js
+org/jmol/bspt/Leaf.js
+org/jmol/bspt/Node.js
+org/jmol/c/CBK.js
+org/jmol/c/FIL.js
+org/jmol/c/PAL.js
+org/jmol/c/STER.js
+org/jmol/c/STR.js
+org/jmol/c/VDW.js
+org/jmol/g3d/CylinderRenderer.js
+org/jmol/g3d/G3DRenderer.js
+org/jmol/g3d/Graphics3D.js
+org/jmol/g3d/HermiteRenderer.js
+org/jmol/g3d/LineRenderer.js
+org/jmol/g3d/Pixelator.js
+org/jmol/g3d/Platform3D.js
+org/jmol/g3d/PrecisionRenderer.js
+org/jmol/g3d/SphereRenderer.js
+org/jmol/g3d/TextRenderer.js
+org/jmol/g3d/TextString.js
+org/jmol/g3d/TriangleRenderer.js
+org/jmol/i18n/GT.js
+org/jmol/i18n/Language.js
+org/jmol/i18n/Resource.js
+org/jmol/io/FileReader.js
+org/jmol/modelset/Atom.js
+org/jmol/modelset/AtomCollection.js
+org/jmol/modelset/AtomIteratorWithinModel.js
+org/jmol/modelset/Bond.js
+org/jmol/modelset/BondCollection.js
+org/jmol/modelset/BondIterator.js
+org/jmol/modelset/BondIteratorSelected.js
+org/jmol/modelset/Chain.js
+org/jmol/modelset/Group.js
+org/jmol/modelset/Model.js
+org/jmol/modelset/ModelLoader.js
+org/jmol/modelset/ModelSet.js
+org/jmol/modelset/Orientation.js
+org/jmol/modelset/Structure.js
+org/jmol/modelsetbio/AlphaMonomer.js
+org/jmol/modelsetbio/AlphaPolymer.js
+org/jmol/modelsetbio/BioModel.js
+org/jmol/modelsetbio/BioModelSet.js
+org/jmol/modelsetbio/BioPolymer.js
+org/jmol/modelsetbio/BioResolver.js
+org/jmol/modelsetbio/Helix.js
+org/jmol/modelsetbio/Monomer.js
+org/jmol/modelsetbio/ProteinStructure.js
+org/jmol/render/BallsRenderer.js
+org/jmol/render/FontLineShapeRenderer.js
+org/jmol/render/FrankRenderer.js
+org/jmol/render/RepaintManager.js
+org/jmol/render/ShapeRenderer.js
+org/jmol/render/SticksRenderer.js
+org/jmol/renderbio/BackboneRenderer.js
+org/jmol/renderbio/BioShapeRenderer.js
+org/jmol/renderbio/CartoonRenderer.js
+org/jmol/renderbio/RocketsRenderer.js
+org/jmol/renderbio/StrandsRenderer.js
+org/jmol/script/ContextToken.js
+org/jmol/script/SV.js
+org/jmol/script/ScriptCompiler.js
+org/jmol/script/ScriptContext.js
+org/jmol/script/ScriptError.js
+org/jmol/script/ScriptEval.js
+org/jmol/script/ScriptExpr.js
+org/jmol/script/ScriptFlowContext.js
+org/jmol/script/ScriptFunction.js
+org/jmol/script/ScriptManager.js
+org/jmol/script/ScriptMathProcessor.js
+org/jmol/script/ScriptParam.js
+org/jmol/script/ScriptTokenParser.js
+org/jmol/script/T.js
+org/jmol/scriptext/MathExt.js
+org/jmol/shape/AtomShape.js
+org/jmol/shape/Balls.js
+org/jmol/shape/Frank.js
+org/jmol/shape/Mesh.js
+org/jmol/shape/Shape.js
+org/jmol/shape/Sticks.js
+org/jmol/shapebio/Backbone.js
+org/jmol/shapebio/BioShape.js
+org/jmol/shapebio/BioShapeCollection.js
+org/jmol/shapebio/Cartoon.js
+org/jmol/shapebio/Rockets.js
+org/jmol/thread/HoverWatcherThread.js
+org/jmol/thread/JmolThread.js
+org/jmol/util/BSUtil.js
+org/jmol/util/BoxInfo.js
+org/jmol/util/C.js
+org/jmol/util/ColorEncoder.js
+org/jmol/util/CommandHistory.js
+org/jmol/util/DefaultLogger.js
+org/jmol/util/Edge.js
+org/jmol/util/Elements.js
+org/jmol/util/Escape.js
+org/jmol/util/GData.js
+org/jmol/util/Geodesic.js
+org/jmol/util/Int2IntHash.js
+org/jmol/util/Int2IntHashEntry.js
+org/jmol/util/Logger.js
+org/jmol/util/LoggerInterface.js
+org/jmol/util/MeshSurface.js
+org/jmol/util/Node.js
+org/jmol/util/Normix.js
+org/jmol/util/Point3fi.js
+org/jmol/util/Rectangle.js
+org/jmol/util/Rgb16.js
+org/jmol/util/Shader.js
+org/jmol/util/SimpleEdge.js
+org/jmol/util/SimpleNode.js
+org/jmol/util/TempArray.js
+org/jmol/viewer/ActionManager.js
+org/jmol/viewer/AnimationManager.js
+org/jmol/viewer/ColorManager.js
+org/jmol/viewer/FileManager.js
+org/jmol/viewer/Gesture.js
+org/jmol/viewer/GlobalSettings.js
+org/jmol/viewer/JC.js
+org/jmol/viewer/ModelManager.js
+org/jmol/viewer/MotionPoint.js
+org/jmol/viewer/MouseState.js
+org/jmol/viewer/PropertyManager.js
+org/jmol/viewer/SelectionManager.js
+org/jmol/viewer/ShapeManager.js
+org/jmol/viewer/StateManager.js
+org/jmol/viewer/StatusManager.js
+org/jmol/viewer/TransformManager.js
+org/jmol/viewer/Viewer.js
+org/jmol/viewer/binding/Binding.js
+org/jmol/viewer/binding/JmolBinding.js
+sun/awt/image/OffScreenImageSource.js
+sun/font/AttributeValues.js
+sun/font/EAttribute.js
\ No newline at end of file