JAL-4441 new menu option to show or hide structure providers in secondary structure...
authorJim Procter <jprocter@dundee.ac.uk>
Thu, 25 Jul 2024 15:45:15 +0000 (16:45 +0100)
committerJim Procter <jprocter@dundee.ac.uk>
Thu, 25 Jul 2024 15:45:15 +0000 (16:45 +0100)
39 files changed:
resources/lang/Messages.properties
schemas/jalview.xsd
src/jalview/api/ViewStyleI.java
src/jalview/gui/AlignFrame.java
src/jalview/gui/AlignViewport.java
src/jalview/gui/AnnotationLabels.java
src/jalview/gui/Preferences.java
src/jalview/jbgui/GAlignFrame.java
src/jalview/project/Jalview2XML.java
src/jalview/viewmodel/AlignmentViewport.java
src/jalview/viewmodel/styles/ViewStyle.java
src/jalview/xml/binding/jalview/AlcodonFrame.java
src/jalview/xml/binding/jalview/Annotation.java
src/jalview/xml/binding/jalview/AnnotationColourScheme.java
src/jalview/xml/binding/jalview/AnnotationElement.java
src/jalview/xml/binding/jalview/DoubleMatrix.java
src/jalview/xml/binding/jalview/DoubleVector.java
src/jalview/xml/binding/jalview/Feature.java
src/jalview/xml/binding/jalview/FeatureMatcher.java
src/jalview/xml/binding/jalview/FeatureMatcherSet.java
src/jalview/xml/binding/jalview/FilterBy.java
src/jalview/xml/binding/jalview/JalviewModel.java
src/jalview/xml/binding/jalview/JalviewUserColours.java
src/jalview/xml/binding/jalview/MapListType.java
src/jalview/xml/binding/jalview/MapOnAMatrixType.java
src/jalview/xml/binding/jalview/Mapping.java
src/jalview/xml/binding/jalview/MatrixType.java
src/jalview/xml/binding/jalview/NoValueColour.java
src/jalview/xml/binding/jalview/ObjectFactory.java
src/jalview/xml/binding/jalview/PcaDataType.java
src/jalview/xml/binding/jalview/Pdbentry.java
src/jalview/xml/binding/jalview/Property.java
src/jalview/xml/binding/jalview/Sequence.java
src/jalview/xml/binding/jalview/SequenceSet.java
src/jalview/xml/binding/jalview/SequenceType.java
src/jalview/xml/binding/jalview/ThresholdType.java
src/jalview/xml/binding/jalview/VAMSAS.java
src/jalview/xml/binding/jalview/WebServiceParameterSet.java
src/jalview/xml/binding/jalview/package-info.java

index cb1ffb0..b5afb2a 100644 (file)
@@ -1309,6 +1309,7 @@ label.conservation_descr = Conservation of total alignment less than {0}% gaps
 label.consensus_descr = PID
 label.ssconsensus_label = Secondary Structure Consensus
 label.ssconsensus_descr = Secondary Structure Consensus
+label.show_structure_provider = Show Structure Providers
 option.ss_providers_all = All
 option.ss_providers_none = None
 label.complement_consensus_descr = PID for cDNA
index c80eab6..c988555 100755 (executable)
                                                <xs:attribute name="followSelection" type="xs:boolean"
                                                        use="optional" default="true" />
                                                <xs:attribute name="showAnnotation" type="xs:boolean" />
+                                               <xs:attribute name="showStructureProviders" type="xs:boolean" use="optional" default="false"/>
                                                <xs:attribute name="centreColumnLabels" type="xs:boolean"
                                                        use="optional" default="false" />
                                                <xs:attribute name="showGroupConservation" type="xs:boolean"
                                                <xs:attribute name="showGroupSecStrConsensus" type="xs:boolean"
                                                        use="optional" default="false" ><xs:annotation><xs:documentation>
                                                        whether a new group has secondary structure consensus displayed by default</xs:documentation></xs:annotation> </xs:attribute>
+                                                       
                                                <xs:attribute name="startRes" type="xs:int" />
                                                <xs:attribute name="startSeq" type="xs:int" />
                                                <xs:attribute name="charWidth" type="xs:int" />
index 8942477..bed31c4 100644 (file)
@@ -68,6 +68,10 @@ public interface ViewStyleI
   void setAbovePIDThreshold(boolean b);
   
   void setByConsensusSecondaryStructureSelected(boolean b);
+  
+  void setShowStructureProvider(boolean b);
+
+  boolean isShowStructureProvider();
 
   void setThreshold(int thresh);
 
index febcd0c..7a06638 100644 (file)
@@ -895,7 +895,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     modifyConservation
             .setEnabled(!nucleotide && conservationMenuItem.isSelected());
     byConsensusSecondaryStructureMenuItem.setEnabled(!nucleotide);
-    modifyConsensusSecondaryStructureThreshold.setEnabled(!nucleotide 
+    modifyConsensusSecondaryStructureThreshold.setEnabled(!nucleotide
             && byConsensusSecondaryStructureMenuItem.isSelected());
     showGroupConservation.setEnabled(!nucleotide);
 
@@ -930,10 +930,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     modifyPID.setEnabled(abovePIDThreshold.isSelected());
     conservationMenuItem.setSelected(av.getConservationSelected());
     modifyConservation.setEnabled(conservationMenuItem.isSelected());
-    byConsensusSecondaryStructureMenuItem.setSelected(
-            av.getByConsensusSecondaryStructureSelected());
-    modifyConsensusSecondaryStructureThreshold.setEnabled(
-            byConsensusSecondaryStructureMenuItem.isSelected());
+    byConsensusSecondaryStructureMenuItem
+            .setSelected(av.getByConsensusSecondaryStructureSelected());
+    modifyConsensusSecondaryStructureThreshold
+            .setEnabled(byConsensusSecondaryStructureMenuItem.isSelected());
     seqLimits.setSelected(av.getShowJVSuffix());
     idRightAlign.setSelected(av.isRightAlignIds());
     centreColumnLabelsMenuItem.setState(av.isCentreColumnLabels());
@@ -955,6 +955,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     showNonconservedMenuItem.setSelected(av.getShowUnconserved());
     showGroupConsensus.setSelected(av.isShowGroupConsensus());
     showGroupSSConsensus.setSelected(av.isShowGroupSSConsensus());
+    showStrucProvider.setSelected(av.isShowStructureProvider());
     showGroupConservation.setSelected(av.isShowGroupConservation());
     showConsensusHistogram.setSelected(av.isShowConsensusHistogram());
     showSequenceLogo.setSelected(av.isShowSequenceLogo());
@@ -3723,7 +3724,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
             viewport.getResidueShading(), alignPanel.getViewName());
     SliderPanel.showConservationSlider();
   }
-  
+
   @Override
   protected void modifyConsensusSecondaryStructureThreshold_actionPerformed()
   {
@@ -3752,13 +3753,15 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       SliderPanel.hideConservationSlider();
     }
   }
-  
+
   @Override
-  public void colourByConsensusSecondaryStructureMenuItem_actionPerformed(boolean selected)
+  public void colourByConsensusSecondaryStructureMenuItem_actionPerformed(
+          boolean selected)
   {
     modifyConsensusSecondaryStructureThreshold.setEnabled(selected);
-    viewport.setByConsensusSecondaryStructureSelected(selected); 
-    viewport.getResidueShading().setConsensusSecondaryStructureColouring(selected);
+    viewport.setByConsensusSecondaryStructureSelected(selected);
+    viewport.getResidueShading()
+            .setConsensusSecondaryStructureColouring(selected);
 
     changeColour(viewport.getGlobalColourScheme());
     if (selected)
@@ -3894,19 +3897,20 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     }
     else
     {
-      new Thread(new Runnable() {
+      new Thread(new Runnable()
+      {
         @Override
         public void run()
         {
-               JInternalFrame frame = new JInternalFrame();
-      frame.setFrameIcon(null);
-      frame.setContentPane(new PairwiseAlignPanel(viewport));
-      Desktop.addInternalFrame(frame,
-              MessageManager.getString("action.pairwise_alignment"), 600,
-              500);
+          JInternalFrame frame = new JInternalFrame();
+          frame.setFrameIcon(null);
+          frame.setContentPane(new PairwiseAlignPanel(viewport));
+          Desktop.addInternalFrame(frame,
+                  MessageManager.getString("action.pairwise_alignment"),
+                  600, 500);
         }
       }).start();
-      
+
     }
   }
 
@@ -5733,145 +5737,186 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     viewport.setShowUnconserved(showNonconservedMenuItem.getState());
     alignPanel.paintAlignment(false, false);
   }
-  
+
   @Override
-  protected void updateShowSecondaryStructureMenu(JMenu showSS, ButtonGroup ssButtonGroup){
-    
+  protected void showStructureProvider_actionPerformed(ActionEvent e)
+  {
+    viewport.setShowStructureProvider(showStrucProvider.getState());
+    alignPanel.paintAlignment(false, false);
+   
+  }
+  @Override
+  protected void updateShowSecondaryStructureMenu(JMenu showSS,
+          ButtonGroup ssButtonGroup)
+  {
+
     List<String> ssSources = new ArrayList<String>();
     AlignmentAnnotation[] anns = alignPanel.getAlignment()
             .getAlignmentAnnotation();
-    Map<String, JCheckBoxMenuItem> checkboxMap = getCheckboxesInMenu(showSS);
-    
+    Map<String, JCheckBoxMenuItem> checkboxMap = getCheckboxesInMenu(
+            showSS);
+
     ssSources = AlignmentUtils.extractSSSourceInAlignmentAnnotation(anns);
-    
-    if(ssSources == null) {
+
+    if (ssSources == null)
+    {
       showSS.removeAll();
       ssButtonGroup.clearSelection();
       return;
     }
-    
+
     List<String> selectedCheckBoxes = getSelectedOptions(checkboxMap);
-    
+
     // Add checkboxes for categories
-    for (String ssSource : ssSources) {
-      
-      if(checkboxMap.get(ssSource)== null) {
+    for (String ssSource : ssSources)
+    {
+
+      if (checkboxMap.get(ssSource) == null)
+      {
         JCheckBoxMenuItem checkBox = new JCheckBoxMenuItem(ssSource);
         checkBox.setSelected(false);
-                
+
         checkBox.addItemListener(e -> {
-            if (e.getStateChange() == ItemEvent.SELECTED) {
-                
-              showOrHideSecondaryStructureForSource(ssSource, true);
-              
-            } else {                
-
-              showOrHideSecondaryStructureForSource(ssSource, false);
-              
-            }
+          if (e.getStateChange() == ItemEvent.SELECTED)
+          {
+
+            showOrHideSecondaryStructureForSource(ssSource, true);
+
+          }
+          else
+          {
+
+            showOrHideSecondaryStructureForSource(ssSource, false);
+
+          }
         });
         showSS.add(checkBox);
       }
     }
     // Iterate over the keys of checkboxMap
-    for (String key : checkboxMap.keySet()) {
-        // Check if the key is not in ssSources
-        if (!ssSources.contains(key)) {
-            showSS.remove(checkboxMap.get(key));            
-            checkboxMap.remove(key);
-            selectedCheckBoxes.remove(key);
-        }
-        if(selectedCheckBoxes.contains(key)){
-          checkboxMap.get(key).setSelected(true);
-        }
-        else {
-          checkboxMap.get(key).setSelected(false);
-        }        
+    for (String key : checkboxMap.keySet())
+    {
+      // Check if the key is not in ssSources
+      if (!ssSources.contains(key))
+      {
+        showSS.remove(checkboxMap.get(key));
+        checkboxMap.remove(key);
+        selectedCheckBoxes.remove(key);
+      }
+      if (selectedCheckBoxes.contains(key))
+      {
+        checkboxMap.get(key).setSelected(true);
+      }
+      else
+      {
+        checkboxMap.get(key).setSelected(false);
+      }
 
-        ssButtonGroup.clearSelection();
+      ssButtonGroup.clearSelection();
     }
 
   }
-  
-  private List<String> getSelectedOptions(Map<String, JCheckBoxMenuItem> checkboxMap) {
+
+  private List<String> getSelectedOptions(
+          Map<String, JCheckBoxMenuItem> checkboxMap)
+  {
     List<String> selectedOptions = new ArrayList<>();
-    for (String key : checkboxMap.keySet()) {
-        JCheckBoxMenuItem checkbox = checkboxMap.get(key);
-        if (checkbox.isSelected()) {
-            selectedOptions.add(key);
-        }
+    for (String key : checkboxMap.keySet())
+    {
+      JCheckBoxMenuItem checkbox = checkboxMap.get(key);
+      if (checkbox.isSelected())
+      {
+        selectedOptions.add(key);
+      }
     }
     return selectedOptions;
   }
-  
-  private Map<String, JCheckBoxMenuItem> getCheckboxesInMenu(JMenu menu) {
+
+  private Map<String, JCheckBoxMenuItem> getCheckboxesInMenu(JMenu menu)
+  {
     Map<String, JCheckBoxMenuItem> checkboxMap = new HashMap<>();
-    for (Component component : menu.getMenuComponents()) {
-        if (component instanceof JCheckBoxMenuItem) {
-            JCheckBoxMenuItem checkbox = (JCheckBoxMenuItem) component;
-            checkboxMap.put(checkbox.getText(), checkbox);
-        }
+    for (Component component : menu.getMenuComponents())
+    {
+      if (component instanceof JCheckBoxMenuItem)
+      {
+        JCheckBoxMenuItem checkbox = (JCheckBoxMenuItem) component;
+        checkboxMap.put(checkbox.getText(), checkbox);
+      }
     }
     return checkboxMap;
-}
-  
+  }
+
   @Override
-  protected void showOrHideSecondaryStructureForSource(String ssSourceSelection, boolean visible){
-    
-    String noneOption = MessageManager.getString("option.ss_providers_none");
+  protected void showOrHideSecondaryStructureForSource(
+          String ssSourceSelection, boolean visible)
+  {
+
+    String noneOption = MessageManager
+            .getString("option.ss_providers_none");
     String allOption = MessageManager.getString("option.ss_providers_all");
-    
+
     AlignmentAnnotation[] annotations = alignPanel.getAlignment()
             .getAlignmentAnnotation();
-    
-    for (AlignmentAnnotation aa: annotations) {
-      
-      if(aa.groupRef!=null) {
+
+    for (AlignmentAnnotation aa : annotations)
+    {
+
+      if (aa.groupRef != null)
+      {
         continue;
       }
-      
-      boolean isSSConsensus = aa.label.startsWith(MessageManager.getString("label.ssconsensus_label"));
-      boolean matchesSSSourceSelection = aa.description.startsWith(ssSourceSelection);
-      
-      if(isSSConsensus && (matchesSSSourceSelection || ssSourceSelection.equals(noneOption))) {
-        
-        if (ssSourceSelection.equals(allOption)) {
-          aa.visible  = true;
+
+      boolean isSSConsensus = aa.label.startsWith(
+              MessageManager.getString("label.ssconsensus_label"));
+      boolean matchesSSSourceSelection = aa.description
+              .startsWith(ssSourceSelection);
+
+      if (isSSConsensus && (matchesSSSourceSelection
+              || ssSourceSelection.equals(noneOption)))
+      {
+
+        if (ssSourceSelection.equals(allOption))
+        {
+          aa.visible = true;
           break;
         }
-        
-        if(!aa.description.startsWith(allOption))
-          aa.visible  = visible;
+
+        if (!aa.description.startsWith(allOption))
+          aa.visible = visible;
 
       }
-      
-      for (String label : Constants.SECONDARY_STRUCTURE_LABELS.keySet()) {
-        
-        if (label.equals(aa.label)) { 
 
-            String ssSource = AlignmentUtils.extractSSSourceFromAnnotationDescription(aa);
+      for (String label : Constants.SECONDARY_STRUCTURE_LABELS.keySet())
+      {
 
-            if(ssSource != null && (ssSource.equals(ssSourceSelection) || ssSourceSelection.equals(noneOption))) {
-              aa.visible = visible;
-            }           
+        if (label.equals(aa.label))
+        {
+
+          String ssSource = AlignmentUtils
+                  .extractSSSourceFromAnnotationDescription(aa);
+
+          if (ssSource != null && (ssSource.equals(ssSourceSelection)
+                  || ssSourceSelection.equals(noneOption)))
+          {
+            aa.visible = visible;
+          }
         }
       }
-      
+
     }
-    
-      PaintRefresher.Refresh(this, viewport.getSequenceSetId());
-      alignPanel.updateAnnotation();
-      alignPanel.paintAlignment(true, true);
-    
+
+    PaintRefresher.Refresh(this, viewport.getSequenceSetId());
+    alignPanel.updateAnnotation();
+    alignPanel.paintAlignment(true, true);
+
   }
-  
+
   protected void showSSConsensus_actionPerformed(ActionEvent e)
   {
     viewport.setShowSSConsensus(showSSConsensus.getState());
     alignPanel.updateAnnotation(applyAutoAnnotationSettings.getState());
-    
-  }
 
+  }
 
   /*
    * (non-Javadoc)
@@ -5895,6 +5940,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     alignPanel.updateAnnotation(applyAutoAnnotationSettings.getState());
 
   }
+
   /*
    * (non-Javadoc)
    * 
@@ -5922,7 +5968,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     viewport.setShowConsensusHistogram(showConsensusHistogram.getState());
     alignPanel.updateAnnotation(applyAutoAnnotationSettings.getState());
   }
-  
+
   /*
    * (non-Javadoc)
    * 
index 36812f1..9430a8b 100644 (file)
@@ -242,6 +242,7 @@ public class AlignViewport extends AlignmentViewport
             .getDefault(Preferences.SHOW_AUTOCALC_ABOVE, false);
     viewStyle.setScaleProteinAsCdna(
             Cache.getDefault(Preferences.SCALE_PROTEIN_TO_CDNA, true));
+    viewStyle.setShowStructureProvider(Cache.getDefault(Preferences.SHOW_STRUC_PROVIDER, false));
   }
 
   void init()
index d7b950b..9478c6f 100755 (executable)
@@ -1375,6 +1375,7 @@ public class AnnotationLabels extends JPanel
     SequenceI lastSeqRef = null;
     String lastLabel = null;
     AlignmentAnnotation[] aa = av.getAlignment().getAlignmentAnnotation();
+    boolean isShowStructureProvider = av.isShowStructureProvider();
     int fontHeight = g != null ? g.getFont().getSize()
             : fm.getFont().getSize();
     int y = 0;
@@ -1494,7 +1495,7 @@ public class AnnotationLabels extends JPanel
           }
         }
         
-        if(Constants.SECONDARY_STRUCTURE_LABELS.keySet().contains(aa[i].label)) {
+        if(isShowStructureProvider && aa[i].hasIcons && Constants.SECONDARY_STRUCTURE_LABELS.keySet().contains(aa[i].label)) {
           String ssSource = AlignmentUtils.extractSSSourceFromAnnotationDescription(aa[i]);
           if(ssSource != null && ssSource.length()>0)
           label += " (" + ssSource + ")";
index 4fb013f..612bf26 100755 (executable)
@@ -133,6 +133,8 @@ public class Preferences extends GPreferences
 
   private static final int MAX_FONT_SIZE = 30;
 
+  public static final String SHOW_STRUC_PROVIDER = "SHOW_STRUCTURE_PROVIDER";
+
   private String previousProxyType;
 
   private static Preferences INSTANCE = null; // add "final"
index d1d56ed..fa9626b 100755 (executable)
@@ -200,6 +200,8 @@ public class GAlignFrame extends JInternalFrame
 
   protected JMenuItem expandViews = new JMenuItem();
   
+  protected JCheckBoxMenuItem showStrucProvider = new JCheckBoxMenuItem();   
+  
   protected JCheckBoxMenuItem showSSConsensus = new JCheckBoxMenuItem();   
 
   protected JCheckBoxMenuItem showGroupSSConsensus = new JCheckBoxMenuItem();
@@ -680,6 +682,16 @@ public class GAlignFrame extends JInternalFrame
         sortAnnotations_actionPerformed();
       }
     });
+    showStrucProvider = new JCheckBoxMenuItem(
+            MessageManager.getString("label.show_structure_provider"));
+    showStrucProvider.addActionListener(new ActionListener() {
+      @Override
+      public void actionPerformed(ActionEvent e)
+      {
+        showStructureProvider_actionPerformed(e);
+      }
+      
+    });
     colourTextMenuItem = new JCheckBoxMenuItem(
             MessageManager.getString("label.colour_text"));
     colourTextMenuItem.addActionListener(new ActionListener()
@@ -1977,6 +1989,7 @@ public class GAlignFrame extends JInternalFrame
     annotationsMenu.add(sortAnnByLabel);
     annotationsMenu.addSeparator();
     annotationsMenu.add(showSS);
+    annotationsMenu.add(showStrucProvider);
     annotationsMenu.addSeparator();
     autoAnnMenu.add(showAutoFirst);
     autoAnnMenu.add(showAutoLast);
@@ -2071,6 +2084,12 @@ public class GAlignFrame extends JInternalFrame
     // selectMenu.add(listenToViewSelections);
   }
 
+  protected void showStructureProvider_actionPerformed(ActionEvent e)
+  {
+    // TODO Auto-generated method stub
+    
+  }
+
   protected void showSSConsensus_actionPerformed(ActionEvent e)
   {
     // TODO Auto-generated method stub
index 061583c..2a2225e 100644 (file)
@@ -1679,6 +1679,7 @@ public class Jalview2XML
       view.setScaleProteinAsCdna(av.getViewStyle().isScaleProteinAsCdna());
       view.setRenderGaps(av.isRenderGaps());
       view.setShowAnnotation(av.isShowAnnotation());
+      view.setShowStructureProviders(av.isShowStructureProvider());
       view.setShowBoxes(av.getShowBoxes());
       view.setShowColourText(av.getColourText());
       view.setShowFullId(av.getShowJVSuffix());
@@ -5346,6 +5347,7 @@ public class Jalview2XML
     // recover view properties and display parameters
 
     viewport.setShowAnnotation(safeBoolean(view.isShowAnnotation()));
+    viewport.setShowStructureProvider(safeBoolean(view.isShowStructureProviders()));
     viewport.setAbovePIDThreshold(safeBoolean(view.isPidSelected()));
     final int pidThreshold = safeInt(view.getPidThreshold());
     viewport.setThreshold(pidThreshold);
index 1e81891..94a1424 100644 (file)
@@ -259,6 +259,16 @@ public abstract class AlignmentViewport
     return viewStyle.getByConsensusSecondaryStructureSelected();
   }
 
+  public void setShowStructureProvider(boolean b)
+  {
+    viewStyle.setShowStructureProvider(b);
+  }
+
+  public boolean isShowStructureProvider()
+  {
+    return viewStyle.isShowStructureProvider();
+  }
+
   /**
    * @param inc
    * @see jalview.api.ViewStyleI#setIncrement(int)
index 502d0fc..0726517 100644 (file)
@@ -390,6 +390,8 @@ public class ViewStyle implements ViewStyleI
   */
   private List<String> secondaryStructureSources = List.of( new String[0] );
 
+  private boolean showStructureProvider;
+
   /**
    * GUI state
    * 
@@ -1203,4 +1205,15 @@ public class ViewStyle implements ViewStyleI
   {
     this.secondaryStructureSources = secondaryStructureSources;
   }
+
+  @Override
+  public void setShowStructureProvider(boolean showStructureProvider)
+  {
+    this.showStructureProvider=showStructureProvider;
+  }
+  @Override
+  public boolean isShowStructureProvider()
+  {
+    return showStructureProvider;
+  }
 }
index 06fab20..ab8fbf5 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the Eclipse Implementation of JAXB, v2.3.9 
 // See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2024.07.25 at 02:29:22 PM BST 
+// Generated on: 2024.07.25 at 04:43:38 PM BST 
 //
 
 
index a906543..4c2a9a3 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the Eclipse Implementation of JAXB, v2.3.9 
 // See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2024.07.25 at 02:29:22 PM BST 
+// Generated on: 2024.07.25 at 04:43:38 PM BST 
 //
 
 
index de46d74..4df374f 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the Eclipse Implementation of JAXB, v2.3.9 
 // See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2024.07.25 at 02:29:22 PM BST 
+// Generated on: 2024.07.25 at 04:43:38 PM BST 
 //
 
 
index d074219..ac12f03 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the Eclipse Implementation of JAXB, v2.3.9 
 // See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2024.07.25 at 02:29:22 PM BST 
+// Generated on: 2024.07.25 at 04:43:38 PM BST 
 //
 
 
index aad7c25..29cb972 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the Eclipse Implementation of JAXB, v2.3.9 
 // See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2024.07.25 at 02:29:22 PM BST 
+// Generated on: 2024.07.25 at 04:43:38 PM BST 
 //
 
 
index f1ba7ee..5d5e444 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the Eclipse Implementation of JAXB, v2.3.9 
 // See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2024.07.25 at 02:29:22 PM BST 
+// Generated on: 2024.07.25 at 04:43:38 PM BST 
 //
 
 
index 17b5c9f..7982504 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the Eclipse Implementation of JAXB, v2.3.9 
 // See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2024.07.25 at 02:29:22 PM BST 
+// Generated on: 2024.07.25 at 04:43:38 PM BST 
 //
 
 
index 5c1cdeb..730cb71 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the Eclipse Implementation of JAXB, v2.3.9 
 // See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2024.07.25 at 02:29:22 PM BST 
+// Generated on: 2024.07.25 at 04:43:38 PM BST 
 //
 
 
index 22f938d..9656aad 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the Eclipse Implementation of JAXB, v2.3.9 
 // See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2024.07.25 at 02:29:22 PM BST 
+// Generated on: 2024.07.25 at 04:43:38 PM BST 
 //
 
 
index fa80470..5704bf9 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the Eclipse Implementation of JAXB, v2.3.9 
 // See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2024.07.25 at 02:29:22 PM BST 
+// Generated on: 2024.07.25 at 04:43:38 PM BST 
 //
 
 
index 0300df2..3f8185c 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the Eclipse Implementation of JAXB, v2.3.9 
 // See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2024.07.25 at 02:29:22 PM BST 
+// Generated on: 2024.07.25 at 04:43:38 PM BST 
 //
 
 
@@ -195,6 +195,7 @@ import javax.xml.datatype.XMLGregorianCalendar;
  *                   &lt;attribute name="followHighlight" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" /&gt;
  *                   &lt;attribute name="followSelection" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" /&gt;
  *                   &lt;attribute name="showAnnotation" type="{http://www.w3.org/2001/XMLSchema}boolean" /&gt;
+ *                   &lt;attribute name="showStructureProviders" type="{http://www.w3.org/2001/XMLSchema}boolean" /&gt;
  *                   &lt;attribute name="centreColumnLabels" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&gt;
  *                   &lt;attribute name="showGroupConservation" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&gt;
  *                   &lt;attribute name="showGroupConsensus" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&gt;
@@ -5542,6 +5543,7 @@ public class JalviewModel {
      *       &lt;attribute name="followHighlight" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" /&gt;
      *       &lt;attribute name="followSelection" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" /&gt;
      *       &lt;attribute name="showAnnotation" type="{http://www.w3.org/2001/XMLSchema}boolean" /&gt;
+     *       &lt;attribute name="showStructureProviders" type="{http://www.w3.org/2001/XMLSchema}boolean" /&gt;
      *       &lt;attribute name="centreColumnLabels" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&gt;
      *       &lt;attribute name="showGroupConservation" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&gt;
      *       &lt;attribute name="showGroupConsensus" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&gt;
@@ -5625,6 +5627,8 @@ public class JalviewModel {
         protected Boolean followSelection;
         @XmlAttribute(name = "showAnnotation")
         protected Boolean showAnnotation;
+        @XmlAttribute(name = "showStructureProviders")
+        protected Boolean showStructureProviders;
         @XmlAttribute(name = "centreColumnLabels")
         protected Boolean centreColumnLabels;
         /**
@@ -6286,6 +6290,30 @@ public class JalviewModel {
         }
 
         /**
+         * Gets the value of the showStructureProviders property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isShowStructureProviders() {
+            return showStructureProviders;
+        }
+
+        /**
+         * Sets the value of the showStructureProviders property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowStructureProviders(Boolean value) {
+            this.showStructureProviders = value;
+        }
+
+        /**
          * Gets the value of the centreColumnLabels property.
          * 
          * @return
index 5a97ac8..b48ca13 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the Eclipse Implementation of JAXB, v2.3.9 
 // See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2024.07.25 at 02:29:22 PM BST 
+// Generated on: 2024.07.25 at 04:43:38 PM BST 
 //
 
 
index f25dcf5..72fada5 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the Eclipse Implementation of JAXB, v2.3.9 
 // See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2024.07.25 at 02:29:22 PM BST 
+// Generated on: 2024.07.25 at 04:43:38 PM BST 
 //
 
 
index ece5d33..b4b1105 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the Eclipse Implementation of JAXB, v2.3.9 
 // See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2024.07.25 at 02:29:22 PM BST 
+// Generated on: 2024.07.25 at 04:43:38 PM BST 
 //
 
 
index 4f28ae3..fcfd7e4 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the Eclipse Implementation of JAXB, v2.3.9 
 // See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2024.07.25 at 02:29:22 PM BST 
+// Generated on: 2024.07.25 at 04:43:38 PM BST 
 //
 
 
index 714b3f3..0fd8ef5 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the Eclipse Implementation of JAXB, v2.3.9 
 // See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2024.07.25 at 02:29:22 PM BST 
+// Generated on: 2024.07.25 at 04:43:38 PM BST 
 //
 
 
index 5fe4041..baa9eed 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the Eclipse Implementation of JAXB, v2.3.9 
 // See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2024.07.25 at 02:29:22 PM BST 
+// Generated on: 2024.07.25 at 04:43:38 PM BST 
 //
 
 
index b86ebdb..8ac2701 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the Eclipse Implementation of JAXB, v2.3.9 
 // See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2024.07.25 at 02:29:22 PM BST 
+// Generated on: 2024.07.25 at 04:43:38 PM BST 
 //
 
 
index a0dd653..b807190 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the Eclipse Implementation of JAXB, v2.3.9 
 // See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2024.07.25 at 02:29:22 PM BST 
+// Generated on: 2024.07.25 at 04:43:38 PM BST 
 //
 
 
index 1093e94..f7e4d73 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the Eclipse Implementation of JAXB, v2.3.9 
 // See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2024.07.25 at 02:29:22 PM BST 
+// Generated on: 2024.07.25 at 04:43:38 PM BST 
 //
 
 
index f6da4ad..d63c051 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the Eclipse Implementation of JAXB, v2.3.9 
 // See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2024.07.25 at 02:29:22 PM BST 
+// Generated on: 2024.07.25 at 04:43:38 PM BST 
 //
 
 
index fc07dbb..3b9e3f5 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the Eclipse Implementation of JAXB, v2.3.9 
 // See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2024.07.25 at 02:29:22 PM BST 
+// Generated on: 2024.07.25 at 04:43:38 PM BST 
 //
 
 
index db9aea9..8629a7e 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the Eclipse Implementation of JAXB, v2.3.9 
 // See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2024.07.25 at 02:29:22 PM BST 
+// Generated on: 2024.07.25 at 04:43:38 PM BST 
 //
 
 
index 2bbbdc3..590ea6d 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the Eclipse Implementation of JAXB, v2.3.9 
 // See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2024.07.25 at 02:29:22 PM BST 
+// Generated on: 2024.07.25 at 04:43:38 PM BST 
 //
 
 
index c213d18..345ede6 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the Eclipse Implementation of JAXB, v2.3.9 
 // See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2024.07.25 at 02:29:22 PM BST 
+// Generated on: 2024.07.25 at 04:43:38 PM BST 
 //
 
 
index beacdce..bd17cc2 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the Eclipse Implementation of JAXB, v2.3.9 
 // See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2024.07.25 at 02:29:22 PM BST 
+// Generated on: 2024.07.25 at 04:43:38 PM BST 
 //
 
 
index 29732de..78833f6 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the Eclipse Implementation of JAXB, v2.3.9 
 // See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2024.07.25 at 02:29:22 PM BST 
+// Generated on: 2024.07.25 at 04:43:38 PM BST 
 //
 
 
index 496652f..cdebe06 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the Eclipse Implementation of JAXB, v2.3.9 
 // See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2024.07.25 at 02:29:22 PM BST 
+// Generated on: 2024.07.25 at 04:43:38 PM BST 
 //
 
 @javax.xml.bind.annotation.XmlSchema(namespace = "www.vamsas.ac.uk/jalview/version2", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)