Merge branch 'develop' into releases/Release_2_11_1_Branch
authorJim Procter <jprocter@issues.jalview.org>
Mon, 6 Apr 2020 16:27:29 +0000 (17:27 +0100)
committerJim Procter <jprocter@issues.jalview.org>
Mon, 6 Apr 2020 16:27:29 +0000 (17:27 +0100)
build.gradle
gradle.properties
help/help/html/releases.html
src/jalview/gui/IdCanvas.java
src/jalview/gui/SeqPanel.java
utils/install4j/install4j8_template.install4j

index e9c9da4..3080ed8 100644 (file)
@@ -260,21 +260,31 @@ ext {
   if (install4jSuffix == "") {
     install4jApplicationName = "${jalview_name}"
     install4jBundleId = "${install4j_bundle_id}"
+    install4jWinApplicationId = install4j_release_win_application_id
   } else {
     install4jApplicationName = "${jalview_name} ${install4jSuffix}"
     install4jBundleId = "${install4j_bundle_id}-" + install4jSuffix.toLowerCase()
+    // add int hash of install4jSuffix to the last part of the application_id
+    def id = install4j_release_win_application_id
+    def idsplitreverse = id.split("-").reverse()
+    idsplitreverse[0] = idsplitreverse[0].toInteger() + install4jSuffix.hashCode()
+    install4jWinApplicationId = idsplitreverse.reverse().join("-")
   }
   // sanitise folder and id names
   // install4jApplicationFolder = e.g. "Jalview Build"
   install4jApplicationFolder = install4jApplicationName
-                                    .replaceAll("[\"'~:/\\\\]", "_") // replace all awkward filename chars " ' ~ : / \
+                                    .replaceAll("[\"'~:/\\\\\\s]", "_") // replace all awkward filename chars " ' ~ : / \
                                     .replaceAll("_+", "_") // collapse __
-  install4jInternalId = install4jApplicationFolder
+  install4jInternalId = install4jApplicationName
+                                    .replaceAll(" ","_")
+                                    .replaceAll("[^\\w\\-\\.]", "_") // replace other non [alphanumeric,_,-,.]
+                                    .replaceAll("_+", "") // collapse __
+                                    //.replaceAll("_*-_*", "-") // collapse _-_
+  install4jUnixApplicationFolder = install4jApplicationName
                                     .replaceAll(" ","_")
                                     .replaceAll("[^\\w\\-\\.]", "_") // replace other non [alphanumeric,_,-,.]
                                     .replaceAll("_+", "_") // collapse __
                                     .replaceAll("_*-_*", "-") // collapse _-_
-  install4jUnixApplicationFolder = install4jInternalId
                                     .toLowerCase()
 
   getdownAppDir = string("${getdownWebsiteDir}/${getdownAppDistDir}")
@@ -1434,6 +1444,7 @@ task installers(type: com.install4j.gradle.Install4jTask) {
     'COPYRIGHT_MESSAGE': install4j_copyright_message,
     'BUNDLE_ID': install4jBundleId,
     'INTERNAL_ID': install4jInternalId,
+    'WINDOWS_APPLICATION_ID': install4jWinApplicationId,
     'MACOS_DS_STORE': install4jDSStore,
     'MACOS_DMG_BG_IMAGE': install4jDMGBackgroundImage,
     'INSTALLER_NAME': install4jInstallerName,
@@ -1446,7 +1457,7 @@ task installers(type: com.install4j.gradle.Install4jTask) {
     'GETDOWN_INSTALL_DIR': getdown_install_dir,
     'INFO_PLIST_FILE_ASSOCIATIONS_FILE': install4j_info_plist_file_associations,
     'BUILD_DIR': install4jBuildDir,
-    'UNIX_DESKTOP_ADDITIONS': install4j_unix_desktop_additions,
+    'APPLICATION_CATEGORIES': install4j_application_categories,
     'APPLICATION_FOLDER': install4jApplicationFolder,
     'UNIX_APPLICATION_FOLDER': install4jUnixApplicationFolder,
     'EXECUTABLE_NAME': install4jExecutableName,
index 832026c..782a495 100644 (file)
@@ -122,7 +122,8 @@ install4j_installer_file_associations = file_associations_auto-install4j8.xml
 install4j_build_dir = build/install4j
 install4j_media_types = windows,macosArchive,unixArchive,unixInstaller
 install4j_faster = false
-install4j_unix_desktop_additions = Categories=Science;Biology;Java;
+install4j_application_categories = Science;Biology;Java;
+install4j_release_win_application_id = 6595-2347-1923-0725
 
 OSX_KEYSTORE =
 OSX_KEYPASS =
index 06ff979..0097655 100755 (executable)
@@ -58,7 +58,7 @@ li:before {
     <tr>
       <td width="60" align="center" nowrap><strong><a
           id="Jalview.2.11.1">2.11.1</a><a id="Jalview.2.11.1.0">.0</a><br />
-          <em>2/04/2020</em></strong></td>
+          <em>9/04/2020</em></strong></td>
       <td align="left" valign="top">
         <ul>
           <li>
@@ -119,6 +119,9 @@ li:before {
           <li>
             <!-- JAL-3508 -->New point release version scheme - 2.11.1.0
           </li>
+          <li>
+            <!-- JAL-3577 -->'Jalview Test' installers/apps for easier access to test-release channel builds            
+          </li> 
         </ul> <em>Build System</em>
         <ul>
           <li>
@@ -141,6 +144,14 @@ li:before {
       <td align="left" valign="top">
         <ul>
           <li>
+            <!-- JAL-3581 -->Hidden sequence markers still visible when
+            'Show hidden markers' option is not ticked
+          </li>
+          <li>
+            <!-- JAL-3571 -->Feature Editor dialog can be opened when
+            'Show Sequence Features' option is not ticked
+          </li>
+          <li>
             <!-- JAL-3549 -->Undo 'Null' operation shown after sort by
             buttons in Feature Settings dialog are clicked when no
             features are visible
index 793c005..a925227 100755 (executable)
  */
 package jalview.gui;
 
-import jalview.datamodel.SequenceI;
-import jalview.viewmodel.ViewportListenerI;
-import jalview.viewmodel.ViewportRanges;
-
 import java.awt.BorderLayout;
 import java.awt.Color;
 import java.awt.Font;
@@ -37,6 +33,10 @@ import java.util.List;
 
 import javax.swing.JPanel;
 
+import jalview.datamodel.SequenceI;
+import jalview.viewmodel.ViewportListenerI;
+import jalview.viewmodel.ViewportRanges;
+
 /**
  * DOCUMENT ME!
  * 
@@ -137,7 +137,7 @@ public class IdCanvas extends JPanel implements ViewportListenerI
     g.drawString(s.getDisplayId(av.getShowJVSuffix()), xPos,
             (((i - starty + 1) * charHeight) + ypos) - (charHeight / 5));
 
-    if (hiddenRows)
+    if (hiddenRows && av.getShowHiddenMarkers())
     {
       drawMarker(g, av, i, starty, ypos);
     }
@@ -359,7 +359,7 @@ public class IdCanvas extends JPanel implements ViewportListenerI
       g.drawString(string, xPos, (((i - startSeq) * charHeight) + charHeight)
               - (charHeight / 5));
 
-      if (hasHiddenRows)
+      if (hasHiddenRows && av.getShowHiddenMarkers())
       {
         drawMarker(g, alignViewport, i, startSeq, 0);
       }
index ecf70e4..e3ea098 100644 (file)
  */
 package jalview.gui;
 
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Point;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
+import java.awt.event.MouseWheelEvent;
+import java.awt.event.MouseWheelListener;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import javax.swing.JPanel;
+import javax.swing.SwingUtilities;
+import javax.swing.ToolTipManager;
+
 import jalview.api.AlignViewportI;
 import jalview.bin.Cache;
 import jalview.commands.EditCommand;
@@ -53,24 +71,6 @@ import jalview.viewmodel.AlignmentViewport;
 import jalview.viewmodel.ViewportRanges;
 import jalview.viewmodel.seqfeatures.FeatureRendererModel;
 
-import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.Font;
-import java.awt.FontMetrics;
-import java.awt.Point;
-import java.awt.event.MouseEvent;
-import java.awt.event.MouseListener;
-import java.awt.event.MouseMotionListener;
-import java.awt.event.MouseWheelEvent;
-import java.awt.event.MouseWheelListener;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import javax.swing.JPanel;
-import javax.swing.SwingUtilities;
-import javax.swing.ToolTipManager;
-
 /**
  * DOCUMENT ME!
  * 
@@ -2061,7 +2061,7 @@ public class SeqPanel extends JPanel
       return;
     }
 
-    if (evt.getClickCount() > 1)
+    if (evt.getClickCount() > 1 && av.isShowSequenceFeatures())
     {
       sg = av.getSelectionGroup();
       if (sg != null && sg.getSize() == 1
index 0b6cf77..2252a91 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<install4j version="8.0.4" transformSequenceNumber="8">
+<install4j version="8.0.5" transformSequenceNumber="8">
   <directoryPresets config="." />
-  <application name="${compiler:JALVIEW_APPLICATION_NAME}" applicationId="6595-2347-1923-0725" mediaDir="${compiler:BUILD_DIR}" lzmaCompression="true" shortName="${compiler:JALVIEW_NAME}" publisher="University of Dundee" publisherWeb="https://www.jalview.org/" version="${compiler:JALVIEW_VERSION}" allPathsRelative="true" macVolumeId="5aac4968c304f65" javaMinVersion="${compiler:JAVA_MIN_VERSION}" javaMaxVersion="9999999999${compiler:JAVA_MAX_VERSION}" allowBetaVM="true" jdkMode="jdk" jdkName="JDK 11.0">
+  <application name="${compiler:JALVIEW_APPLICATION_NAME}" applicationId="${compiler:WINDOWS_APPLICATION_ID}" mediaDir="${compiler:BUILD_DIR}" lzmaCompression="true" shortName="${compiler:INTERNAL_ID}" publisher="University of Dundee" publisherWeb="https://www.jalview.org/" version="${compiler:JALVIEW_VERSION}" allPathsRelative="true" macVolumeId="5aac4968c304f65" javaMinVersion="${compiler:JAVA_MIN_VERSION}" javaMaxVersion="9999999999${compiler:JAVA_MAX_VERSION}" allowBetaVM="true" jdkMode="jdk" jdkName="JDK 11.0">
     <searchSequence>
       <directory location="${compiler:JRE_DIR}" />
       <registry />
@@ -31,6 +31,7 @@
       <variable name="COPYRIGHT_MESSAGE" value="..." />
       <variable name="BUNDLE_ID" value="org.jalview.jalview-desktop" />
       <variable name="INTERNAL_ID" value="Jalview" />
+      <variable name="WINDOWS_APPLICATION_ID" value="6595-2347-1923-0725" />
       <variable name="MACOS_DS_STORE" value="DS_Store" />
       <variable name="MACOS_DMG_BG_IMAGE" />
       <variable name="INSTALLER_NAME" value="Jalview Installer" />
@@ -42,7 +43,7 @@
       <variable name="GETDOWN_ALT_DIR" value="alt" />
       <variable name="GETDOWN_INSTALL_DIR" value="install" />
       <variable name="INFO_PLIST_FILE_ASSOCIATIONS_FILE" value="file_associations_auto-Info_plist.xml" />
-      <variable name="UNIX_DESKTOP_ADDITIONS" value="Categories=Science;Biology;Java;" />
+      <variable name="APPLICATION_CATEGORIES" value="Science;Biology;Java;" />
       <variable name="APPLICATION_FOLDER" value="Jalview" />
       <variable name="UNIX_APPLICATION_FOLDER" value="jalview" />
       <variable name="EXECUTABLE_NAME" value="jalview" />
     </components>
   </files>
   <launchers>
-    <launcher name="Offline Jalview Launcher" id="737" menuName="${compiler:JALVIEW_APPLICATION_NAME}" icnsFile="${compiler:JALVIEW_DIR}/resources/images/jalview_logos.icns" customMacBundleIdentifier="true" macBundleIdentifier="${compiler:BUNDLE_ID}" fileset="734" useCustomMacosExecutableName="true" customMacosExecutableName="${compiler:JALVIEW_APPLICATION_NAME}">
+    <launcher name="Offline Jalview Launcher" id="737" excludeFromMenu="true" menuName="${compiler:JALVIEW_APPLICATION_NAME}" icnsFile="${compiler:JALVIEW_DIR}/resources/images/jalview_logos.icns" customMacBundleIdentifier="true" macBundleIdentifier="${compiler:BUNDLE_ID}" fileset="734" useCustomMacosExecutableName="true" customMacosExecutableName="${compiler:JALVIEW_APPLICATION_NAME}">
       <executable name="${compiler:EXECUTABLE_NAME}" iconSet="true" iconFile="${compiler:JALVIEW_DIR}/resources/images/jalview_logos.ico" redirectStdout="true" executableMode="gui" changeWorkingDirectory="false" singleInstance="true" checkConsoleParameter="true">
         <versionInfo include="true" fileDescription="${compiler:sys.fullName}" legalCopyright="${compiler:COPYRIGHT_MESSAGE}" internalName="${compiler:INTERNAL_ID}" productName="${compiler:sys.fullName}" />
       </executable>
         <id>2450</id>
         <id>2641</id>
       </macStaticAssociationActions>
-      <desktopFile>${compiler:UNIX_DESKTOP_ADDITIONS}</desktopFile>
       <infoPlist>${compiler:file("${compiler:INFO_PLIST_FILE_ASSOCIATIONS_FILE}")}</infoPlist>
       <iconImageFiles>
         <file path="${compiler:JALVIEW_DIR}/resources/images/JalviewLogo_Huge.png" />
@@ -389,6 +389,9 @@ return console.askOkCancel(message, true);
               <action id="17" beanClass="com.install4j.runtime.beans.actions.InstallFilesAction" actionElevationType="elevated" rollbackBarrierExitCode="0" failureStrategy="quit" errorMessage="${i18n:FileCorrupted}" />
               <action id="18" beanClass="com.install4j.runtime.beans.actions.desktop.CreateProgramGroupAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
                 <serializedBean>
+                  <property name="allUsers" type="boolean" value="false" />
+                  <property name="categories" type="string">${compiler:APPLICATION_CATEGORIES}</property>
+                  <property name="programGroupName" type="string">${compiler:JALVIEW_NAME}</property>
                   <property name="uninstallerMenuName" type="string">${i18n:UninstallerMenuEntry(${compiler:sys.fullName})}</property>
                 </serializedBean>
                 <condition>!context.getBooleanVariable("sys.programGroupDisabled")</condition>
@@ -481,10 +484,11 @@ return console.askOkCancel(message, true);
               <action id="2012" beanClass="com.install4j.runtime.beans.actions.desktop.CreateStartMenuEntryAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
                 <serializedBean>
                   <property name="allUsers" type="boolean" value="false" />
-                  <property name="entryName" type="string">${compiler:sys.shortName}</property>
+                  <property name="categories" type="string">${compiler:APPLICATION_CATEGORIES}</property>
+                  <property name="entryName" type="string">${compiler:JALVIEW_APPLICATION_NAME}</property>
                   <property name="file">
                     <object class="java.io.File">
-                      <string>${compiler:sys.shortName}</string>
+                      <string>${installer:sys.contentDir}/${compiler:EXECUTABLE_NAME}</string>
                     </object>
                   </property>
                   <property name="icon">
@@ -492,6 +496,7 @@ return console.askOkCancel(message, true);
                       <string>${compiler:JALVIEW_DIR}/resources/images/jalview_logos.ico</string>
                     </object>
                   </property>
+                  <property name="programGroupName" type="string">${compiler:JALVIEW_NAME}</property>
                   <property name="unixIconFile">
                     <object class="com.install4j.api.beans.ExternalFile">
                       <string>${compiler:JALVIEW_DIR}/resources/images/JalviewLogo_Huge.png</string>
@@ -503,13 +508,13 @@ return console.askOkCancel(message, true);
               <action id="573" beanClass="com.install4j.runtime.beans.actions.desktop.CreateDesktopLinkAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make desktop link">
                 <serializedBean>
                   <property name="allUsers" type="boolean" value="false" />
-                  <property name="description" type="string">${compiler:sys.shortName}</property>
+                  <property name="description" type="string">${compiler:JALVIEW_APPLICATION_NAME}</property>
                   <property name="file">
                     <object class="java.io.File">
-                      <string>${compiler:sys.shortName}</string>
+                      <string>${installer:sys.contentDir}/${compiler:EXECUTABLE_NAME}</string>
                     </object>
                   </property>
-                  <property name="name" type="string">${compiler:sys.fullName}</property>
+                  <property name="name" type="string">${compiler:JALVIEW_APPLICATION_NAME}</property>
                   <property name="unixIconFile">
                     <object class="com.install4j.api.beans.ExternalFile">
                       <string>${compiler:JALVIEW_DIR}/resources/images/JalviewLogo_Huge.png</string>
@@ -527,7 +532,7 @@ return console.askOkCancel(message, true);
                 <serializedBean>
                   <property name="executable">
                     <object class="java.io.File">
-                      <string>${compiler:APPLICATION_FOLDER}.app</string>
+                      <string>${compiler:JALVIEW_APPLICATION_NAME}.app</string>
                     </object>
                   </property>
                 </serializedBean>
@@ -1109,9 +1114,9 @@ return console.askYesNo(message, true);
         <symlink name="&quot; &quot;" target="/Applications" />
         <file name=".background/${compiler:MACOS_DMG_BG_IMAGE}" file="${compiler:JALVIEW_DIR}/${compiler:INSTALL4J_UTILS_DIR}/${compiler:MACOS_DMG_BG_IMAGE}" />
         <file name=".DS_Store" file="${compiler:JALVIEW_DIR}/${compiler:INSTALL4J_UTILS_DIR}/${compiler:MACOS_DS_STORE}" />
-        <file name="${compiler:APPLICATION_FOLDER}.app/Contents/Resources/Jalview-File.icns" file="${compiler:JALVIEW_DIR}/${compiler:INSTALL4J_UTILS_DIR}/Jalview-File.icns" />
-        <file name="${compiler:APPLICATION_FOLDER}.app/Contents/Resources/Jalview-Launch.icns" file="${compiler:JALVIEW_DIR}/${compiler:INSTALL4J_UTILS_DIR}/Jalview-Launch.icns" />
-        <symlink name="Uninstall Old Jalview (optional).app" target="${compiler:APPLICATION_FOLDER}.app/Contents/Resources/app/Uninstall Old Jalview.app" />
+        <file name="${compiler:JALVIEW_APPLICATION_NAME}.app/Contents/Resources/Jalview-File.icns" file="${compiler:JALVIEW_DIR}/${compiler:INSTALL4J_UTILS_DIR}/Jalview-File.icns" />
+        <file name="${compiler:JALVIEW_APPLICATION_NAME}.app/Contents/Resources/Jalview-Launch.icns" file="${compiler:JALVIEW_DIR}/${compiler:INSTALL4J_UTILS_DIR}/Jalview-Launch.icns" />
+        <symlink name="Uninstall Old Jalview (optional).app" target="${compiler:JALVIEW_APPLICATION_NAME}.app/Contents/Resources/app/Uninstall Old Jalview.app" />
       </topLevelFiles>
     </macosArchive>
     <unixInstaller name="Linux x64 Shell Installer" id="1595" mediaFileName="${compiler:UNIX_APPLICATION_FOLDER}-${compiler:JALVIEW_VERSION}-linux_x64-java_${compiler:JAVA_INTEGER_VERSION}" installDir="${compiler:UNIX_APPLICATION_FOLDER}" customInstallBaseDir="~/opt/">