/*\r
-* Jalview - A Sequence Alignment Editor and Viewer\r
-* Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
-*\r
-* This program is free software; you can redistribute it and/or\r
-* modify it under the terms of the GNU General Public License\r
-* as published by the Free Software Foundation; either version 2\r
-* of the License, or (at your option) any later version.\r
-*\r
-* This program is distributed in the hope that it will be useful,\r
-* but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
-* GNU General Public License for more details.\r
-*\r
-* You should have received a copy of the GNU General Public License\r
-* along with this program; if not, write to the Free Software\r
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA\r
-*/\r
+ * Jalview - A Sequence Alignment Editor and Viewer\r
+ * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
+ *\r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ *\r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program; if not, write to the Free Software\r
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA\r
+ */\r
\r
package jalview.appletgui;\r
\r
-import java.awt.event.*;\r
import java.awt.*;\r
+import java.awt.event.*;\r
\r
-public class OverviewPanel extends Panel implements Runnable\r
+public class OverviewPanel\r
+ extends Panel implements Runnable\r
{\r
Image miniMe;\r
AlignViewport av;\r
float scaleh = 1f;\r
\r
public int width, sequencesHeight;\r
- int graphHeight=30;\r
- int boxX=-1, boxY=-1, boxWidth=-1, boxHeight=-1;\r
+ int graphHeight = 30;\r
+ int boxX = -1, boxY = -1, boxWidth = -1, boxHeight = -1;\r
\r
boolean resizing = false;\r
\r
nullFrame.addNotify();\r
\r
// scale the initial size of overviewpanel to shape of alignment\r
- float initialScale = (float)av.alignment.getWidth()/(float)av.alignment.getHeight();\r
- if(av.alignment.getWidth() > av.alignment.getHeight())\r
+ float initialScale = (float) av.alignment.getWidth() /\r
+ (float) av.alignment.getHeight();\r
+ if (av.alignment.getWidth() > av.alignment.getHeight())\r
{\r
// wider\r
width = 400;\r
- sequencesHeight = (int)(400f/initialScale);\r
+ sequencesHeight = (int) (400f / initialScale);\r
}\r
else\r
{\r
// taller\r
- width = (int)(400f*initialScale);\r
+ width = (int) (400f * initialScale);\r
sequencesHeight = 300;\r
- if(width<120)\r
+ if (width < 120)\r
+ {\r
width = 120;\r
+ }\r
}\r
\r
- setSize (new Dimension(width, sequencesHeight+graphHeight));\r
+ setSize(new Dimension(width, sequencesHeight + graphHeight));\r
addComponentListener(new ComponentAdapter()\r
- {\r
+ {\r
\r
- public void componentResized(ComponentEvent evt)\r
- {\r
- if( getSize().width!=width || getSize().height!=sequencesHeight+graphHeight)\r
- {\r
- updateOverviewImage();\r
- }\r
- }\r
- });\r
+ public void componentResized(ComponentEvent evt)\r
+ {\r
+ if (getSize().width != width ||\r
+ getSize().height != sequencesHeight + graphHeight)\r
+ {\r
+ updateOverviewImage();\r
+ }\r
+ }\r
+ });\r
\r
addMouseMotionListener(new MouseMotionAdapter()\r
- {\r
- public void mouseDragged(MouseEvent evt)\r
- { doMouseDragged(evt);}\r
- });\r
+ {\r
+ public void mouseDragged(MouseEvent evt)\r
+ {\r
+ doMouseDragged(evt);\r
+ }\r
+ });\r
\r
addMouseListener(new MouseAdapter()\r
{\r
public void mousePressed(MouseEvent evt)\r
- { doMousePressed(evt);}\r
+ {\r
+ doMousePressed(evt);\r
+ }\r
+\r
public void mouseReleased(MouseEvent evt)\r
- { doMouseReleased(evt);}\r
+ {\r
+ doMouseReleased(evt);\r
+ }\r
});\r
\r
updateOverviewImage();\r
boxX = evt.getX();\r
boxY = evt.getY();\r
checkValid();\r
- if(!resizing)\r
- ap.setScrollValues( (int)(boxX/scalew/av.getCharWidth()),\r
- (int)(boxY/scaleh/av.getCharHeight()) );\r
+ if (!resizing)\r
+ {\r
+ ap.setScrollValues( (int) (boxX / scalew / av.getCharWidth()),\r
+ (int) (boxY / scaleh / av.getCharHeight()));\r
+ }\r
}\r
\r
public void doMouseDragged(MouseEvent evt)\r
boxX = evt.getX();\r
boxY = evt.getY();\r
checkValid();\r
- if(!resizing)\r
- ap.setScrollValues( (int)(boxX/scalew/av.getCharWidth()),\r
- (int)(boxY/scaleh/av.getCharHeight()) );\r
+ if (!resizing)\r
+ {\r
+ ap.setScrollValues( (int) (boxX / scalew / av.getCharWidth()),\r
+ (int) (boxY / scaleh / av.getCharHeight()));\r
+ }\r
repaint();\r
ap.repaint();\r
}\r
void checkValid()\r
{\r
if (boxY < 0)\r
+ {\r
boxY = 0;\r
+ }\r
\r
if (boxY > sequencesHeight - boxHeight)\r
- boxY = sequencesHeight - boxHeight+1;\r
+ {\r
+ boxY = sequencesHeight - boxHeight + 1;\r
+ }\r
\r
if (boxX < 0)\r
+ {\r
boxX = 0;\r
+ }\r
\r
if (boxX > width - boxWidth)\r
+ {\r
boxX = width - boxWidth;\r
+ }\r
}\r
\r
public void updateOverviewImage()\r
{\r
- if(resizing)\r
+ if (resizing)\r
{\r
return;\r
}\r
int alwidth = av.alignment.getWidth();\r
int alheight = av.alignment.getHeight();\r
\r
- if(getSize().width>0 && getSize().height>0)\r
+ if (getSize().width > 0 && getSize().height > 0)\r
{\r
width = getSize().width;\r
sequencesHeight = getSize().height - graphHeight;\r
}\r
\r
- setSize (new Dimension(width, sequencesHeight+graphHeight));\r
+ setSize(new Dimension(width, sequencesHeight + graphHeight));\r
\r
- int fullsizeWidth = alwidth * av.getCharWidth();\r
+ int fullsizeWidth = alwidth * av.getCharWidth();\r
int fullsizeHeight = alheight * av.getCharHeight();\r
\r
scalew = (float) width / (float) fullsizeWidth;\r
Graphics g = consensus.getGraphics();\r
ap.annotationPanel.drawGraph(g, av.conservation, fullsizeWidth, 60);\r
mg.drawImage(consensus, 0, sequencesHeight, width,\r
- sequencesHeight + graphHeight, 0, 0, fullsizeWidth, 60, this);\r
-\r
+ sequencesHeight + graphHeight, 0, 0, fullsizeWidth, 60, this);\r
\r
boolean oldRenderGaps = av.renderGaps;\r
- try{\r
- // We'll have to draw the full size alignment in chunks, as an image of the\r
- // whole alignment requires too much memory\r
+ try\r
+ {\r
+ // We'll have to draw the full size alignment in chunks, as an image of the\r
+ // whole alignment requires too much memory\r
\r
// Max size depends on the font size, the following is a\r
// guess at a size which works\r
- int maxSize = 2000 / av.getFont().getSize();\r
+ int maxSize = 2000 / av.getFont().getSize();\r
Image block;\r
- int blockx=0, blocky=0, blockw=0, blockh=0, eRes=0, eSeq=0;\r
+ int blockx = 0, blocky = 0, blockw = 0, blockh = 0, eRes = 0, eSeq = 0;\r
\r
av.setRenderGaps(false);\r
- for(int sRes=0, chunkx=0; sRes<alwidth; sRes+=maxSize, chunkx++)\r
+ for (int sRes = 0, chunkx = 0; sRes < alwidth; sRes += maxSize, chunkx++)\r
{\r
- eSeq = 0;\r
- eRes+=maxSize;\r
- if(eRes>alwidth)\r
- eRes = alwidth;\r
-\r
- for(int sSeq=0, chunky=0; sSeq<alheight; sSeq+=maxSize, chunky++)\r
+ eSeq = 0;\r
+ eRes += maxSize;\r
+ if (eRes > alwidth)\r
+ {\r
+ eRes = alwidth;\r
+ }\r
+\r
+ for (int sSeq = 0, chunky = 0; sSeq < alheight; sSeq += maxSize, chunky++)\r
+ {\r
+ eSeq += maxSize;\r
+ if (eSeq > alheight)\r
{\r
- eSeq+=maxSize;\r
- if(eSeq>alheight)\r
- eSeq = alheight;\r
+ eSeq = alheight;\r
+ }\r
\r
- blocky = 0;\r
- blockx = (int)((float)sRes/(float)alwidth * width);\r
+ blocky = 0;\r
+ blockx = (int) ( (float) sRes / (float) alwidth * width);\r
\r
- block = nullFrame.createImage((eRes-sRes)*av.charWidth, (eSeq-sSeq)*av.charHeight);\r
- g = block.getGraphics();\r
+ block = nullFrame.createImage( (eRes - sRes) * av.charWidth,\r
+ (eSeq - sSeq) * av.charHeight);\r
+ g = block.getGraphics();\r
\r
- ap.seqPanel.seqCanvas.drawPanel(g, sRes, eRes, sSeq, eSeq, sRes, sSeq, 0);\r
+ ap.seqPanel.seqCanvas.drawPanel(g, sRes, eRes, sSeq, eSeq, sRes, sSeq,\r
+ 0);\r
\r
- blockh = (int)( (float)(eSeq-sSeq)/(float)alheight * sequencesHeight )+1 ;\r
- blockw = (int)( (float)(eRes-sRes)/(float)alwidth * width )+1;\r
+ blockh = (int) ( (float) (eSeq - sSeq) / (float) alheight *\r
+ sequencesHeight) + 1;\r
+ blockw = (int) ( (float) (eRes - sRes) / (float) alwidth * width) + 1;\r
\r
- blocky += (int) ((float)sSeq/(float)alheight* sequencesHeight);\r
+ blocky += (int) ( (float) sSeq / (float) alheight * sequencesHeight);\r
\r
- mg.drawImage(block, blockx,\r
- blocky ,\r
- blockx + blockw,\r
- blocky + blockh,\r
+ mg.drawImage(block, blockx,\r
+ blocky,\r
+ blockx + blockw,\r
+ blocky + blockh,\r
\r
- 0, 0, block.getWidth(null),block.getHeight(null), this);\r
+ 0, 0, block.getWidth(null), block.getHeight(null), this);\r
\r
block = null;\r
- }\r
+ }\r
\r
}\r
\r
- }catch(OutOfMemoryError error)\r
- { System.err.println("Out of memory when trying to calculate the overview window image!"); }\r
-\r
+ }\r
+ catch (OutOfMemoryError error)\r
+ {\r
+ System.err.println(\r
+ "Out of memory when trying to calculate the overview window image!");\r
+ }\r
\r
av.setRenderGaps(oldRenderGaps);\r
resizing = false;\r
\r
public void setBoxPosition()\r
{\r
- boxX = (int) (av.getStartRes() * av.getCharWidth() * scalew);\r
- boxY = (int) (av.getStartSeq() * av.getCharHeight() * scaleh);\r
- boxWidth = (int) ((av.getEndRes()-av.getStartRes()+1)* av.getCharWidth() * scalew) ;\r
- boxHeight = (int) (av.getEndSeq() * av.getCharHeight() * scaleh) - boxY;\r
- repaint();\r
+ boxX = (int) (av.getStartRes() * av.getCharWidth() * scalew);\r
+ boxY = (int) (av.getStartSeq() * av.getCharHeight() * scaleh);\r
+ boxWidth = (int) ( (av.getEndRes() - av.getStartRes() + 1) *\r
+ av.getCharWidth() * scalew);\r
+ boxHeight = (int) (av.getEndSeq() * av.getCharHeight() * scaleh) - boxY;\r
+ repaint();\r
}\r
\r
- public void update(Graphics g)\r
- {\r
- paint(g);\r
- }\r
+ public void update(Graphics g)\r
+ {\r
+ paint(g);\r
+ }\r
\r
public void paint(Graphics g)\r
{\r
- if(resizing)\r
+ if (resizing)\r
{\r
g.setColor(Color.white);\r
g.fillRect(0, 0, getSize().width, getSize().height);\r
g.setColor(Color.black);\r
\r
g.setFont(new Font("Verdana", Font.BOLD, 15));\r
- g.drawString("Recalculating", 5, sequencesHeight/2);\r
- g.drawString("Overview.....", 5, sequencesHeight/2 +20);\r
+ g.drawString("Recalculating", 5, sequencesHeight / 2);\r
+ g.drawString("Overview.....", 5, sequencesHeight / 2 + 20);\r
}\r
else\r
{\r
- if(miniMe!=null)\r
- g.drawImage(miniMe, 0,0,this);\r
+ if (miniMe != null)\r
+ {\r
+ g.drawImage(miniMe, 0, 0, this);\r
+ }\r
\r
g.setColor(Color.red);\r
g.drawRect(boxX, boxY, boxWidth, boxHeight);\r
- g.drawRect(boxX+1, boxY+1, boxWidth-2, boxHeight-2);\r
+ g.drawRect(boxX + 1, boxY + 1, boxWidth - 2, boxHeight - 2);\r
}\r
}\r
\r