*/\r
package jalview.gui;\r
\r
-import jalview.analysis.*;\r
-\r
import jalview.datamodel.*;\r
\r
import jalview.jbgui.*;\r
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
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
*/\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
\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
*/\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
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
*/\r
public void adjustmentValueChanged(AdjustmentEvent evt)\r
{\r
+\r
int oldX = av.getStartRes();\r
int oldY = av.getStartSeq();\r
\r
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
*/\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
\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