JAL-4155 Replace unsafe casting to AlignmentPanel with generics patch/JAL-4155_IdCanvas_getAlignPanel_fix
authorMateusz Warowny <mmzwarowny@dundee.ac.uk>
Mon, 27 Mar 2023 15:34:06 +0000 (17:34 +0200)
committerMateusz Warowny <mmzwarowny@dundee.ac.uk>
Mon, 27 Mar 2023 15:34:06 +0000 (17:34 +0200)
src/jalview/appletgui/AlignViewport.java
src/jalview/gui/AlignViewport.java
src/jalview/viewmodel/AlignmentViewport.java

index d64cd75..c5d8abf 100644 (file)
@@ -41,7 +41,7 @@ import jalview.viewmodel.AlignmentViewport;
 import java.awt.Font;
 import java.awt.FontMetrics;
 
-public class AlignViewport extends AlignmentViewport
+public class AlignViewport extends AlignmentViewport<AlignmentPanel>
         implements SelectionSource
 {
   boolean cursorMode = false;
index 944bb6b..4b4e82a 100644 (file)
@@ -79,7 +79,7 @@ import jalview.ws.params.AutoCalcSetting;
  * @author $author$
  * @version $Revision: 1.141 $
  */
-public class AlignViewport extends AlignmentViewport
+public class AlignViewport extends AlignmentViewport<AlignmentPanel>
         implements SelectionSource
 {
   Font font;
@@ -524,7 +524,6 @@ public class AlignViewport extends AlignmentViewport
                     new HiddenColumns(getAlignment().getHiddenColumns()),
                     this);
   }
-
   
   public boolean getSortByTree()
   {
@@ -535,19 +534,7 @@ public class AlignViewport extends AlignmentViewport
   {
     sortByTree = sort;
   }
-  /**
-   * return the alignPanel containing the given viewport. Use this to get the
-   * components currently handling the given viewport.
-   * 
-   * @param av
-   * @return null or an alignPanel guaranteed to have non-null alignFrame
-   *         reference
-   */
-  
-  public AlignmentPanel getAlignPanel()
-  {
-    return (AlignmentPanel) alignPanel;
-  }
+
   /**
    * Returns the (Desktop) instance of the StructureSelectionManager
    */
index 4f68cb5..8973124 100644 (file)
@@ -83,8 +83,10 @@ import jalview.workers.StrucConsensusThread;
  * 
  * @author jimp
  * 
+ * @param <AlignmentPanelT>
+ *          implementation of the AlignmentViewPanel used by the class
  */
-public abstract class AlignmentViewport
+public abstract class AlignmentViewport<AlignmentPanelT extends AlignmentViewPanel>
         implements AlignViewportI, CommandListener, VamsasSource
 {
   protected ViewportRanges ranges;
@@ -119,24 +121,26 @@ public abstract class AlignmentViewport
     ranges = new ViewportRanges(al);
   }
 
-  protected AlignmentViewPanel alignPanel=null;
-  public void setAlignPanel(AlignmentViewPanel ap)
+  protected AlignmentPanelT alignPanel = null;
+
+  public void setAlignPanel(AlignmentPanelT ap)
   {
     alignPanel = ap;
   }
+
   /**
-   * return the AlignmentViewPanel containing the given viewport. Use this to get the
-   * components currently handling the given viewport.
+   * return the AlignmentViewPanel containing the given viewport. Use this to
+   * get the components currently handling the given viewport.
    * 
    * @param av
    * @return null or an alignPanel guaranteed to have non-null alignFrame
    *         reference
    */
-  
-  public AlignmentViewPanel getAlignPanel()
+  public AlignmentPanelT getAlignPanel()
   {
     return alignPanel;
   }
+
   /**
    * @param name
    * @see jalview.api.ViewStyleI#setFontName(java.lang.String)