Merge branch 'Jalview-JS/develop' into merge_js_develop
[jalview.git] / src / jalview / gui / OverviewPanel.java
index 66634ee..4b6d79b 100755 (executable)
@@ -20,6 +20,7 @@
  */
 package jalview.gui;
 
+import jalview.api.AlignViewportI;
 import jalview.bin.Cache;
 import jalview.renderer.OverviewRenderer;
 import jalview.util.MessageManager;
@@ -63,7 +64,7 @@ public class OverviewPanel extends JPanel
 
   private OverviewCanvas oviewCanvas;
 
-  protected AlignViewport av;
+  private AlignViewportI av;
 
   private AlignmentPanel ap;
 
@@ -73,34 +74,41 @@ public class OverviewPanel extends JPanel
 
   protected boolean draggingBox = false;
 
+  private Dimension dim;
+  
+  private boolean showProgress = !Platform.isJS();
+
   protected ProgressPanel progressPanel;
 
+  
   /**
-   * Creates a new OverviewPanel object.
-   * 
-   * @param alPanel
-   *          The alignment panel which is shown in the overview panel
+   * Creates the appropriate type of OverviewDimensions, with the desired size
    */
-  public OverviewPanel(AlignmentPanel alPanel)
+  private void createOverviewDimensions()
   {
-    this.av = alPanel.av;
-    this.ap = alPanel;
-
-    showHidden = Cache.getDefault(Preferences.SHOW_OV_HIDDEN_AT_START,
-            true);
+    boolean showAnnotation = (av.isShowAnnotation()
+            && av.getAlignmentConservationAnnotation() != null);
     if (showHidden)
     {
-      od = new OverviewDimensionsShowHidden(av.getRanges(),
-            (av.isShowAnnotation()
-                    && av.getAlignmentConservationAnnotation() != null));
+      od = new OverviewDimensionsShowHidden(av.getRanges(), showAnnotation,
+              dim);
     }
     else
     {
-      od = new OverviewDimensionsHideHidden(av.getRanges(),
-              (av.isShowAnnotation()
-                      && av.getAlignmentConservationAnnotation() != null));
+      od = new OverviewDimensionsHideHidden(av.getRanges(), showAnnotation,
+              dim);
     }
+  }
+
+  public OverviewPanel(AlignmentPanel alPanel, Dimension dim)
+  {
+    this.av = alPanel.av;
+    this.ap = alPanel;
+    this.dim = dim;
 
+    showHidden = Cache.getDefault(Preferences.SHOW_OV_HIDDEN_AT_START,
+            false);
+    createOverviewDimensions();
     setLayout(new BorderLayout());
     progressPanel = new ProgressPanel(OverviewRenderer.UPDATE,
             MessageManager.getString("label.oview_calc"), getWidth());
@@ -113,7 +121,7 @@ public class OverviewPanel extends JPanel
 
     // without this the overview window does not size to fit the overview canvas
     setPreferredSize(new Dimension(od.getWidth(), od.getHeight()));
-
+    
     addComponentListener(new ComponentAdapter()
     {
       @Override
@@ -171,22 +179,23 @@ public class OverviewPanel extends JPanel
       @Override
       public void mouseMoved(MouseEvent evt)
       {
-        if (!draggingBox)
-        // don't bother changing the cursor if we're dragging the box
-        // as we can't have moved inside or out of the box in that case
+        if (od.isPositionInBox(evt.getX(), evt.getY()))
         {
-          if (od.isPositionInBox(evt.getX(), evt.getY()))
-          {
-            // display drag cursor at mouse position
-            setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));
-          }
-          else
-          {
-            // reset cursor
-            setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
-          }
+          /*
+           * using HAND_CURSOR rather than DRAG_CURSOR 
+           * as the latter is not supported on Mac
+           */
+          getParent().setCursor(
+                  Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
+        }
+        else
+        {
+          // reset cursor
+          getParent().setCursor(
+                  Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
         }
       }
+
     });
 
     addMouseListener(new MouseAdapter()
@@ -215,6 +224,8 @@ public class OverviewPanel extends JPanel
             od.updateViewportFromMouse(evt.getX(), evt.getY(),
                     av.getAlignment().getHiddenSequences(),
                     av.getAlignment().getHiddenColumns());
+            getParent().setCursor(
+                    Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
           }
           else
           {
@@ -246,9 +257,10 @@ public class OverviewPanel extends JPanel
      * Javascript does not call componentResized on initial display,
      * so do the update here
      */
-    boolean doUpdate =  /** @j2sNative true || */ false;
-    if (doUpdate)
+    if (Platform.isJS())
+    {
       updateOverviewImage();
+    }
   }
 
   /*
@@ -281,20 +293,8 @@ public class OverviewPanel extends JPanel
    */
   protected void toggleHiddenColumns()
   {
-    if (showHidden)
-    {
-      showHidden = false;
-      od = new OverviewDimensionsHideHidden(av.getRanges(),
-              (av.isShowAnnotation()
-                      && av.getAlignmentConservationAnnotation() != null));
-    }
-    else
-    {
-      showHidden = true;
-      od = new OverviewDimensionsShowHidden(av.getRanges(),
-              (av.isShowAnnotation()
-                      && av.getAlignmentConservationAnnotation() != null));
-    }
+    showHidden = !showHidden;
+    createOverviewDimensions();
     oviewCanvas.resetOviewDims(od);
     updateOverviewImage();
     setBoxPosition();