EPSOptions added
[jalview.git] / src / jalview / gui / AlignmentPanel.java
index e312510..50c89f5 100755 (executable)
@@ -18,8 +18,6 @@
  */\r
 package jalview.gui;\r
 \r
-import jalview.analysis.*;\r
-\r
 import jalview.datamodel.*;\r
 \r
 import jalview.jbgui.*;\r
@@ -125,7 +123,13 @@ public class AlignmentPanel extends GAlignmentPanel
                         alignFrame.moveSelectedSequences(true);\r
 \r
                         break;\r
+\r
+                    case KeyEvent.VK_BACK_SPACE:\r
+                    case KeyEvent.VK_DELETE:\r
+                      alignFrame.cut_actionPerformed(null);\r
+                      break;\r
                     }\r
+\r
                 }\r
             });\r
     }\r
@@ -145,12 +149,30 @@ public class AlignmentPanel extends GAlignmentPanel
                 av.charHeight + fm.getDescent()));\r
 \r
         idPanel.idCanvas.gg = null;\r
+        seqPanel.seqCanvas.img = null;\r
         annotationPanel.adjustPanelHeight();\r
 \r
         Dimension d = calculateIdWidth();\r
         d.setSize(d.width + 4, d.height);\r
         idPanel.idCanvas.setPreferredSize(d);\r
         hscrollFillerPanel.setPreferredSize(d);\r
+\r
+        if (av.getWrapAlignment())\r
+        {\r
+          int max = av.alignment.getWidth() /\r
+              seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas.getWidth());\r
+          vscroll.setMaximum(max);\r
+          vscroll.setUnitIncrement(1);\r
+          vscroll.setVisibleAmount(1);\r
+        }\r
+        else\r
+        {\r
+          setScrollValues(av.getStartRes(), av.getStartSeq());\r
+        }\r
+\r
+        if(overviewPanel!=null)\r
+          overviewPanel.setBoxPosition();\r
+\r
         repaint();\r
     }\r
 \r
@@ -161,16 +183,9 @@ public class AlignmentPanel extends GAlignmentPanel
      */\r
     public Dimension calculateIdWidth()\r
     {\r
-        Graphics g = this.getGraphics();\r
+      Container c = new Container();\r
 \r
-        if (g == null)\r
-        {\r
-            javax.swing.JFrame f = new javax.swing.JFrame();\r
-            f.addNotify();\r
-            g = f.getGraphics();\r
-        }\r
-\r
-        FontMetrics fm = g.getFontMetrics(av.font);\r
+        FontMetrics fm = c.getFontMetrics(av.font);\r
         AlignmentI al = av.getAlignment();\r
 \r
         int i = 0;\r
@@ -203,7 +218,7 @@ public class AlignmentPanel extends GAlignmentPanel
 \r
         if (al.getAlignmentAnnotation() != null)\r
         {\r
-            fm = g.getFontMetrics(alabels.getFont());\r
+            fm = c.getFontMetrics(alabels.getFont());\r
 \r
             while (i < al.getAlignmentAnnotation().length)\r
             {\r
@@ -284,43 +299,28 @@ public class AlignmentPanel extends GAlignmentPanel
      */\r
     public void setWrapAlignment(boolean wrap)\r
     {\r
+        av.startSeq = 0;\r
         scalePanelHolder.setVisible(!wrap);\r
         hscroll.setVisible(!wrap);\r
         idwidthAdjuster.setVisible(!wrap);\r
 \r
-        av.setShowAnnotation(!wrap);\r
-        annotationScroller.setVisible(!wrap);\r
-        annotationSpaceFillerHolder.setVisible(!wrap);\r
-        idSpaceFillerPanel1.setVisible(!wrap);\r
-\r
-        repaint();\r
-    }\r
-\r
-    /**\r
-     * DOCUMENT ME!\r
-     */\r
-    public void setColourScheme()\r
-    {\r
-        ColourSchemeI cs = av.getGlobalColourScheme();\r
-\r
-        if (av.getConservationSelected())\r
-        {\r
-            Alignment al = (Alignment) av.getAlignment();\r
-            Conservation c = new Conservation("All",\r
-                    ResidueProperties.propHash, 3, al.getSequences(), 0,\r
-                    al.getWidth());\r
-\r
-            c.calculate();\r
-            c.verdict(false, av.ConsPercGaps);\r
-\r
-            ConservationColourScheme ccs = new ConservationColourScheme(c, cs);\r
+       if(wrap)\r
+       {\r
+         annotationScroller.setVisible(false);\r
+         annotationSpaceFillerHolder.setVisible(false);\r
+       }\r
+       else if(av.showAnnotation)\r
+       {\r
+         annotationScroller.setVisible(true);\r
+         annotationSpaceFillerHolder.setVisible(true);\r
+       }\r
 \r
-            av.setGlobalColourScheme(ccs);\r
-        }\r
+       idSpaceFillerPanel1.setVisible(!wrap);\r
 \r
         repaint();\r
     }\r
 \r
+\r
     // return value is true if the scroll is valid\r
     public boolean scrollUp(boolean up)\r
     {\r
@@ -433,14 +433,6 @@ public class AlignmentPanel extends GAlignmentPanel
         vscroll.setValues(y, vextent, 0, av.getAlignment().getHeight());\r
     }\r
 \r
-    public void this_mouseWheelMoved(MouseWheelEvent e)\r
-    {\r
-      if(e.getWheelRotation()>0)\r
-        scrollUp(false);\r
-      else\r
-        scrollUp(true);\r
-    }\r
-\r
 \r
     /**\r
      * DOCUMENT ME!\r
@@ -449,6 +441,7 @@ public class AlignmentPanel extends GAlignmentPanel
      */\r
     public void adjustmentValueChanged(AdjustmentEvent evt)\r
     {\r
+\r
         int oldX = av.getStartRes();\r
         int oldY = av.getStartSeq();\r
 \r
@@ -483,21 +476,28 @@ public class AlignmentPanel extends GAlignmentPanel
             overviewPanel.setBoxPosition();\r
         }\r
 \r
-        if (av.getWrapAlignment() || !fastPaint)\r
+        int xShift = av.getStartRes() - oldX;\r
+        int yShift = av.getStartSeq() - oldY;\r
+\r
+        if ( (xShift != 0 && yShift != 0) ||\r
+            (Math.abs(xShift) > av.getEndRes() - av.getStartRes()\r
+             || Math.abs(yShift) > av.getEndSeq() - av.getStartSeq())\r
+             || av.getWrapAlignment()\r
+             || !fastPaint)\r
         {\r
-            repaint();\r
+          // Either no shift at all, or shift greater than visible amount\r
+          repaint();\r
         }\r
         else\r
         {\r
-            idPanel.idCanvas.fastPaint(av.getStartSeq() - oldY);\r
-            seqPanel.seqCanvas.fastPaint(av.getStartRes() - oldX,\r
-                av.getStartSeq() - oldY);\r
+            idPanel.idCanvas.fastPaint(yShift);\r
+            seqPanel.seqCanvas.fastPaint(xShift, yShift);\r
 \r
             scalePanel.repaint();\r
 \r
             if (av.getShowAnnotation())\r
             {\r
-                annotationPanel.fastPaint(av.getStartRes() - oldX);\r
+                annotationPanel.fastPaint(xShift);\r
             }\r
         }\r
     }\r
@@ -771,6 +771,33 @@ public class AlignmentPanel extends GAlignmentPanel
      */\r
     public void makeEPS(File epsFile)\r
     {\r
+      boolean accurateText = true;\r
+\r
+      String renderStyle = jalview.bin.Cache.getDefault("EPS_RENDERING",\r
+          "Prompt each time");\r
+\r
+      // If we need to prompt, and if the GUI is visible then\r
+      // Prompt for EPS rendering style\r
+      if (renderStyle.equalsIgnoreCase("Prompt each time")\r
+          && !\r
+          (System.getProperty("java.awt.headless") != null\r
+           && System.getProperty("java.awt.headless").equals("true")))\r
+      {\r
+        EPSOptions eps = new EPSOptions();\r
+        renderStyle = eps.getValue();\r
+\r
+        if(eps.cancelled || renderStyle==null)\r
+          return;\r
+\r
+        renderStyle = eps.getValue();\r
+      }\r
+\r
+      if (renderStyle.equalsIgnoreCase("text"))\r
+      {\r
+        accurateText = false;\r
+      }\r
+\r
+\r
         if(epsFile == null)\r
         {\r
           jalview.io.JalviewFileChooser chooser = new jalview.io.\r
@@ -816,12 +843,14 @@ public class AlignmentPanel extends GAlignmentPanel
 \r
         try\r
          {\r
-            FileOutputStream out = new FileOutputStream(epsFile);\r
-            EpsGraphics2D pg = new EpsGraphics2D("Example", out, 0, 0, width,\r
-                    height);\r
+           FileOutputStream out = new FileOutputStream(epsFile);\r
+           EpsGraphics2D pg = new EpsGraphics2D("Example", out, 0, 0, width,\r
+                                                height);\r
 \r
-            if (av.getWrapAlignment())\r
-            {\r
+           pg.setAccurateTextMode(accurateText);\r
+\r
+           if (av.getWrapAlignment())\r
+           {\r
                 printWrappedAlignment(pg, width, height, 0);\r
             }\r
             else\r